What it does
Alt text is the sentence a screen reader says in place of a picture. It is one attribute, it is usually written last, and it is the piece of a page most likely to be filled with whatever the camera called the file. This page is where you write that sentence and where it gets read back to you honestly.
Say plainly what that means before you open anything: you do the naming. There is no step here where a machine looks at your photograph and says what it is of, and no release of this site in which one is hidden behind a button. That takes a vision-language captioning model; this site doesn’t run one yet, and it will not fetch one from a third-party hub or send your picture to an API instead — so rather than dress that up, the site is built around the parts that are solvable.
The solvable part is the reading. A great deal of what goes wrong in alt text is structural — a redundant opening, a file name nobody replaced, a keyword list, a sentence that runs past what a listener will sit through — and structure is something a program checks reliably. Every finding here names the problem and the edit in the same breath, the grade is nothing but the sum of the findings, and the whole thing re-runs on every keystroke, so there is no button to press and no point at which you have finished and find out you have not.
Between the picture and the writing sits evidence. Opening a file here gets you its palette, its light and contrast, where the detail gathers, whether a strong horizontal line crosses it, the camera’s own date and model, and where rows of text sit. Press for them and three small detectors run on your device: one places faces, one maps where people are, one estimates what is near and what is far. None of that is recognition and none of it is dressed as recognition. Each fact becomes a clause you can point at — the picture lights up with the evidence behind it — and the clauses you keep are assembled around the subject you type into a draft that is yours to edit.
The order of operations
The file is read where it sits. The browser decodes it, the orientation flag is resolved before anything is measured — a photograph narrated sideways is described with total confidence and total wrongness — and small working copies are drawn for the measurements: 192 and 256 pixels for colour and light, 900 for finding rows of text, and the fixed inputs of whichever detector you ran. Resolution is nearly irrelevant to what this page does, which is why the megapixel guardrails cost it little: a sixty-megapixel photograph and a one-megapixel one are the same small copies by the time they are measured.
Then the reading runs, and keeps running. Every keystroke re-grades the field, so there is no button to press and no moment where you have finished and find out you have not. Findings are ordered by what they cost: the ones that stop the image working, then the ones that waste the listener’s time, then the conventions. A grade sits beside them and is nothing more than the sum of what was found — a letter with no findings under it would be a number, and numbers do not get pictures described.
Three strings the checker marks, and what it says to do
As writtenIMG_4021.JPG
InsteadA grey tabby asleep on a stack of library books.
A file name is announced letter by number by letter and tells the listener only that nobody wrote the alt text. This is the single most common finding on a real site, and it is graded as a blocker rather than a slip.
As writtenImage of a woman holding a camera, photo
InsteadA woman holding a camera up to her eye at the edge of a crowd.
The element already announces itself as an image before a word of your text is read, so the opening and the trailing noun are both heard twice. Stripping them is the one edit this page will make for you, because it cannot change the meaning.
As writtensunset, beach, holiday, travel, summer, vacation
InsteadThe sun setting behind a line of empty deckchairs on a wide sand beach.
Six fragments with no verb are read out one at a time with nothing to hold them together. The keywords survive inside a sentence; what does not survive is the listener's patience.
What it opens
Eight containers decode through machinery your browser already has: JPG, PNG, WebP, GIF, BMP, TIFF, ICO and AVIF. The ninth is the one your phone probably writes. A HEIC has no native decoder in most browsers, so this page carries a WebAssembly one and collects it only at the moment a HEIC turns up — which means the cost lands on the visit that needs it and on no other.
Three container details change what the page says. A format that can hold more than one frame gets a note saying only the first was read, because a description of frame one of an animation is a description of one ninetieth of the file. Transparency is composited onto mid-grey rather than white before anything is measured, so a white logo on an empty background still has edges to count instead of disappearing. And a four-component JPEG — CMYK or YCCK — is converted on the way in, because a description of an inverted decode is a description of a photograph nobody took.
Past roughly 32 megapixels, or 16 on iOS, the page offers a lighter working copy as a question with two reasonable answers rather than as a refusal. Past 100, or 40 on iOS, it declines and says by how much. Since everything here is measured on a thumbnail, agreeing to the lighter copy costs you nothing at all.
Two things this page will not do
Both are limits of what is actually built, not modesty about it.
- It does not name what a photograph is of. No captioning model runs here, so the subject is the one thing you type; the draft around it is built from what was measured or detected. Text is different: printed English and Hindi in a picture can be read on your device, with Read on the Visible text tab or on the image to text page.
- The checker reads your sentence, not your photograph. It can tell you that a string is too long, repeats itself, opens with a phrase that gets announced twice, or is a file name nobody replaced. It cannot tell you that the dog is a fox. The detectors can place faces and people, but touching people count as one and a face turned away is missed — so treat every count as a starting point, and read the draft against the picture before it goes anywhere.
Questions people ask
Does this write the alt text for me?
Not the way a captioner would. Recognising what a photograph is of takes a vision-language model, and none runs here — no third-party model is downloaded and no picture is sent to an API to get one. What the page does is assemble a draft from two sources: the subject you name, and facts it can stand behind — colour, light, layout, the camera's own notes and, if you press for them, where faces and people are and what is near or far, found by three small models running on your device. Every clause shows its evidence, you edit the draft, and the checker reads what you keep.
What is the checker catching that I would not catch by reading it?
Catching the seven or eight failures that survive a careful read because they are invisible on the page and only audible through a screen reader. A leading 'Photo of' that gets announced twice. A file name that nobody replaced. Punctuation that runs one sentence into the next. A caption sitting under the image saying the same words. None of those look wrong in a browser; all of them cost a listener something.
Why 125 characters, and why is going over it only a note?
Because it is a working convention rather than a requirement. No success criterion in WCAG names a length at all, and the figure comes from what older screen-reader configurations would read in one pass. A photograph carrying real detail is allowed to run past it, and the checker marks it in amber rather than red for exactly that reason. There is a page on this site about where the number came from.
What happens if I open a screenshot?
The page says it looks like a page of text and shows the arithmetic behind that reading — the proportion of pixels at pure black or white and how few distinct colours the image uses. The Visible text tab boxes each row of type, and its Read button reads the printed English or Hindi on your device, so the words can go into the field; the image to text page does the same with more control. When the picture is mostly text, the text is its alternative. If the file really is a photograph that happens to be very high contrast, ignore the warning; everything else works the same.
Is an empty alt attribute ever the right answer?
Often. A rule, a flourish, a spacer or an image that repeats the sentence beside it should be announced as nothing at all, and the way to say nothing is an attribute that is present with an empty value. Tick the decorative switch and the checker inverts: empty becomes correct and a description becomes the fault it is.
Does anything I type here get sent anywhere?
No, and there is nowhere for it to go — this site is a set of static files with no server behind it and no route that accepts a request. The picture is decoded by the browser, measured, and forgotten when the tab closes. The text stays in the field until you copy it. The only downloads are the optional detectors, and they travel the other way: model files come to your picture, never the picture to them.
The same engine, a different job
Three other routes run the same checker with a different ruleset, because a caption, a long description and an alt attribute are three different jobs that happen to start from one picture. Which ruleset is loaded is the only thing that changes between them; the measurements, the detectors and the grading are shared.
Where the reasoning is written down
A finding has room for a problem and a fix, and that is all it should have. It has no room for where the 125-character convention came from, or for why a screen reader saying “graphic” before your first word changes what the first word should be, or for the difference between what WCAG 1.1.1 actually requires and what an auditor has been told to look for. Four pages carry that, and the index below says which one answers which question.
They are worth reading in the order they are listed there rather than in the order the findings send you to them. The length page is what most people come for; the one about images that should say nothing at all is the one that changes how people write.
- GuidesSix written pages on the standards, the conventions, images of text and what no checker can judge.
- How long alt text should beWhere 125 characters came from, and the cases that are allowed to break it.
- What a screen reader announcesThe order NVDA, JAWS and VoiceOver read an image in, and what they add themselves.
- When the right alt text is noneThe images that want an empty attribute, and why describing them is worse.
- WCAG 1.1.1 and GIGW, in plain termsWhat the success criterion asks for and what an Indian government audit checks.



