Referencia de la norma · actualizada el 2 de septiembre de 2026

WCAG 2.2 AA, sin la prosa de la norma

EN 301 549 remite a WCAG 2.2 nivel AA para el contenido web, así que esta es la lista con la que se mide a su cliente. Esto es lo que cambió, lo que un escáner puede ver y dónde una persona tiene que sentarse con un teclado.

Publicado
Recomendación del W3C, octubre de 2023
Nuevos criterios
Nueve añadidos, seis en A o AA
Eliminado
4.1.1 Análisis sintáctico, obsoleto
Automatización
Ve aproximadamente de un cuarto a un tercio

Qué significa realmente el nivel AA

WCAG se organiza en tres niveles. A es el mínimo, AA es el nivel del que parten la contratación pública europea y EN 301 549, y AAA es un objetivo que nadie está obligado a alcanzar en todo un sitio. Cuando una licitación pide « WCAG 2.2 AA », se refiere a todos los criterios de éxito A y AA, en cada página del alcance, en cada estado que un usuario pueda alcanzar.

Los criterios de éxito son enunciados verificables, no técnicas. « Contraste (mínimo) » no le dice qué token cambiar; le dice la relación medida que un texto debe alcanzar. Esa distinción importa en una auditoría: una incidencia es defendible cuando nombra el criterio, el elemento y la medición, no cuando nombra una herramienta.

Un sitio no aprueba ni suspende en su conjunto. La conformidad se declara por página, y un solo elemento no conforme en una página retira la declaración de esa página. Por eso la supervisión continua supera a una auditoría puntual: una actualización del tema puede anular la declaración de cien páginas de golpe.

Los nueve criterios que añadió WCAG 2.2

Seis de ellos están en A o AA, así que entran en el alcance de una evaluación EN 301 549. La última columna dice si un escáner puede juzgarlo o si debe hacerlo una persona.

Criterios de éxito añadidos en WCAG 2.2, su nivel y cómo se prueba cada uno
CENombreNivelCómo se prueba
2.4.11Foco no oscurecido (mínimo)AAmanual
2.4.12Foco no oscurecido (mejorado)AAAmanual
2.4.13Apariencia del focoAAAmanual
2.5.7Movimientos de arrastreAAmanual
2.5.8Tamaño del objetivo (mínimo)AAautomatizado
3.2.6Ayuda coherenteAmanual
3.3.7Entrada redundanteAmanual
3.3.8Autenticación accesible (mínimo)AAparcialmente automatizado
3.3.9Autenticación accesible (mejorado)AAAmanual

Qué comprueba el escáner, regla por regla

Cada regla automática lleva ambas referencias, de modo que una incidencia se lee como un criterio de éxito de WCAG para el desarrollador y como una cláusula de EN 301 549 para el revisor. Estas son las reglas precargadas en la tabla de correspondencia pública; el catálogo del producto es más amplio y se mantiene de forma centralizada.74 rules seeded
Reglas automáticas precargadas con sus criterios de éxito de WCAG, sus cláusulas EN 301 549 y su impacto típico
ReglaWhat it detectsWCAGEN 301 549Impacto típico
accesskeysTwo elements claim the same access key2.1.19.2.1.1serious
area-altImage map region without alternative text1.1.1, 2.4.4, 4.1.29.1.1.1, 9.2.4.4, 9.4.1.2critical
aria-allowed-attrARIA attribute not allowed on this role4.1.29.4.1.2critical
aria-command-nameCustom button, link or menu item without a name4.1.29.4.1.2serious
aria-hidden-bodyWhole document hidden from assistive technology4.1.29.4.1.2critical
aria-hidden-focusFocusable element hidden from assistive technology1.3.1, 4.1.29.1.3.1, 9.4.1.2serious
aria-input-field-nameCustom input field without an accessible name4.1.29.4.1.2serious
aria-meter-nameMeter without an accessible name1.1.19.1.1.1serious
aria-progressbar-nameProgress indicator without an accessible name1.1.19.1.1.1serious
aria-required-attrARIA role missing a required attribute4.1.29.4.1.2critical
aria-required-childrenComposite role without its required child roles1.3.19.1.3.1critical
aria-required-parentARIA role placed outside its required container1.3.19.1.3.1critical
aria-rolesRole value is not a recognised ARIA role4.1.29.4.1.2critical
aria-toggle-field-nameCheckbox, radio or switch without an accessible name4.1.29.4.1.2serious
aria-tooltip-nameTooltip role without any text4.1.29.4.1.2serious
aria-valid-attrAttribute name is not a valid ARIA attribute4.1.29.4.1.2critical
aria-valid-attr-valueARIA attribute points at a value that does not resolve4.1.29.4.1.2critical
audio-captionAudio without a captions or transcript track1.2.19.1.2.1critical
autocomplete-validautocomplete value not recognised1.3.59.1.3.5serious
avoid-inline-spacingText spacing locked by an inline style1.4.129.1.4.12serious
blinkBlinking content that cannot be stopped2.2.29.2.2.2serious
button-nameButton without an accessible name4.1.29.4.1.2critical
bypassNo way to skip the repeated navigation2.4.19.2.4.1serious
color-contrastText contrast below the required ratio1.4.39.1.4.3serious
css-orientation-lockContent locked to one screen orientation1.3.49.1.3.4serious
definition-listDefinition list built from the wrong children1.3.19.1.3.1serious
dlitemDefinition term or description outside a list1.3.19.1.3.1serious
document-titlePage has no title2.4.29.2.4.2serious
duplicate-id-activeDuplicate id on an interactive element4.1.19.4.1.1serious
empty-headingHeading with no text1.3.19.1.3.1minor
empty-table-headerTable header cell with no text1.3.19.1.3.1minor
focus-order-semanticsFocusable element with no interactive role2.4.39.2.4.3minor
form-field-multiple-labelsField bound to more than one label3.3.29.3.3.2moderate
frame-titleFrame without a title2.4.1, 4.1.29.2.4.1, 9.4.1.2serious
heading-orderHeading level skipped1.3.19.1.3.1moderate
html-has-langPage language not declared3.1.19.3.1.1serious
html-lang-validPage language code is not valid3.1.19.3.1.1serious
html-xml-lang-mismatchlang and xml:lang disagree3.1.19.3.1.1moderate
identical-links-same-purposeLinks with the same text lead somewhere different2.4.99.2.4.9minor
image-altImage without a text alternative1.1.19.1.1.1critical
input-button-nameInput button with no value or label4.1.29.4.1.2critical
input-image-altImage button without alternative text1.1.1, 4.1.29.1.1.1, 9.4.1.2critical
labelForm field without a programmatic label1.3.1, 4.1.29.1.3.1, 9.4.1.2critical
landmark-banner-is-top-levelBanner landmark nested inside another region1.3.19.1.3.1moderate
landmark-complementary-is-top-levelComplementary landmark nested inside another region1.3.19.1.3.1moderate
landmark-no-duplicate-mainMore than one main landmark on the page1.3.19.1.3.1moderate
landmark-one-mainPage has no single main landmark1.3.1, 2.4.19.1.3.1, 9.2.4.1moderate
landmark-uniqueTwo landmarks share a role and a name1.3.19.1.3.1moderate
link-nameLink without discernible text2.4.4, 4.1.29.2.4.4, 9.4.1.2serious
listList contains elements that are not list items1.3.19.1.3.1moderate
listitemList item outside a list1.3.19.1.3.1serious
marqueeScrolling marquee content2.2.29.2.2.2serious
meta-viewportZoom disabled by the viewport meta tag1.4.49.1.4.4serious
nested-interactiveInteractive control nested inside another4.1.29.4.1.2serious
no-autoplay-audioAudio starts on its own for more than three seconds1.4.29.1.4.2moderate
object-altEmbedded object without a text alternative1.1.19.1.1.1serious
p-as-headingParagraph styled to look like a heading1.3.19.1.3.1serious
page-has-heading-onePage has no level one heading1.3.19.1.3.1moderate
presentation-role-conflictPresentation role cancelled by other markup4.1.29.4.1.2minor
regionContent sits outside any landmark1.3.19.1.3.1moderate
role-img-altElement with role img has no alternative text1.1.19.1.1.1serious
scrollable-region-focusableScrollable area cannot be reached by keyboard2.1.19.2.1.1serious
select-nameSelect element without an accessible name1.3.1, 4.1.29.1.3.1, 9.4.1.2critical
server-side-image-mapServer-side image map in use2.1.19.2.1.1minor
summary-nameDisclosure summary without a name4.1.29.4.1.2serious
svg-img-altMeaningful SVG without a text alternative1.1.19.1.1.1serious
tabindexPositive tabindex overrides the natural focus order2.4.39.2.4.3serious
table-fake-captionTable title styled as a caption instead of marked as one1.3.19.1.3.1serious
target-sizeTouch target smaller than 24 by 24 pixels2.5.89.2.5.8moderate
td-has-headerData cell in a large table has no header1.3.19.1.3.1serious
td-headers-attrData cell not associated with a header1.3.19.1.3.1serious
th-has-data-cellsTable header with no data cells attached1.3.19.1.3.1serious
valid-langLanguage of a passage is not a valid code3.1.29.3.1.2serious
video-captionVideo without a captions track1.2.29.1.2.2critical

Qué puede ver la automatización y qué no

Junto a cada puntuación en Conforma aparece la misma frase, porque el número es solo una parte del cuadro. Las reglas automáticas son excelentes con las propiedades medibles y ciegas a la intención.

25–33 %
de las barreras reales las encuentran solo las reglas automáticas, en un sitio de marketing típico
12
criterios manuales en nuestra lista de comprobación principal: teclado, orden del foco, flujo del lector de pantalla, alternativas al arrastre
0
certificados emitidos. Producimos mediciones y pruebas; la declaración permanece con el operador

Las pruebas automatizadas cubren solo una parte de las barreras de accesibilidad. Para una evaluación completa es necesaria una verificación manual.

Cómo prueba Conforma WCAG 2.2 AA

  • Las reglas automáticas se ejecutan en cada página de un análisis, y cada infracción se escribe como una incidencia con la regla, el selector, el fragmento HTML y una captura de pantalla del elemento en su sitio.
  • Cada incidencia lleva ambas referencias: el criterio de éxito de WCAG y la cláusula de EN 301 549, de modo que un informe se lee igual para un desarrollador y para un revisor de contratación.
  • A las incidencias se les asigna una huella a partir de la regla, el selector y la ruta. Una corrección que reaparece tras un despliegue se notifica como una regresión en lugar de contarse en silencio como trabajo nuevo.
  • La lista de comprobación manual cubre lo que las reglas no pueden juzgar, con prueba en vídeo, la tecnología de apoyo usada y un evaluador con nombre, y se sella en el mismo paquete de pruebas que la ejecución automática.

Preguntas que nos hacen sobre esto

¿Es WCAG 2.2 AA lo mismo que cumplir la ley de accesibilidad?

No. El European Accessibility Act es la ley, EN 301 549 es la norma armonizada que se usa para demostrarla, y EN 301 549 remite a WCAG 2.2 nivel AA para el contenido web. Alcanzar el AA es la base técnica de una declaración, no un certificado.

¿Tenemos que pasar de 2.1 a 2.2 ahora?

Para todo lo nuevo, la respuesta segura es sí. WCAG 2.2 es retrocompatible: el contenido que cumple 2.2 también cumple 2.1, así que probar frente a la versión más reciente no cuesta nada y cubre ambas.

¿Una puntuación automática perfecta significa que el sitio es conforme?

Significa que no se detectó ninguna infracción automática en las páginas analizadas. El uso con teclado, el orden del foco y el flujo del lector de pantalla siguen necesitando una persona antes de hacer cualquier afirmación.

Vea los criterios frente a sus propias páginas

Un dominio, diez páginas, sin cuenta. Obtiene las incidencias asociadas y un resumen de dos páginas el mismo día.