Accessibility Audit
developer/v1/domain/accessibilityPerforms automated HTML-based accessibility analysis across 24 checks covering key WCAG 2.1 success criteria (also applicable to WCAG 2.2). Covers ARIA, semantic HTML, form labels, headings, images, language, navigation, viewport, media, tables, links, SVGs, and more. Automated checks cover approximately 63% of automatable WCAG 2.1 Level A/AA success criteria but cannot replace manual testing — areas like color contrast, keyboard navigation, and dynamic content require browser-based or manual evaluation. Returns a weighted score out of 100 with letter grade and actionable recommendations.
What It Does
Analyzes the page across 24 accessibility checks: ARIA attributes and landmarks, semantic HTML elements, form input label associations (explicit, implicit, and aria-based), language attributes, heading hierarchy, image alt text presence and quality, skip navigation links, tab index misuse, generic link text, page title, viewport zoom restrictions, autoplay media, media captions, table accessibility, button accessible names, iframe titles, duplicate IDs, link accessible names, autocomplete attributes, meta refresh, SVG accessibility, fieldset/legend form groups, inline focus suppression, and object/embed/canvas alternatives.
Why It's Useful
Web accessibility is both a legal requirement (ADA, WCAG) and a business imperative — it expands your audience and improves usability for everyone. Automated audits catch common issues at scale that manual testing would miss.
Use Cases
WCAG Compliance Check
Audit pages against WCAG 2.1/2.2 Level A and AA criteria to identify compliance gaps across 24 automated checks.
Reduce legal risk and improve inclusivity for users with disabilities.
Development QA
Check new pages or components for accessibility regressions before deployment with detailed per-category scoring.
Catch a11y regressions early in the development cycle with actionable recommendations.
Enterprise Compliance
Monitor accessibility compliance across all public-facing web properties with consistent scoring methodology.
Track and report on accessibility progress across the organization with transparent, weighted scoring.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
domain | string | Required | The domain to audit accessibility forExample: example.com |
Response Fields
| Field | Type | Description |
|---|---|---|
domain | string | The audited domain |
aria | object | ARIA attributes, landmarks, and issues found |
semanticHtml | object | Semantic element usage with score |
formLabels | object | Form input label coverage and issues |
language | object | Lang attribute presence and validity |
headings | object | Heading order validation and skipped levels |
images | object | Image alt text coverage, quality, and decorative detection |
skipNavigation | object | Skip navigation link detection |
tabIndex | object | Positive tabindex anti-pattern detection |
linkText | object | Generic link text detection |
pageTitle | object | Page title presence, emptiness, and generic title detection |
viewport | object | Viewport zoom restriction detection |
autoplayMedia | object | Unmuted autoplay media detection |
mediaCaptions | object | Video/audio caption and subtitle detection (WCAG 1.2.2) |
tables | object | Table caption, header, and scope usage |
buttons | object | Empty button accessible name detection |
iframes | object | Iframe title attribute coverage |
duplicateIds | object | Duplicate ID attribute detection |
linkAccessibility | object | Empty and image-only link detection |
autocomplete | object | Autocomplete attribute coverage on identifiable inputs |
metaRefresh | object | Meta refresh redirect detection |
svgs | object | SVG accessible name detection |
formGroups | object | Fieldset/legend usage for radio/checkbox groups |
focusSuppression | object | Inline outline suppression detection |
mediaAlternatives | object | Object, embed, canvas alternative text detection |
score | number | Accessibility score 0-100 |
grade | string | Letter grade (A+ to F) |
gradeDescription | string | Human-readable description of the grade (e.g., "Very Good - strong posture") |
breakdown | object | Per-category score breakdown with max weights |
recommendations | array | Actionable accessibility improvements |
supplementaryChecks | object | Informational WCAG checks not included in scoring: orientation lock (1.3.4), accesskeys (2.1.4), aria-live regions (4.1.3) |
wcagCoverage | object | WCAG 2.1 criteria coverage transparency: list of covered criteria and percentage |
confidence | object | Result confidence indicator: level (high/medium/low) and limitations list |
Scoring Methodology
24 checks / 100 pts
Each check maps to a WCAG 2.1 success criterion at Level A or AA. The weighted score (0-100) determines the letter grade: A+ (95-100), A (85-94), B (70-84), C (50-69), D (30-49), F (0-29). Categories without applicable elements on the page receive full marks.
| Check | WCAG | Level | Weight |
|---|---|---|---|
| Semantic HTML Usage of semantic elements (header, nav, main, footer, article, section) | 1.3.1 | A | 10 |
| Form Labels Input label coverage via explicit, implicit, or ARIA labeling | 1.3.1 / 4.1.2 | A | 10 |
| Image Alt Text Alt text presence (60%) and quality (40%) blended score | 1.1.1 | A | 10 |
| Heading Order H1 presence, sequential hierarchy, no skipped levels | 1.3.1 / 2.4.6 | A | 10 |
| Language Valid lang attribute on the html element | 3.1.1 | A | 7 |
| ARIA ARIA landmark roles and attribute usage | 4.1.2 | A | 6 |
| Viewport Zoom No user-scalable=no or maximum-scale < 2 | 1.4.4 | AA | 5 |
| Skip Navigation Skip-to-content link for keyboard navigation | 2.4.1 | A | 4 |
| Page Title Descriptive title element present (generic titles like "Home" or "Untitled" receive partial credit) | 2.4.2 | A | 4 |
| Link Text No generic link text (click here, read more, etc.) | 2.4.4 | A | 3 |
| Tab Index No positive tabindex values (anti-pattern) | 2.4.3 | A | 3 |
| Link Accessibility No empty or image-only links missing alt text | 2.4.4 / 4.1.2 | A | 3 |
| Autoplay Media No unmuted autoplay audio or video | 1.4.2 | A | 2 |
| Media Captions Captions/subtitles on video and audio elements | 1.2.2 | A | 3 |
| Tables Caption, header cells, and scope on data tables | 1.3.1 | A | 3 |
| Duplicate IDs Each id attribute must be unique (*SC 4.1.1 removed in WCAG 2.2 but duplicate IDs break ARIA/label associations) | 4.1.1* | A | 2 |
| Autocomplete Autocomplete on identifiable inputs (name, email, phone) | 1.3.5 | AA | 2 |
| Meta Refresh No meta http-equiv=refresh redirect or reload | 2.2.1 | A | 2 |
| SVG Accessibility Accessible names on non-decorative SVGs via title or aria-label | 1.1.1 | A | 2 |
| Form Groups Fieldset and legend for radio/checkbox groups | 1.3.1 | A | 2 |
| Buttons All buttons have accessible names | 4.1.2 | A | 2 |
| Focus Management No inline outline:none suppressing focus indicators | 2.4.7 | AA | 2 |
| Iframes Title attribute on all iframe elements | 2.4.1 | A | 2 |
| Media Alternatives Alternative text for object, embed, and canvas elements | 1.1.1 | A | 1 |
| Total | 100 | ||
Code Examples
curl "https://api.edgedns.dev/v1/domain/accessibility" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d "domain=example.com"const response = await fetch(
'https://api.edgedns.dev/v1/domain/accessibility?domain=example.com',
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
}
);
const data = await response.json();
console.log(data);import requests
response = requests.get(
'https://api.edgedns.dev/v1/domain/accessibility',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={
'domain': 'example.com'
}
)
data = response.json()
print(data)Read the full Accessibility Audit guide
Why it matters, real-world use cases, parameters, response fields, and how to call it from Claude, ChatGPT, or Gemini via MCP.
Read the guide →Related Endpoints
External References
Learn more about the standards and protocols behind this endpoint.
Try This Endpoint
Test the Accessibility Audit endpoint live in the playground.