·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. 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. 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. 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)
- 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.
- 5. Page missing h1 (WCAG 1.3.1, Level A) — Every page should have exactly one h1 as the main heading.
- 6. Empty heading elements (WCAG 1.3.1, Level A) — Headings with no text confuse screen reader navigation.
- 7. Missing landmark regions (WCAG 1.3.1, Level A) — Use semantic elements like main, nav, and header for page structure.
- 8. Duplicate element IDs (WCAG 4.1.1, Level A) — IDs must be unique. Duplicates break label associations and ARIA references.
Navigation (5 Rules)
- 9. Links with generic text (WCAG 2.4.4, Level A) — Avoid "click here" or "read more". Link text should describe the destination.
- 10. Links with no accessible name (WCAG 2.4.4, Level A) — Every link needs text, aria-label, or a titled image.
- 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.
- 12. Missing skip navigation link (WCAG 2.4.1, Level A) — Add a skip link so keyboard users can bypass repeated navigation.
- 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)
- 14. Form inputs missing labels (WCAG 1.3.1, Level A) — Every input needs a label element, aria-label, or aria-labelledby.
- 15. Buttons with no accessible name (WCAG 4.1.2, Level A) — Buttons need visible text, aria-label, or title.
- 16. Common inputs missing autocomplete (WCAG 1.3.5, Level AA) — Name, email, phone, and address fields should have autocomplete attributes.
- 17. Select dropdowns missing labels (WCAG 1.3.1, Level A) — Every select element must have an associated label.
- 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)
- 19. Page missing language attribute (WCAG 3.1.1, Level A) — The html element must have a lang attribute for correct screen reader pronunciation.
- 20. Page missing or empty title (WCAG 2.4.2, Level A) — The title tag is the first thing screen readers announce.
- 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%.
- 22. Page uses meta refresh (WCAG 2.2.1, Level A) — Meta refresh redirects are disorienting. Use server-side redirects.
- 23. Iframes missing title (WCAG 2.4.1, Level A) — Every iframe needs a title describing its content.
Color & Visual (2 Rules)
- 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.
- 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)
- 26. Data tables missing headers (WCAG 1.3.1, Level A) — Data tables must use th elements for column and row headers.
- 27. Invalid ARIA roles (WCAG 4.1.2, Level A) — ARIA role values must be valid WAI-ARIA names.
- 28. Broken ARIA ID references (WCAG 4.1.2, Level A) — aria-labelledby, aria-describedby, and similar attributes must reference existing element IDs.
- 29. Nested interactive elements (WCAG 4.1.2, Level A) — Buttons, links, and interactive roles cannot be nested inside each other.
- 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 →