Rules
Every rule maps to one or more WCAG 2.1 success criteria. Rules without a WCAG mapping are tagged as best practices.
| Rule ID | WCAG | Level | Description |
|---|---|---|---|
accesslint-001 |
2.4.2 | A | Documents must have a |
accesslint-002 |
Best practice | A | Page must have a mechanism to bypass repeated blocks of content. |
accesslint-003 |
Best practice | A | Page should contain a level-one heading. |
accesslint-004 |
4.1.2 | A | Frames must have an accessible name. |
accesslint-005 |
4.1.2 | A | Frame titles should be unique. |
accesslint-006 |
1.4.4 | AA | Viewport meta tag must not disable user scaling. |
accesslint-007 |
2.2.1 | A | Meta refresh must not redirect or refresh automatically. |
accesslint-008 |
2.2.1 | A | Meta refresh must not be used with a delay (no exceptions). |
accesslint-009 |
2.2.2 | A | The |
accesslint-010 |
2.2.2 | A | The |
accesslint-011 |
1.1.1 | A | Images must have alternate text. Add an alt attribute to |
accesslint-012 |
1.1.1 | A | SVG elements with an img, graphics-document, or graphics-symbol role must have an accessible name via a |
accesslint-013 |
1.1.1, 4.1.2 | A | Image inputs () must have alternate text via alt, aria-label, or aria-labelledby. The text should describe the button action, not the image. |
accesslint-014 |
Best practice | A | Image alt text should not duplicate adjacent link or button text. When alt text repeats surrounding text, screen reader users hear the same information twice. |
accesslint-015 |
Best practice | A | Image alt text should not contain words like 'image', 'photo', or 'picture' — screen readers already announce the element type. |
accesslint-016 |
1.1.1, 4.1.2 | A | Image map elements must have alternative text. |
accesslint-017 |
1.1.1 | A | |
accesslint-018 |
1.1.1 | A | Elements with role='img' must have an accessible name. |
accesslint-019 |
2.1.1 | A | Server-side image maps must not be used. |
accesslint-020 |
4.1.2 | A | Form elements must have labels. Use |
accesslint-021 |
Best practice | A | Form fields should not have multiple label elements. |
accesslint-022 |
4.1.2 | A | Select elements must have a programmatically associated label via |
accesslint-023 |
4.1.2 | A | Input buttons must have discernible text via value, aria-label, or aria-labelledby. |
accesslint-024 |
1.3.5 | AA | Autocomplete attribute must use valid values from the HTML specification. |
accesslint-025 |
Best practice | A | Interactive elements with visible text must have accessible names that contain that text. |
accesslint-026 |
Best practice | A | Form elements should not use title attribute as the only accessible name. |
accesslint-027 |
Best practice | A | Elements should not have tabindex greater than 0, which disrupts natural tab order. |
accesslint-028 |
Best practice | A | Elements that receive keyboard focus must have an appropriate role so assistive technologies can convey their purpose. Non-interactive elements with tabindex='0' need a valid interactive ARIA role. |
accesslint-029 |
4.1.2 | A | Interactive controls must not be nested inside each other. |
accesslint-030 |
2.1.1 | A | Scrollable regions must be keyboard accessible. |
accesslint-031 |
Best practice | A | Accesskey attribute values must be unique. |
accesslint-032 |
2.4.7 | AA | Elements in sequential focus order must have a visible focus indicator. |
accesslint-033 |
Best practice | A | Heading levels should increase by one; skipping levels (e.g. h2 to h4) makes navigation harder. |
accesslint-034 |
Best practice | A | Headings must have discernible text. |
accesslint-035 |
Best practice | A | Paragraphs should not be styled to look like headings. |
accesslint-036 |
Best practice | A | Page should have exactly one main landmark. |
accesslint-037 |
Best practice | A | Page should not have more than one banner landmark. |
accesslint-038 |
Best practice | A | Page should not have more than one contentinfo landmark. |
accesslint-039 |
Best practice | A | Page should not have more than one main landmark. |
accesslint-040 |
Best practice | A | Banner landmark should not be nested within another landmark. |
accesslint-041 |
Best practice | A | Contentinfo landmark should not be nested within another landmark. |
accesslint-042 |
Best practice | A | Main landmark should not be nested within another landmark. |
accesslint-043 |
Best practice | A | Aside (complementary) landmark should be top-level or directly inside main. |
accesslint-044 |
Best practice | A | Landmarks should have unique labels when there are multiple of the same type. |
accesslint-045 |
Best practice | A | All page content should be contained within landmarks. |
accesslint-046 |
1.3.1 | A |
|