Sense Check

Free accessibility checker for alt text, links, headings and labels

Does this page make sense to someone who can't see it?

Sense Check reads the words a screen reader reads out: alt text, link text, headings and form labels. Automated checkers find the missing ones. Sense Check asks whether the ones that are there mean anything, and sends only the unclear ones to you.

One public page. Usually three to ten seconds.

What a screen reader announces

  1. Image, IMG_2034.jpgFixThe alt text is a file name WCAG 1.1.1
  2. Heading level 2, Oxford shirt in pale blueFineDescribes the section after it WCAG 2.4.6
  3. Link, click hereCheckGeneric link text: does the sentence say where it goes? WCAG 2.4.4
  4. Edit text, your emailFixA field labelled only by its placeholder WCAG 3.3.2
An example page, and what Sense Check makes of each line a screen reader reads out.

What it checks

Deque's coverage report found that automated tools catch about 57% of accessibility issues by volume. Whether a piece of text means anything has always been left to a person, and the European Accessibility Act has covered e-commerce in the EU since 28 June 2025. Rules settle thirteen certain problems; Jev asks the questions that need judgement.

  • ImagesWCAG 1.1.1 · 2.4.4

    Rules find

    • An image with no alt attribute
    • Alt text that is a file name
    • A linked image with empty alt text
    • Generic alt text such as “image” or “logo”

    Jev is asked

    Would this alt text tell someone what the image shows? Is it a keyword list or a copy of the caption? For a linked image, does it say where the link goes?

  • LinksWCAG 2.4.4 · 4.1.2

    Rules find

    • A link with no name
    • Generic link text such as “click here”

    Jev is asked

    Can someone tell where the link goes from its text and the sentence around it? Could the text mislead them about the destination?

  • HeadingsWCAG 1.3.1 · 2.4.6

    Rules find

    • An empty heading
    • Heading levels that skip
    • No h1 on the page

    Jev is asked

    Does each heading describe the section it introduces?

  • Form fieldsWCAG 3.3.2 · 4.1.2

    Rules find

    • A form field with no label
    • A field labelled only by its placeholder

    Jev is asked

    Does the label say what to enter?

  • The pageWCAG 2.4.2 · 3.1.1

    Rules find

    • No declared language
    • No title

How it decides

  1. It reads the page the way a screen reader meets it

    One public page, as the server sends it. Hidden parts are skipped (hidden, aria-hidden, display: none), and so are images a script fills in later, because a screen reader never meets them either.

  2. Rules settle what is certain

    A missing alt attribute or a field with no label needs no judgement. Those thirteen problems are reported without asking anyone.

  3. Jev judges the rest

    Jev, a model from TypeSafe AI, gets typed questions in batches, each pointing at its item by path, and answers each with a probability.

  4. The probability decides

    At 70% or more the item is fine. At 30% or less it needs fixing, with what is wrong. Anything in between is marked for a person to check, with Jev's probability shown.

Jev's probability that an item is fine
  1. 0 to 30%Fix
  2. 30 to 70%A person checks
  3. 70 to 100%Fine

Try it on a page built to fail

The W3C keeps a demo page that is inaccessible on purpose. When Sense Check was built it gave 38 findings there, and grouped by what they say, they read as five cards instead of a wall of errors.

Check the W3C demo page

What it will not do

  • It cannot see images. It judges alt text from the text itself, the file name, the caption and the words around the image.
  • It reads the page as served, not what scripts add after it loads.
  • It checks one page at a time.
  • It is a first pass, not an audit, and it does not replace testing with a screen reader.

WCAG 2.2 criteria it reads for

1.1.1
Non-text content
1.3.1
Info and relationships
2.4.2
Page titled
2.4.4
Link purpose (in context)
2.4.6
Headings and labels
3.1.1
Language of page
3.3.2
Labels or instructions
4.1.2
Name, role, value

Use it from code

The same report is available as JSON, under the same limits: ten checks a minute per address, and twenty checks of any one site in ten minutes.

GET /api/check?url=example.com

Questions

Is Sense Check free?

Yes, with no sign-up. Each address can run ten checks a minute, and any one site can be checked twenty times in ten minutes.

Which WCAG success criteria does it cover?

Eight, all at level A or AA: 1.1.1, 1.3.1, 2.4.2, 2.4.4, 2.4.6, 3.1.1, 3.3.2 and 4.1.2. Link purpose from the link text alone (2.4.9) is level AAA, so it judges link purpose in context instead.

How is it different from an automated accessibility checker?

Automated checkers test whether an alt attribute, a label or a link name exists. Sense Check tests that too, then asks whether the words in them tell a listener anything. Use it alongside an automated checker, not instead of one.

What is Jev?

A model from TypeSafe AI that answers typed questions with a probability. Sense Check asks it whether each alt text, link, heading and label means something, and the probability decides between fine, fix and check. Without Jev the rules run alone, generic link text is marked for checking, and the report says how many items were left unjudged.

Does it store the pages I check?

No. There is no database. A report is kept for five minutes so a refresh does not repeat the work.

Can page text trick the AI?

Text on the page written to give instructions to an AI is kept away from Jev and flagged for a person to read.

Does it only work on WordPress sites?

No. It reads any public page on a standard port. It is one of three small tools for WordPress sites, which is why it sits alongside WP Front Door and Update Forecast.

Why was my page refused?

It fetches only public addresses on standard ports, and checks each redirect the same way. Private and local addresses, unusual ports and addresses with a username or password in them are refused.

Find the unclear alt text before a screen reader user does.

Go to the form