All Articles
·8 min read

WCAG 2.1 Checklist: 30 Rules Every Website Must Pass

A complete checklist of 30 automated WCAG 2.1 accessibility rules organized by category. Check your site against every rule.

Images (3 Rules)

  1. 1. Images missing alt text (WCAG 1.1.1, Level A) — Every img element needs an alt attribute. Use descriptive text or alt="" for decorative images.
  2. 2. Decorative images inside interactive elements (WCAG 1.1.1, Level A) — Images with empty alt inside links or buttons need descriptive alt text since the parent needs an accessible name.
  3. 3. Unhelpful or redundant alt text (WCAG 1.1.1, Level A) — Alt text shouldn't be a filename like "photo.jpg" or generic words like "image". It should describe what the image actually shows.

Structure (5 Rules)

  1. 4. Heading hierarchy skips levels (WCAG 1.3.1, Level A) — Headings must go in order: h1, h2, h3. Don't skip from h1 to h3.
  2. 5. Page missing h1 (WCAG 1.3.1, Level A) — Every page should have exactly one h1 as the main heading.
  3. 6. Empty heading elements (WCAG 1.3.1, Level A) — Headings with no text confuse screen reader navigation.
  4. 7. Missing landmark regions (WCAG 1.3.1, Level A) — Use semantic elements like main, nav, and header for page structure.
  5. 8. Duplicate element IDs (WCAG 4.1.1, Level A) — IDs must be unique. Duplicates break label associations and ARIA references.

Navigation (5 Rules)

  1. 9. Links with generic text (WCAG 2.4.4, Level A) — Avoid "click here" or "read more". Link text should describe the destination.
  2. 10. Links with no accessible name (WCAG 2.4.4, Level A) — Every link needs text, aria-label, or a titled image.
  3. 11. Links open new window without warning (WCAG 3.2.5, Level AAA) — target="_blank" links should tell users they'll open a new tab.
  4. 12. Missing skip navigation link (WCAG 2.4.1, Level A) — Add a skip link so keyboard users can bypass repeated navigation.
  5. 13. Positive tabindex values (WCAG 2.4.3, Level A) — tabindex greater than 0 overrides natural tab order. Use 0 or -1 only.

Forms (5 Rules)

  1. 14. Form inputs missing labels (WCAG 1.3.1, Level A) — Every input needs a label element, aria-label, or aria-labelledby.
  2. 15. Buttons with no accessible name (WCAG 4.1.2, Level A) — Buttons need visible text, aria-label, or title.
  3. 16. Common inputs missing autocomplete (WCAG 1.3.5, Level AA) — Name, email, phone, and address fields should have autocomplete attributes.
  4. 17. Select dropdowns missing labels (WCAG 1.3.1, Level A) — Every select element must have an associated label.
  5. 18. Required fields without visible indicator (WCAG 3.3.2, Level A) — Required fields should be visually marked with an asterisk or "required" text.

Document (5 Rules)

  1. 19. Page missing language attribute (WCAG 3.1.1, Level A) — The html element must have a lang attribute for correct screen reader pronunciation.
  2. 20. Page missing or empty title (WCAG 2.4.2, Level A) — The title tag is the first thing screen readers announce.
  3. 21. Viewport disables user scaling (WCAG 1.4.4, Level AA) — Don't set maximum-scale=1 or user-scalable=no. Users need to zoom to 200%.
  4. 22. Page uses meta refresh (WCAG 2.2.1, Level A) — Meta refresh redirects are disorienting. Use server-side redirects.
  5. 23. Iframes missing title (WCAG 2.4.1, Level A) — Every iframe needs a title describing its content.

Color & Visual (2 Rules)

  1. 24. Low contrast text (WCAG 1.4.3, Level AA) — Normal text needs at least 4.5:1 contrast ratio. Large text (18pt+) needs 3:1. AccessKnight calculates actual WCAG contrast ratios using the sRGB luminance formula.
  2. 25. Focus outline removed without replacement (WCAG 2.4.7, Level AA) — Removing outline:none without a visible alternative like box-shadow breaks keyboard navigation.

Tables, ARIA & Media (4 Rules)

  1. 26. Data tables missing headers (WCAG 1.3.1, Level A) — Data tables must use th elements for column and row headers.
  2. 27. Invalid ARIA roles (WCAG 4.1.2, Level A) — ARIA role values must be valid WAI-ARIA names.
  3. 28. Broken ARIA ID references (WCAG 4.1.2, Level A) — aria-labelledby, aria-describedby, and similar attributes must reference existing element IDs.
  4. 29. Nested interactive elements (WCAG 4.1.2, Level A) — Buttons, links, and interactive roles cannot be nested inside each other.
  5. 30. Auto-playing media without controls (WCAG 1.4.2, Level A) — Autoplay audio or video must have controls or be muted.

Check Your Website's Accessibility

Scan against 30 WCAG 2.1 rules and get actionable fix suggestions — free.

Check Your Site Against All 30 Rules