In our observations, the low-vision segment is not a «narrow group» but a broad spectrum: from users with color blindness and presbyopia to people temporarily working in low-light conditions. They more often increase font sizes, use screen magnifiers and prefer clear, high-contrast interfaces with predictable navigation. On e‑commerce and fintech sites this segment shows a high intent to purchase if the interface is accessible and the steps are clear.
In the case of one pharma e‑commerce where we fixed contrast, focus, alt and keyboard navigation, drop-offs decreased by 12%, and conversion from the product card increased by 9.3% with the same advertising budget.
Legal risk and compliance are also important. European directives (EN 301 549, WAD), the ADA and the WCAG 2.1/2.2 standard: benchmarks that Ukrainian companies are already gravitating toward, especially those with exports or branches in the EU. A public accessibility statement increases trust and disciplines internal processes: you record the level of conformance (A/AA), a roadmap and a contact for feedback.
The project’s economics are simple: CAPEX – one-time improvements (audit, remediation, pattern implementation), OPEX – maintenance (regression tests, monitoring, training). ROI is composed of reduced traffic leakage (growth in task completion and conversion rate), reduced risk of legal claims and increased LTV through retention. In BUSINESS SITE projects we calculate ROMI over a 3–6 month horizon, and in e‑commerce we often see payback within 2–3 sprints.
BUSINESS SITE practice confirms: quick wins deliver contrast, visible focus, alt‑texts, correct labels and skip links. These tasks take weeks, not months, and immediately affect user behavior.
Checklist (business block)

- Determine the market: share of mobile traffic, share of users who increase font size (based on CSS prefers-reduced-motion and zoom events).
- Set the goal: increase conversion by X%, reduce bounce rate by Y%.
- Assign owners: product, design, development, QA, marketing.
- Adopt the compliance standard: WCAG 2.2 AA as the target.
- Prepare an accessibility statement (level, date, roadmap).
Code examples/snippets

Tools/resources

- WCAG Overview: https://www.w3.org/WAI/standards-guidelines/wcag/
- EN 301 549 summary: https://www.etsi.org
- Accessibility Statements guide: https://www.w3.org/WAI/planning/statements/
Product ticket template

- Title: Low CTA contrast on mobile
- Problem: The ‘Buy’ button contrast is 2.8:1, below 4.5:1.
- Steps: Open the product card → check the contrast in DevTools.
- Severity: High (affects payment).
- Priority: P1
- Acceptance criteria: contrast ≥ 4.5:1 in all states, verified with WAVE/axe.
WCAG: requirements for visually impaired users

WCAG 2.1 and 2.2, a set of testable criteria (Success Criteria, SC) at levels A/AA/AAA. For commercial sites it’s reasonable to aim for level AA: it provides an accessible interface without excessive costs. Level AAA is useful for specific scenarios, but as a general standard it is too costly.
A practical approach to documentation: record SC coverage in a table where each criterion has a status, an owner and a date of review. In my experience, such a registry simplifies reporting to management and builds a transparent roadmap.
Checklist (level AA)
- 1.4.3 Text contrast ≥ 4.5:1; large text ≥ 3:1.
- 2.1.1 Full keyboard navigation; focus is visible.
- 2.4.1 Skip links; correct landmarks.
- 3.3.1/3.3.3 Clear form errors and hints.
- 1.4.4 Text can be enlarged to 200% without loss of content.
Code/snippet
Skip to main content
...
.skip-link { position:absolute; left:-9999px; }
.skip-link:focus { left:16px; top:16px; background:#fff; padding:8px; }
Tools/resources
- WCAG 2.2 quickref: https://www.w3.org/WAI/WCAG22/quickref/
- WAVE: https://wave.webaim.org
- axe DevTools: https://www.deque.com/axe/
Product ticket template
- Title: Add a skip link and landmarks
- Problem: The user cannot quickly jump to the content.
- Steps: Open the homepage, press Tab, there is no visible ‘Skip’.
- Severity: Medium
- Priority: P2
- Acceptance criteria: Works in NVDA/VoiceOver, covered by SC 2.4.1.
Inclusive web design: contrast
Contrast is fundamental. For regular text use a minimum of 4.5:1, for large text (≥18pt or 14pt bold), 3:1. Include color contrast checkers at the design stage and implement palettes in the design system to avoid situational errors.
Consider color blindness: check palettes for deuteranopia, protanopia, tritanopia. In interfaces with financial transactions (online banking) we additionally added icons and textual cues so emphasis did not rely solely on color.
Text and background contrast
Measure and record contrast directly in layouts. The Stark plugin helps in Figma; in the browser, use DevTools and the axe extension. Save the set of approved color tokens in the design system and automate checks during the build.
@media (prefers-reduced-motion: reduce) {
* { animation-duration: 0.01ms; animation-iteration-count: 1; transition:none; }
}
Checklist
- Check contrast of all button/link states.
- Limit line length, adjust line-height.
- Use rem/em for font scaling.
- Emulate color blindness (Stark/Sim Daltonism).
- Enable prefers-reduced-motion for animations.
Tools
- Stark (Figma): https://www.getstark.co
- TPGi CCA: https://www.tpgi.com/color-contrast-checker/
Product ticket template
- Title: Insufficient contrast of secondary links
- Issue: The color #8ea4c8 on white gives ~2.7:1.
- Steps: Check via CCA on the product card.
- Severity: High
- Priority: P1
- Acceptance criteria: Contrast ≥ 4.5:1, design-system tokens updated.
Typography for low-vision users
Recommendations: base font size at least 16px, on desktop 18–20px for main text in B2C scenarios; line-height 1.5; leading and letter-spacing: for headings, apply carefully, avoid ‘squashing’. Font scaling up to 200% should not break the grid or important CTAs.
html { font-size: 100%; }
body { font-size: 1rem; line-height: 1.5; }
h1 { font-size: clamp(1.8rem, 2.5vw, 2.4rem); }
ARIA and semantic HTML for accessibility
I always recommend: semantic HTML first, then ARIA. Native elements: buttons, links, form fields, already contain the correct roles and behavior. If a custom component is needed, add ARIA roles cautiously and only when necessary.
Semantic landmarks (header, nav, main, footer) and headings h1–h6 create a logical structure for screen readers NVDA, JAWS, VoiceOver and TalkBack. This speeds up navigation and reduces time on task.
Checklist
- Check where native elements have been replaced by div/span → restore native elements.
- For dynamic content, add aria-live and describe the behavior.
- Add landmarks and correct headings.
- Document ARIA in the component library.
Tools
- ARIA practices: https://www.w3.org/WAI/ARIA/apg/
- Landmarks guide: https://www.w3.org/WAI/tutorials/page-structure/
Product ticket template
- Title: Add aria-live for “product in cart” notifications
- Issue: Screen reader is silent when adding a product.
- Steps: NVDA + Firefox, “Add to cart” → no announcement.
- Severity: Medium
- Priority: P2
- Acceptance criteria: The message is read by NVDA/JAWS/VoiceOver.
ARIA errors and antipatterns
Common mistakes: using role=”button” on a div without keyboard behavior; hiding focus; aria-hidden on active elements; excessive use of aria-* where native is sufficient. It’s recommended to replace role=”button” with
OK
Navigation, focus, keyboard accessibility
Keyboard navigation is mandatory: Tab order is logical, focus is visible and high-contrast, interactive elements are accessible via Enter/Space. Add skip links and manage focus in modals and SPA scenarios so the user doesn’t lose context.
Check compatibility with screen magnifiers and zoom tools: windows should scale, tooltips should not cover fields, tables should have a fixed tab order and headers.
:focus { outline: 2px solid #0a84ff; outline-offset: 2px; }
Checklist
- Full keyboard navigation, without focus traps.
- Visible focus on all interactive elements.
- Focus management when opening and closing modals.
- Skip links, logical Tab order.
- Test in NVDA/VoiceOver, check with a screen magnifier.
Tools
- NVDA: https://www.nvaccess.org
- JAWS: https://www.freedomscientific.com
- VoiceOver guide: https://support.apple.com/guide/voiceover
- TalkBack: https://support.google.com/accessibility/android
Product ticket template
- Title: Add focus management in the payment modal
- Problem: The focus falls behind the overlay, making it difficult to complete payment with the keyboard.
- Steps: Open the modal, press Tab → focus jumps outside the modal.
- Severity: High
- Priority: P1
- Acceptance criteria: Focus is trapped on open and returns to the trigger on close.
Buttons and navigation for people with low vision
Design clickable areas 44×44px and larger, use clear labels and explicit hover/active states. Links should look like links, buttons like buttons; mixing styles makes perception more difficult.
button, .btn, a.btn { min-width: 44px; min-height: 44px; }
a { text-decoration: underline; }
a:hover { text-decoration-thickness: 2px; }
alt, audio description and subtitles
Alt‑text should convey the purpose of the image in context. Decorative images get an empty alt=””. Informational graphics and SVGs, with roles and descriptions; complex diagrams – with an expanded textual description nearby or via a link.
Correct alt‑attributes help search: product images with relevant captions improve visibility in image search and product cards.
Checklist
- Alt text by purpose: informative, short, without ‘image’.
- Empty alt for decorative images.
- Long descriptions for complex charts.
- Captions/transcripts for video/audio.
- Check speech output in NVDA/JAWS.
Tools
- W3C alt decision tree: https://www.w3.org/WAI/tutorials/images/decision-tree/
- YouTube/Subtitle tools, Amara: https://amara.org
Product ticket template
- Title: Add subtitles to the video «Payment and delivery»
- Problem: No subtitles, loss of context.
- Steps: Open the video, mute the sound → information unavailable.
- Severity: Medium
- Priority: P2
- Acceptance criteria: Subtitles and transcript published, verified for synchronization.
Alternative text for images
Correct: alt=”Wrist blood pressure monitor, model X200, 15% off”. Incorrect: alt=”product photo”. If the image is a button or link, the alt/aria-label should describe the action: alt=”Add X200 blood pressure monitor to cart”. For product collections, use a single alt template to improve consistency.
Forms and validation for the visually impaired
Each field: with a label linked via for/id, or with an aria-label if the label is visually hidden. Describe form errors as text, link them via aria-describedby, announce them via a live region. Provide input format guidance in advance, not afterwards.
We will send a receipt
Checklist
- Labels and hints associated with fields are present everywhere.
- Errors are announced to screen readers and clearly highlighted.
- Focus moves to the first error.
- An alternative to CAPTCHA without visual tasks.
- Dates/phones: input masks with format hints.
Tools
- Inclusive forms: https://www.w3.org/WAI/tutorials/forms/
- GOV.UK Design System patterns: https://design-system.service.gov.uk
Product ticket template
- Title: Accessible registration form validation
- Problem: Errors are not announced, aria-describedby attributes are missing.
- Steps: Leave the field empty → submit → the screen reader is silent.
- Severity: High
- Priority: P1
- Acceptance criteria: Errors are visible/announced, focus moves to the first error.
Accessibility testing tools
Automated tools catch up to 30–40% of issues. axe‑core, Google Lighthouse, WAVE, Pa11y and Tenon.io detect obvious violations: contrast, missing alt attributes, incorrect roles. Manual auditing covers scenarios: navigation logic, focus management, expected ARIA behavior.
Audit checklist
- Run Lighthouse Accessibility ≥ 90.
- WAVE/axe without critical errors.
- Manual keyboard check (no mouse).
- NVDA/VoiceOver: check important scenarios.
- Report as remediation tickets.
pa11y https://example.com --threshold 0 --reporter json > pa11y.json
Tools
- Lighthouse: https://developers.google.com/web/tools/lighthouse
- axe-core: https://github.com/dequelabs/axe-core
- Pa11y: https://pa11y.org
- Tenon: https://tenon.io
Product ticket template
- Title: Fix axe errors on the cart page
- Issue: 6 violations (contrast, aria-roles).
- Steps: Run axe → save the report.
- Severity: High
- Priority: P1
- Acceptance criteria: 0 critical errors, 0 major warnings.
Choosing accessibility audit tools
Consider CI integration, SC coverage, reporting convenience and support. For multisite setups a headless‑mode and export to JSON/HTML are useful. axe‑core CLI and Pa11y are well suited for pipelines, WAVE, for quick manual checks, Lighthouse – for an overall assessment.
Low-vision testing
Recruit participants ethically: compensate for time, provide clear instructions, and offer support during tests. Look for users with color blindness, low visual acuity, and those who use screen readers NVDA/JAWS, VoiceOver, or TalkBack.
Analyze recordings, metrics, and comments, group insights, and translate them into the product backlog with an assessment of impact.
Checklist
- Define participant profiles and scenarios.
- Conduct a pilot session, calibrate the scenarios.
- Tests with NVDA/VoiceOver/TalkBack and screen magnifiers.
- Collect metrics and NPS, formulate recommendations.
- Convert results into prioritized tickets.
Tools
- ZoomText/Windows Magnifier
- Screen readers (links above)
Product ticket template
- Title: Improve navigation in the “Promotions” section
- Problem: Users using a magnifier lose navigation context.
- Steps: Test with a 200% magnifier on mobile, search for “Promotions”.
- Severity: Medium
- Priority: P2
- Acceptance criteria: Time on task ↓ by 20% in the retest.
Implementation plan, prioritization and budget
Implementation strategy: discovery (goals, audience), audit (auto + manual), quick wins (contrast, focus, alt, labels, skip links), sprint‑remediation (components, forms, modals), regression testing (CI). Prioritize remediation tickets by impact on users, difficulty of fixing and legal risks.
Checklist
- Approve the AA scope and the list of pages.
- Create the backlog and RICE estimates for tickets.
- Allocate CAPEX (audit + fix) and OPEX (regressions) budgets.
- Set an SLA for fixing critical regressions.
- Schedule team training.
:root { --focus-color: #0a84ff; --focus-width: 2px; }
:focus { outline: var(--focus-width) solid var(--focus-color); }
Tools
- RICE Prioritization: Intercom framework
- Jira/YouTrack ticket templates
Product ticket template
- Title: Enable focus tokens at the design system level
- Problem: Inconsistent focus in components.
- Steps: Check Button, Link, Input in Storybook.
- Severity: Medium
- Priority: P2
- Acceptance criteria: Consistent focus across components, Storybook coverage.
Accessibility implementation plan for the website
30 days (small site): audit + quick wins + accessibility statement. 60 days (medium): remediation of components, forms, navigation, automation of checks. 90 days (large): CI/CD, regressions, user testing, updating the design system and documentation.
CI/CD and regression monitoring
Integrate accessibility tests into the pipeline: run the Pa11y/axe-core CLI on key routes, fail the build on critical violations. Add accessibility regression testing: screenshot and DOM snapshots to track contrast, attributes, and roles.
- name: Pa11y audit
run: pa11y-ci --config .pa11yci
Checklist
- Configure CI with error thresholds.
- Add routes for audit (home, search, cart, checkout).
- Enable visual regression tests for key screens.
- Update Definition of Done (WCAG AA).
- Maintain a public accessibility changelog.
Tools
- pa11y-ci: https://github.com/pa11y/ci
- axe-core CLI: https://github.com/dequelabs/axe-core-npm
Product ticket template
- Title: Add pa11y-ci to GitHub Actions
- Problem: No automated accessibility checks.
- Steps: Set up the config, add routes, and thresholds.
- Severity: Medium
- Priority: P2
- Acceptance criteria: The pipeline fails on critical violations.
KPI and accessibility metrics for conversion
Measure: task completion, time on task, conversion rate, reduction in drop-offs, NPS. Link metrics to the funnel: product page → cart → checkout (Nova Poshta + card). Accessibility increases predictability of user flows and reduces cognitive load, which is reflected in the metrics.
For reporting, use dashboards: KPIs for WCAG status (number of violations), product metrics, NPS for users of assistive technologies. This creates a complete picture for marketing and product.
Checklist
- Define baseline metrics and target values.
- Set up events for assistive patterns (skip link click, zoom, prefers-reduced-motion).
- Create a dashboard with trends for conversion and drop-offs.
- Plan A/B tests for contrast/focus/forms.
- Agree on the monthly report format.
document.querySelector('.skip-link')
?.addEventListener('click', ()=>analytics.track('skip_link_used'));
Tools
- Amplitude/Mixpanel/ga4 events
- Looker/Data Studio for dashboards
Product ticket template
- Title: Add accessibility event tracking
- Issue: No data on usage of skip link and zoom.
- Steps: Set up events, verify in the report.
- Severity: Low
- Priority: P3
- Acceptance criteria: Events in the dashboard, segments are comparable.
Templates and checklists for getting started
Ready-made checklists
- Design: contrast 4.5:1, line length, line-height, color blindness.
- Development: semantic HTML, focus, skip links, ARIA live.
- QA: keyboard walkthrough, NVDA/VoiceOver, Lighthouse ≥ 90, WAVE/axe without critical issues.
Resources
- WebAIM: https://webaim.org
- W3C WAI Tutorials: https://www.w3.org/WAI/tutorials/
Checklist
- Choose 1 case metric for quick improvement.
- Approve the set of mandatory design-system components.
- Create ticket templates for problem categories.
- Assign owners for each area.
...
...
Product ticket template
- Title: Implement accessible tabs in the catalog
- Problem: Tabs implemented as divs; keyboard navigation is missing.
- Steps: Check arrow keys/Tab; the screen reader does not announce context.
- Severity: Medium
- Priority: P2
- Acceptance criteria: ARIA roles, arrow keys/Enter, NVDA announcements.
Conclusion and call to action
I believe accessibility is a discipline of efficiency. In the end you get: greater reach, predictable conversion, a resilient reputation, and compliance. BUSINESS SITE’s practice shows that quick wins in contrast, focus, forms, and navigation lead to measurable results in one‑two sprints, and a systemic approach through a design system and CI/CD consolidates the effect.
Recommended first steps: 1) conduct a combined audit (axe/Lighthouse + manual), 2) close quick wins on the main flows (catalog → cart → checkout), 3) set AA as the target level and publish an accessibility statement. For marketing it’s transparent: metrics and ROI, for development: a clear backlog, for leadership – managed risk and funnel growth.
Completion checklist
- Approve AA level and roadmap.
- Run the audit and close quick wins.
- Set up regression tests in CI.
- Publish accessibility statement.
- Create KPI dashboard.
Product ticket template
- Title: Publish a public accessibility statement
- Problem: There is no public commitment or contact.
- Steps: Prepare the text, add it to the footer, notify the team.
- Criticality: Low
- Priority: P3
- Acceptance criteria: The page is accessible and includes the level, date, and contact.
Frequently Asked Questions
Answer: In most cases, no. Quick wins and component adjustments are sufficient; a full redesign is needed if the design system doesn’t support contrast/focus and basic patterns.
Answer: For a small site, from 2–4 weeks, medium – 6–10 weeks, large – phased over a quarter. Cost depends on the number of pages/components, the state of the design system and automated test coverage (CAPEX for remediation + OPEX for regression).
Answer: To start: Lighthouse and WAVE. For depth and CI – axe-core and Pa11y; for reporting and consulting – Tenon.io.
Answer: Show an increase in conversion rate and a reduction in drop-offs after quick wins, record a decrease in support inquiries, and account for legal risk. Logic: CAC ↓, LTV ↑, ROMI of campaigns ↑.
Answer: Add the pa11y-ci/axe-core CLI to the pipeline, define the severity of violations and thresholds. Then include regression snapshots of key pages.
Checklist
- Use Lighthouse/WAVE for an initial audit.
- Integrate axe-core/Pa11y into CI.
- Agree on pipeline failure thresholds.
- Schedule a training workshop for the team.
- Add an FAQ to the internal portal.
Product ticket template
- Title: Prepare an accessibility workshop for the team
- Problem: Lack of skills, risk of regressions.
- Steps: Create the program, gather examples, set a date.
- Criticality: Low
- Priority: P3
- Acceptance criteria: Training conducted, materials available, questions collected.
P.S. In my experience, when accessibility becomes part of the Definition of Done, marketing gains a sustained efficiency boost, the product gets a manageable funnel, and the brand gains trust. At BUSINESS SITE we follow this practice across all projects: from pharma e-commerce to fintech services and travel portals.










