Keyboard navigation
Every interactive element is reachable via Tab/Shift-Tab. Skip-link on every page jumps to the main content. Focus order matches visual order. Focus rings are visible (2px solid rust) on all interactive elements.
Scrape is engineered to be usable by everyone. This statement explains what that means in practice, what we've verified, and what we still owe you.
The Web Content Accessibility Guidelines (WCAG) defines requirements for designers and developers to improve accessibility for people with disabilities. It defines three levels of conformance: Level A, Level AA, and Level AAA.
The Scrape marketing site, documentation, and dashboard are partially conformant with WCAG 2.2 Level AA. "Partially conformant" means that some parts of the content do not fully meet the accessibility standard. The non-conformant items are catalogued below in the known limitations section. We file a remediation ticket for each one.
For the formal mapping of every applicable WCAG 2.1 AA, Section 508, and EN 301 549 success criterion to its conformance status, see our Voluntary Product Accessibility Template (VPAT).
This statement applies to the entire Scrape web property — the marketing site (scrape.dev), the documentation under /docs, and the authenticated dashboard at /dashboard.
It does not cover content fetched by the scraper itself. Scrape retrieves third-party HTML on your behalf; the accessibility of that HTML is determined by the source site, not by us. When you preview a fetched page in the dashboard we render it inside a sandboxed iframe.
The list below is what we have manually tested with the assistive technologies named in § VI. We do not list what we hope works.
Every interactive element is reachable via Tab/Shift-Tab. Skip-link on every page jumps to the main content. Focus order matches visual order. Focus rings are visible (2px solid rust) on all interactive elements.
Body text against page background is 12.5:1 (AAA). Muted secondary text is 7.2:1 (AAA). Rust accent on dark mode is 5.4:1 (AA). Both light and dark modes are tested.
Semantic HTML5 — landmarks (header/main/nav/footer), heading hierarchy without skipped levels, lists for lists. Form fields are associated with labels. Icon-only buttons carry aria-label. Live regions announce job progress.
Layout reflows down to 320px width without horizontal scrolling. Text remains readable at 200% browser zoom. No content depends on a specific orientation.
Long marquees, scroll animations, and pulse indicators respect prefers-reduced-motion: reduce. The dashboard's live-progress UI continues to update with text without motion when that preference is set.
All inputs have visible labels (no placeholder-only forms). Error messages are programmatically associated via aria-describedby. Required fields are marked both visually and via aria-required.
These are documented gaps. Each carries an internal ticket ID (ACC-NNN) and a target remediation date in our public roadmap.
Long horizontal-scrolling code blocks lack a keyboard-accessible scroll affordance — users on a keyboard cannot scroll horizontally without hold-and-drag. Tracking as ACC-014. Mitigation: code is also available in copy-to-clipboard form.
The Recharts-rendered SVG sparklines on the job detail page are decorative — the same data is announced as a live region, but the chart shapes themselves are not keyboard-focusable. ACC-019.
The auto-scrolling 'field crew' logo strip on the home page does not have a pause control. Reduced-motion users see a static fallback. We have not added an explicit pause button. ACC-002.
When you preview the rendered HTML of a fetched page in the dashboard, that HTML comes from the source site — Scrape does not (and cannot) modify its accessibility. We render it inside a sandboxed iframe and warn users when navigating to source content.
axe-coreand Lighthouse on representative pages. Builds fail when serious or critical issues regress.The site should also work with most other modern combinations of browser + assistive technology. If you find one that doesn't, please tell us.
We treat accessibility regressions as bugs, not feature requests. Three ways to reach us, in order of how fast we can act:
a11y label — public tracker, useful when you want to see progress.When reporting a barrier, please include: the URL of the page, the browser + version, the assistive technology + version, and the action you were trying to take. Screenshots or short recordings help, but are not required.
If you have submitted feedback through the channels above and are not satisfied with our response, you may escalate through these regulatory routes:
Last reviewed: .
Review cadence: quarterly, and on every release branch.
Self-evaluation method: automated axe-core CI run + manual keyboard pass + screen-reader spot-check, repeated by an external auditor each quarter.