Skip to content

Pillar 1 of 4

Accessibility that doesn't hide behind a green checkmark

We run the same axe-core engine that powers Deque's commercial tooling — and we tell you the truth about what automated testing can and can't find.

Why automated scanning is necessary but not sufficient

Accessibility lawsuits in the US increased every year from 2018 to 2024. The vast majority cited issues that an automated scanner would have caught: missing alt text, contrast failures, form labels, broken focus order. Catching those issues early — and continuously — is non-negotiable. But here's the part most vendors won't tell you: axe-core, the engine behind every credible automated accessibility scanner including ours, catches roughly 50–60% of WCAG issues. The rest require a human. We surface that limit clearly. If a vendor claims 100% coverage or an AAA badge from automated testing alone, walk away.

How findings reach your team

Every violation comes with the rule ID, severity, the offending DOM node's outerHTML, the CSS selector, and a short failure summary that tells your engineer what to change. We link to Deque's rule documentation so the developer doesn't have to context-switch. Findings are stored as JSON. You can export them, diff them between scans, or pipe them into a future GitHub Action that fails the build on regressions.

Score interpretation

Each violation is weighted by axe-core impact: critical = 10, serious = 5, moderate = 2, minor = 1. We subtract the total from 100 for the per-page score, floored at zero. A score of 90+ usually means a small handful of minor issues. 70–89 means a real backlog. Below 70 means the page has structural problems and needs a focused remediation pass.

Ejemplos de hallazgos

serious

Los elementos de formulario deben tener etiquetas

El formulario de inicio de sesión en /signin tiene un campo de email sin un <label> asociado y sin aria-label. Los lectores de pantalla anuncian el campo como "editar texto" sin contexto, y los usuarios con discapacidades cognitivas que dependen del texto del placeholder pierden la pista al escribir.

<input type="email" placeholder="Email" class="form-input" />

Fix: agrega <label for="email">Email</label> o aria-label="Email".
serious

Contraste de color insuficiente

El texto del cuerpo en /pricing usa #9CA3AF sobre #FFFFFF — una proporción de 2.84:1. WCAG 2.1 AA exige 4.5:1 para texto de cuerpo. Los usuarios con baja visión, pantallas más antiguas o reflejo solar tendrán dificultad para leerlo; algunos ni siquiera verán el texto.

Element     : <p class="text-slate-400">Most popular plan</p>
Foreground  : #9CA3AF
Background  : #FFFFFF
Ratio       : 2.84:1 (need 4.5:1)
Fix         : oscurecer a #6B7280 (5.85:1) o subir el grosor de fuente a 700+ en 18.66px+ (regla de large-text).
moderate

La jerarquía de encabezados salta un nivel

La página /blog/post-template salta de <h1> directamente a <h3>, omitiendo <h2>. Los lectores de pantalla exponen la estructura de la página por niveles de encabezado, y los huecos confunden a quienes navegan por el atajo de teclas H. Los rastreadores de motores de búsqueda también usan la jerarquía para clasificar la relevancia de las secciones.

Esquema de la página:
  H1: Título del artículo
    H3: Encabezado de sección        ← omitió H2
      H4: Subsección

Fix: cambia <h3> a <h2>, o inserta un <h2> contenedor si el H3 es realmente una subsección.

Escanea tu sitio en 60 segundos

25 créditos gratis. Sin tarjeta de crédito. Hallazgos reales en la página que te importa.