Skip to main content
Technical Reference

What Lumi checks

58 proprietary rules across five engines, plus axe-core and HTML_CodeSniffer. Every check mapped to WCAG criteria.

350+

Total rules

58

Proprietary rules

26

Unique to Lumi

Advisoryrules are best-practice checks we surface for action but exclude from your accessibility score, so a passing site is never penalised for a judgement call.

Lumi Custom Checks

58 DOM rules that catch issues axe-core and WAVE miss.

Heading Structure

(3)
Accessibility rules and their WCAG criteria
RuleImpact

More than one <h1> on the page

lumi-multiple-h1
Advisory
Moderate

Heading level skipped (e.g. h2 → h4)

lumi-heading-skip
Moderate

Heading element with no text content

lumi-empty-heading
Moderate

Link Quality

(1)
Accessibility rules and their WCAG criteria
RuleImpact

Generic link text ('click here', 'read more') with no aria label

lumi-generic-link-text
Serious

Alt Text Quality

(5)
Accessibility rules and their WCAG criteria
RuleImpact

Alt text that looks like a filename or placeholder

lumi-suspicious-alt-text
Serious

Alt text under 5 characters

lumi-alt-too-short
Advisory
Moderate

Alt text over 200 characters

lumi-alt-too-long
Advisory
Minor

Alt text duplicates nearby visible text

lumi-alt-redundant
Advisory
Moderate

Three or more images share identical alt text

lumi-duplicate-alt-text
Advisory
Moderate

Language

(1)
Accessibility rules and their WCAG criteria
RuleImpact

Invalid html lang code

lumi-invalid-lang
Serious

Landmarks & Page Structure

(7)
Accessibility rules and their WCAG criteria
RuleImpact

Two or more navs, one without an accessible label

lumi-nav-without-label
Moderate

Page has no <main> landmark

lumi-missing-main
Serious

Significant content (40+ chars) outside any landmark

lumi-content-outside-landmark
Advisory
Moderate

Page has no <header>/banner landmark

lumi-missing-header
UniqueAdvisory
Moderate

Search field not inside a search landmark

lumi-missing-search-landmark
UniqueAdvisory
Moderate

Duplicate landmarks, one unlabelled

lumi-duplicate-landmark-no-label
Unique
Moderate

<main> nested inside aside/nav

lumi-landmark-nesting
Unique
Serious

Non-Text Contrast

(3)
Accessibility rules and their WCAG criteria
RuleImpact

Button border/background under 3:1 against adjacent background

lumi-button-contrast
UniqueAdvisory
Serious

Form field border under 3:1 against background

lumi-input-contrast
UniqueAdvisory
Serious

Custom checkbox/radio border under 3:1

lumi-custom-checkbox-contrast
UniqueAdvisory
Serious

ARIA Validation

(8)
Accessibility rules and their WCAG criteria
RuleImpact

aria-label is empty or whitespace

lumi-empty-aria-label
Serious

aria-labelledby/describedby points to a missing id

lumi-broken-aria-reference
Serious

Invalid aria-live value

lumi-aria-live-invalid
Serious

role=alert/status combined with aria-live=off

lumi-aria-live-conflict
Serious

Abstract ARIA role used in markup

lumi-abstract-role
Unique
Serious

Role duplicates an element's implicit semantics

lumi-redundant-role
Unique
Minor

Interactive role with no tabindex

lumi-interactive-role-not-focusable
Unique
Serious

div/span role=button without tabindex

lumi-div-button-no-keyboard
Unique
Critical

Forms & Input

(7)
Accessibility rules and their WCAG criteria
RuleImpact

Personal-data field with no autocomplete attribute

lumi-missing-autocomplete
Advisory
Moderate

Field with no programmatic label

lumi-label-not-associated
Advisory
Serious

'*'/required text but no required/aria-required

lumi-required-not-programmatic
Advisory
Serious

Red border with no text/ARIA error indication

lumi-colour-only-error
Advisory
Serious

Password field blocks paste (breaks password managers)

lumi-paste-blocked
Serious

Password field missing autocomplete attribute

lumi-auth-autocomplete
Advisory
Moderate

CAPTCHA with no accessible alternative

lumi-captcha-no-alt
Advisory
Critical

Tables

(4)
Accessibility rules and their WCAG criteria
RuleImpact

Data table with no <th> header cells

lumi-table-no-headers
Serious

Header cells missing scope attributes

lumi-table-missing-scope
Advisory
Moderate

Table with no caption or accessible label

lumi-table-no-caption
Advisory
Moderate

Rows with inconsistent column counts

lumi-table-broken-structure
Moderate

Media, Motion & Other

(5)
Accessibility rules and their WCAG criteria
RuleImpact

Interactive element under 24×24px

lumi-small-touch-target
Advisory
Moderate

Animates despite prefers-reduced-motion

lumi-no-reduced-motion
Advisory
Moderate

Autoplaying media that is not muted

lumi-autoplay-media
Serious

outline:none with no focus fallback

lumi-outline-removed
Advisory
Serious

Viewport blocks zoom (user-scalable=no)

lumi-zoom-disabled
Critical

Structure Advisor

(3)
Accessibility rules and their WCAG criteria
RuleImpact

Nav with 3+ links but no <ul>

lumi-structure-nav-without-list
UniqueAdvisory
Minor

<main> contains no heading

lumi-structure-heading-landmark-mismatch
UniqueAdvisory
Minor

Landmarks not in conventional order

lumi-structure-landmark-order
UniqueAdvisory
Minor

Keyboard Interaction Tests

7 real-browser tests using Playwright. Most scanners analyse the DOM only - Lumi actually tabs through the page and tests keyboard navigation.

Accessibility rules and their WCAG criteria
RuleImpact

Focused element hidden by a sticky/fixed bar

lumi-focus-obscured
UniqueAdvisory
Serious

Tab gets stuck with no escape

keyboard-trap
Unique
Critical

No visible focus indicator on a focused element

focus-visible
Unique
Serious

No skip-navigation link found

skip-link
UniqueAdvisory
Moderate

Skip link points to a missing id

skip-link-target
Unique
Serious

onclick/role element with no tabindex

keyboard-accessible
UniqueAdvisory
Critical

Focus order doesn't match visual layout

tab-order
UniqueAdvisory
Moderate

AI-Powered Checks

Computed visual analysis that detects issues requiring understanding of how elements actually render - not just what the HTML says.

Accessibility rules and their WCAG criteria
RuleImpact

Text placed over a background image/gradient

lumi-ai-contrast-bgimage
UniqueAdvisory
Serious

Text cut off by ellipsis/line-clamp

lumi-ai-text-truncated
UniqueAdvisory
Moderate

Icon button with no accessible label

lumi-ai-icon-only-button
UniqueAdvisory
Serious

Colour used as the only indicator of meaning (status dots etc.)

lumi-ai-colour-only
UniqueAdvisory
Serious

Claude screenshot review (premium Deep Scan); human-reviewed before the client sees it

lumi-ai-deep
UniqueAdvisoryDeep Scan
Moderate

Third-Party Engines

Every scan also runs axe-core (~84 rules, industry standard) and HTML_CodeSniffer (WCAG 2AA standard). Results are deduplicated across all engines so each issue is reported once with the most detailed information from whichever engine found it.

Legend

UniqueNot checked by axe-core, WAVE, or Lighthouse
AdvisoryBest practice, excluded from score
CriticalBlocks access entirely
SeriousMajor barrier
ModerateCauses difficulty
MinorBest practice
Get accessibility insights in your inbox

WCAG guides, scanner updates, and industry news. No spam.