Free Accessibility Checker

Scan any page against 21 automated WCAG 2.2 checks and get a plain-English fix for every problem found. Alt text, form labels, heading order, keyboard traps, contrast, and more. Free, no sign-up, and no crawl limits.

Check a page

Enter a public URL and we fetch the page and check the HTML it returns. If the page sits behind a login, or is built entirely in the browser, paste its HTML instead and the same checks run locally in your own tab.

Explore More Free Tools

Other free tools for auditing and building better pages. No sign-up on any of them.

How It Works

How to check a page for accessibility

No account, no sign-up, no crawl limit. Enter a URL and we fetch the page, or paste the HTML and the same checks run locally in your own browser tab.

1

Enter a page

Paste a public URL, or switch to Paste HTML for pages behind a login, in staging, or built entirely in the browser.

2

Read the findings

Every failed check shows what it looks at, why it matters to a real person, how to fix it, and up to three examples pulled from your own markup.

3

Fix and re-scan

Work down from critical to advisory, ship the fix, then run the page again to confirm the check flipped to a pass.

Be Realistic

What an automated checker can and cannot find

This matters more than the score. Automated tools are very good at one class of problem and blind to another, and knowing the difference is what stops a green result from becoming false confidence.

machine-checkable ≠ accessible

A tool can prove an alt attribute exists. It cannot tell you the alt text is wrong. It can prove a label is wired to a field, but not that the label makes sense. Everything in the second group needs a person, a keyboard, and ideally a screen reader.

There are two more limits worth stating plainly. First, this checker reads the HTML the server returns, so anything a page renders later with JavaScript is invisible to it. On a single-page app you will get a thin report, and the tool says so when that happens.

Second, contrast is only measured where a text color and a background color are both set in an inline style attribute. Contrast that comes from a stylesheet needs a rendered page with computed styles, which no HTML-level checker can do. Check your palette directly instead of assuming a clean report means clean contrast.

The Checks

All 21 checks, and the criteria they map to

Each check points at the WCAG 2.2 success criterion behind it, so a finding here can go straight into a ticket without anyone having to translate it first.

CheckWCAG criterionSeverity
Images have an alt attribute1.1.1 Non-text Content (A)critical
Alt text is not just a file name1.1.1 Non-text Content (A)moderate
Form fields have labels1.3.1, 4.1.2 (A)critical
Links have discernible text2.4.4, 4.1.2 (A)critical
Buttons have an accessible name4.1.2 Name, Role, Value (A)critical
Page declares a language3.1.1 Language of Page (A)serious
Page has a title2.4.2 Page Titled (A)serious
Labels point at a real field1.3.1 Info and Relationships (A)serious
Iframes have a title4.1.2 Name, Role, Value (A)serious
Pinch zoom is not disabled1.4.4 Resize Text (AA)serious
ARIA references resolve to real ids4.1.2 Name, Role, Value (A)serious
Clickable elements are keyboard reachable2.1.1 Keyboard (A)serious
Media does not autoplay with sound1.4.2 Audio Control (A)serious
Inline text colors meet 4.5:11.4.3 Contrast Minimum (AA)serious
Page has exactly one h11.3.1 Info and Relationships (A)moderate
Heading levels do not skip1.3.1 Info and Relationships (A)moderate
No positive tabindex values2.4.3 Focus Order (A)moderate
Element ids are unique4.1.1, 1.3.1 (A)moderate
Data tables have header cells1.3.1 Info and Relationships (A)moderate
Page has a main landmark2.4.1 Bypass Blocks (A)moderate
Link text describes its destination2.4.4 Link Purpose (A)advisory

Criterion numbers follow WCAG 2.2, a W3C Recommendation since October 2023. Levels shown in brackets are the conformance level of that criterion.

Scoring

How the score is worked out

A page starts at 100 and loses points for each failed check, weighted by how much damage that failure does to somebody. This is our own weighting for triage, not an official WCAG measure, and no score is a claim of compliance.

SeverityCost per failed checkWhat it means
Critical15 pointsSomeone can be blocked from using part of the page entirely. An unlabelled payment field or an icon-only link with no name belongs here.
Serious10 pointsThe page is usable but painful. Blocked zoom, a missing language, and low contrast all make people work much harder than they should.
Moderate6 pointsStructure and navigation problems. A skipped heading level or a missing main landmark slows people down without stopping them.
Advisory2 pointsGood practice worth fixing when you are already in the file. Generic link wording is the clearest example.

Checks that have nothing to look at are marked not applicable and do not affect the score. A page with no tables is not rewarded or punished for table headers.

Common Failures

Six problems this finds on almost every site

These six account for the bulk of what an automated scan turns up, and every one of them is a small, contained fix.

🖼️

Images with no alt attribute

The most common failure of all, and the easiest to fix. A missing alt attribute means a screen reader has nothing to announce, so whatever the image communicated is simply gone.

Add alt to every img
🏷️

Placeholders used as labels

A placeholder disappears the moment somebody types, and it is not reliably announced as the field name. If the only label is grey text inside the box, the field is effectively unnamed.

Use a real label element
🎨

Low contrast body text

Light grey on white looks calm in a design file and fails in daylight on a phone. Normal text needs 4.5:1 against its background, and large text needs 3:1.

4.5:1 for normal text
⌨️

Clickable divs

A div with a click handler cannot be focused or triggered with a keyboard. Anyone who does not use a mouse can see the control and cannot press it.

Use a real button
🔗

Icon-only links with no name

Social icons and close buttons are the usual culprits. Without an aria-label or alt text on the inner icon, they are announced as just "link" or "button".

Label icon controls
🔍

Zoom disabled on mobile

user-scalable=no still appears in plenty of templates. It stops people from pinching to enlarge text, which is often the only adjustment they need.

Never block zoom

Best Practices

8 ways to make the fixes stick

All CommonNinja tools mentioned below are free and need no sign-up. Use these while you work through the report and after you ship the fixes.

01

Fix the critical failures first

Sort by severity and work down. One unlabelled checkout field costs a real customer far more than twelve headings in the wrong order.

02

Check templates, not just pages

Most failures live in a header, a card component, or a form partial. Fixing the template once repairs every page that uses it, so scan one page per template rather than every URL.

03

Try the page with only a keyboard

Put the mouse down and tab through. If you cannot see where focus is, or you get stuck inside a menu, no automated tool will tell you but every keyboard user will feel it.

04

Write alt text for meaning, not description

Ask what the image is doing on the page. A product photo needs the product, a chart needs its conclusion, and a decorative flourish needs an empty alt so it gets skipped.

05

Keep one h1 and step levels in order

Headings are the table of contents screen reader users navigate by. Choose the level for the structure and use CSS for the size.

06

Test the contrast of your real palette

This tool can only measure contrast set inline, so check your brand colors directly. Build the palette once with contrast in mind and the problem stops recurring.

Use the Color Palette Generator →

07

Sort out heading structure while you are in there

Heading order affects both accessibility and how search engines read your page, so it is worth doing properly once.

Use the Heading Structure Analyzer →

08

Re-scan after each deploy

Accessibility regressions arrive with new components, not with old ones. A scan after each release catches them while the change is still fresh in your head.

Glossary

Accessibility terms, briefly

Six terms that come up in every accessibility conversation and ticket.

WCAG
The Web Content Accessibility Guidelines, the W3C standard that most accessibility law and policy points at. WCAG 2.2 became a W3C Recommendation in October 2023 and is the version this tool maps its checks to.
Level A, AA, AAA
WCAG conformance levels. A is the minimum, AA is what most policies and procurement rules ask for, and AAA is a stricter target that is rarely required across a whole site.
Accessible name
The text assistive technology announces for a control. It can come from the visible text, an aria-label, an aria-labelledby reference, or alt text on an image inside the control.
Landmark
A region of the page with a defined role, such as main, nav, or footer. Landmarks are the shortcuts that let someone skip repeated blocks instead of tabbing through them.
Contrast ratio
How far apart two colors are in relative luminance, written as a ratio. Normal text needs at least 4.5:1 against its background, and large text needs 3:1.
Screen reader
Software that reads a page out loud and lets someone navigate by headings, links, landmarks, and form fields. It relies entirely on the markup being correct.

FAQ

It is a tool that scans a web page against the Web Content Accessibility Guidelines and reports what is broken. This one runs 21 automated checks over the page HTML, covering alt text, form labels, link and button names, heading structure, language, keyboard reachability, ARIA references, iframe titles, zoom, and inline contrast. Each finding maps to the WCAG 2.2 success criterion behind it and comes with a plain-English fix.
Enter the address of the page you want to check and press Check accessibility. We fetch the page, run every check over the HTML it returns, and list the failures worst first. If the page needs a login or builds itself with JavaScript, switch to Paste HTML and the same checks run locally in your browser tab instead.
Yes, completely free. No account, no sign-up, no credit card, and no limit on how many pages you scan.
No, and no automated tool can tell you that. Automated checks catch mechanical failures such as a missing alt attribute or an unlabelled field. They cannot judge whether alt text is accurate, whether focus order makes sense, whether a custom widget works with a screen reader, or whether your copy is understandable. A clean report is a good baseline, not a compliance statement.
WCAG 2.2, which became a W3C Recommendation in October 2023. Every check names the specific success criterion and its conformance level, so a finding can go straight into a developer ticket.
The URL scan reads the HTML your server returns, before any JavaScript runs. If your page builds its content in the browser, most of that content is not in the HTML we receive, so the report will be thin. The tool warns you when a page returns very little markup. To check the finished page, open it in your browser, view the rendered source, and paste that into the Paste HTML tab.
Contrast can only be calculated when both the text color and the background color are known. This tool reads colors from inline style attributes, which it can see. Colors that come from a stylesheet need a rendered page with computed styles, which an HTML-level scan cannot produce. Check your brand palette directly rather than assuming a clean contrast result.
No. A URL scan is fetched, checked, and returned in one request with nothing kept afterwards. Pasted HTML never leaves your browser at all, because those checks run entirely on your own device.

Trusted by