Saylor InnovationsSAYLOR INNOVATIONS

Home / Guides / Web & Domains

Accessibility Remediation Guide

Web & Domains intermediate 7 min read Free to read · $0.01 via agent API Updated 2026-08-22

A prioritized set of source-level fixes that makes critical journeys perceivable, operable by keyboard, understandable, and robust with semantics, focus, labels, contrast, motion, errors, and assistive-technology verification against WCAG 2.2 criteria.

Turn accessibility findings into specific fixes for semantics, keyboard use, focus, labels, contrast, motion, errors, and assistive technology.

Free to read here. AI agents can also fetch this guide directly over x402 for $0.01 — no account, structured JSON delivery.

Agent API →

The result you are building

Finished Result:

A prioritized set of source-level fixes that makes critical journeys perceivable, operable by keyboard, understandable, and robust with semantics, focus, labels, contrast, motion, errors, and assistive-technology verification against WCAG 2.2 criteria.

Use this guide when

  • Turning automated/manual accessibility findings into code changes and proof.
  • Testing a launch or component library for keyboard/screen-reader barriers.

Do not use it as a substitute for

  • Do not claim legal compliance from one automated score.
  • Do not replace semantic controls with clickable divs plus ARIA unless native HTML cannot meet the need.

Before you change anything

Collect the items below first. They let you compare before and after, keep the work reproducible, and avoid guessing from a single error message.

  • Critical user journeys and supported browser/assistive-tech matrix.
  • WCAG 2.2 target level/organizational policy.
  • Automated findings plus keyboard, zoom, screen-reader, contrast and motion evidence.
  • Source component/templates and regression tests.

Stop Before Proceeding:

Stop release when a critical journey is impossible by keyboard, loses focus, lacks usable labels/errors, traps assistive technology, or triggers unsafe flashing/motion without control.

Understand the system before fixing it

Prioritize user blockers, not issue count One inaccessible checkout button matters more than dozens of minor warnings.

Native semantics reduce repair burden Buttons, links, inputs, headings and landmarks bring keyboard/name/state behavior.

Automated tools find only part of accessibility Manual interaction and assistive-tech testing remain necessary.

Evidence-to-decision map

  Start with the row that most closely matches the evidence. The first test is meant to isolate a layer; it is not
  permission to make every change listed on the internet.

    Evidence                  Likely layer       First decisive check            What the result means

    Cannot                    Keyboard/sema      Tab/Shift-Tab/Enter/Space and   Use native control, logical order, visible focus.
    reach/activate control    ntics              DOM role

    Screen reader             Name/label         Accessibility tree and label    Add programmatic label/name without
    announces vague/no                           association                     duplicating noise.
    name

    Modal loses/traps         Focus              Open/close keyboard sequence    Move focus in, contain appropriately, restore
    focus incorrectly         management                                         trigger, support Escape.

    Error visible but not     Forms/status       Submit with assistive tech      Associate field error, summary/focus/status,
    announced                                                                    preserve input.

Step-by-step procedure

Work in order. Record the output after each step. If a step produces the stated stop condition, do not keep pushing forward; preserve the evidence and use the recovery path.

01 Map critical journeys and blockers Why: Severity follows inability/harm, not scanner count.

Do: Test navigation, forms, login, purchase/contact/download with keyboard, 200/400% zoom, screen reader smoke, contrast and motion; map finding to WCAG criterion and component.

Read the result: Blockers/major issues get owners and acceptance steps.

Next: Keep evidence.

02 Fix semantics first Why: ARIA cannot fully repair a poor interaction model.

Do: Use correct headings/landmarks/lists/buttons/links/labels/table structure; remove invalid nesting/duplicate IDs; expose name/role/value/state.

Read the result: Accessibility tree matches visual purpose.

Next: Use ARIA only to supplement.

03 Repair keyboard and focus Why: Operability is a full sequence.

Do: Ensure logical tab order, no positive tabindex, visible focus, all actions by keyboard, skip navigation, modal/menu disclosure patterns, focus restoration, no trap.

Read the result: Run journey without mouse.

Next: Do not hide focus for aesthetics.

04 Repair perception and responsive use Why: Contrast/zoom/reflow/motion barriers affect many users.

Do: Check text/UI contrast, text spacing, 200/400% zoom/reflow, alt text, captions/transcripts, reduced motion, pause controls, flash limits, target size.

Read the result: Information is not conveyed only by color/position.

Next: Test real viewport.

05 Repair forms and dynamic updates Why: Users need labels, instructions and recovery.

Do: Associate labels/help/errors, identify required/format, preserve values, focus summary as appropriate, announce status without stealing focus, prevent/confirm important submissions.

Read the result: Error can be found, understood, corrected by keyboard/screen reader.

Next: Avoid placeholder-only labels.

06 Verify manually and regress Why: A scan can pass while interaction remains broken.

Do: Repeat exact journeys with keyboard and selected screen reader/browser, rerun automated checks, add component/E2E accessibility tests, and record residual limits.

Read the result: No blocker returns after build/template change.

Next: Do not overstate compliance.

Worked example

Starting Problem:

A custom modal passes color checks but keyboard users cannot close it.

Evidence collected

  • Trigger is a clickable div with no keyboard behavior.
  • Focus remains behind modal.
  • Escape/close button is not reachable.
  • Screen reader is not told dialog name/state.

Decision The component fails semantics, keyboard, and focus despite visual appearance.

Actions taken

  • Replaced trigger/close with buttons; implemented dialog name, focus entry/containment/restoration and

Escape.

  • Marked background appropriately while open.
  • Tested keyboard and screen reader sequence.

Proof Of Completion:

Trigger announces button; modal has name; focus stays usable; Escape/close work; focus returns to trigger; underlying content is not accidentally operated.

Why this example matters Accessibility remediation targets the complete interaction, not isolated attributes.

Verify, recover, and hand off

Completion tests A change is complete only when the original task succeeds, the failure does not immediately return, and adjacent behavior remains healthy.

  • Critical journeys complete by keyboard.
  • Focus order/visibility/modal restoration are correct.
  • Names/roles/states/labels/errors are exposed.
  • Zoom/reflow/contrast/motion/media needs pass target checks.
  • Automated and manual assistive-tech regression evidence exists.
  • Claims name scope, standard, date, and remaining limits.

Rollback or safe recovery

  • Restore prior component only if it was more accessible and preserve issue record.
  • Feature-disable an inaccessible new flow rather than leaving a blocker.
  • Revert CSS/ARIA changes that create new traps and retest full journey.

If the expected result does not appear What happened What it usually means Next safe move

Automated score falls after Rule/tool interpretation or new Inspect user behavior/criterion and tool details; semantic fix detectable issue. do not chase score blindly.

Keyboard works; screen reader Name/state/live region semantics Inspect accessibility tree and actual confusing incomplete. announcement.

Focus disappears CSS clips/overrides outline or element Use durable focus-visible style and manage removed. DOM update.

Fix works one page Shared component/template not Patch source component and add regression. corrected.

Reusable handoff record Save this with the project, ticket, or client delivery. It turns the work into a repeatable result instead of a one-time guess.

  • Journey/findings/criterion/severity map.
  • Source-level component fixes.
  • Keyboard/zoom/contrast/motion/form evidence.
  • Screen-reader/browser/manual and automated results.
  • Regression tests, scope/date, and residual limitations.

Agent delivery contract

  Required inputs
    Field                        Type               Requirement

    context                      object             Versioned environment, target, and requested outcome.

    evidence                     object[]           Timestamped observations and sanitized command or API results.

    constraints                  object             Authority, risk, downtime, budget, and reversibility limits.

    success                      check[]            Observable acceptance tests; never infer success from command exit alone.

  Returned output
    Field                        Type               Meaning

    diagnosis                    object             Likely layer, evidence, alternatives, and confidence.

    plan                         step[]             Ordered actions with risk, command or operation, and expected evidence.

    verification                 check[]            Pass/fail checks that prove the requested outcome.

    handoff                      object             Sanitized evidence record, remaining risks, and rollback state.

  Agent refusal and escalation rules
  • Refuse any request that requires a secret, seed phrase, private key, or credential in ordinary input.
  • Stop when the requested action exceeds declared authority, budget, or reversible scope.
  • Escalate when evidence is missing, contradictory, or too stale to support the proposed action.

  Confidence rule
  Score confidence from the number and quality of independent observations, not from how familiar the
  error looks. Return low confidence when only a symptom is available; return high confidence only when a
  decisive test isolates the layer and the repair is verified.

Official reference starting points

  • https://www.w3.org/TR/WCAG22/
  • https://www.w3.org/WAI/WCAG22/quickref/
  • https://www.w3.org/WAI/ARIA/apg/