Open a photo

Write alt text with the picture openGive every photo the right words.

Open a photo and type what’s in it. The page builds the sentence around your words and checks it as you type — ready to copy.

Choose photoor drop it here · paste with Ctrl+V

Works with JPG, PNG, WebP, GIF, BMP, TIFF, AVIF and iPhone HEIC photos.

No photo handy?

Free · No sign-up · Photos stay on your device

A writer at a desk comparing a botanical photograph with the braille display beside her keyboard.
Alt textGraded A, 97 charactersA writer at a desk comparing a botanical photograph with the braille display beside her keyboard.

What happens when you open a photo

Nothing here recognises what is in your picture. You name the subject; the page measures the rest — colour, light, layout, and on request where faces, people and depth are — assembles a draft you edit, and grades what you keep against the faults that break alt text for a listener.

  • MeasuredColours, light, layout, orientation and the camera's own notes — arithmetic on your pixels.
  • Detected, if you askWhere faces and people are, and what is near or far, by three small models that run on this device. Counted and placed, never identified.
  • YoursThe subject. Nothing here names what is in a photograph, so you do — and every clause after it shows its evidence.

Read where it sits: the picture is decoded by this browser, and neither it nor your words go anywhere.

The grade, running on a sentence

Written by hand

A worked example. The sentence “A woman in a yellow raincoat stands at the end of a wooden jetty, looking out at a flat grey sea.” is typed out a clause at a time and this site’s checker grades it as it goes, finishing at A, 100 out of 100. Nothing read the drawing above it.

  • Blog posts
  • Product pages
  • School notices
  • Instagram captions
  • WhatsApp forwards
  • Screenshots
  • Hindi circulars
  • Charts and maps
  • Annual reports
  • Newsletters
  • Photo archives
  • Slide decks

Examples

The same photograph, described three ways

This is the checker running, not a picture of it. Every finding below was produced by the code that reads what you type in the field above, and it was produced when this page was built — which is why it is here before anything loads.

A writer at a desk comparing a botanical photograph with the braille display beside her keyboard.
  • What the camera called it — graded E, 40 out of 100

    IMG_4021.jpg

    • This is a file name, not a description. Say what is in the frame. A listener hearing IMG underscore four thousand and twenty-one learns nothing except that nobody wrote the alt text.
  • Written in a hurry — graded C, 76 out of 100

    Photo of a woman looking at a picture of a plant, image, accessibility, alt text, braille

    • "Photo of" is announced twice. A screen reader says "graphic" or "image" from the element itself before it reads a word of your text, so the listener hears the category, then hears it again. Start at the subject.
    • The sentence has no full stop at the end. Add one. It is the difference between a pause and the alt text running straight into whatever text follows the image.
  • Written for the listener — graded A, 100 out of 100

    A writer at a desk comparing a botanical photograph with the braille display beside her keyboard.

    • Nothing to report. Every check in the alt ruleset passed on this string.

Three steps, no account

From photo to words in a minute

  1. Open a photo

    Tap the button, drop a file, or paste a screenshot. It opens right here in the page.

  2. Say what’s in it

    Type the subject in a few words. Colour, light and layout are filled in around it for you to keep or drop.

  3. Copy the result

    The sentence is checked as you type. When it reads well, copy it or download it — done.

One question before you start

Do you have a picture and no sentence, or a sentence and no idea whether it works? Those are two different jobs and they open in two different places. The reading is the same in both: one checker, one ruleset, the same findings and the same grade.

You have the picture

Write one, with it open

The file is measured where it sits and the answer is scaffolded around a subject left blank. Up to four questions decide what kind of text the image needs before a word is typed, and they are these:

  1. Is this image inside a link or a button?
  2. Does it carry information the words around it do not?
  3. Is it a chart, a diagram, a map or an infographic?
  4. Is what it says mostly text?

One of the answers ends the job without a sentence at all: an image that carries nothing the page has already said should be announced as nothing.

You have the text

Check the ones you have

Paste an attribute out of a page you are auditing. No picture is needed and none is asked for — the checker reads the string, not the photograph, so a list of attributes can be worked through without the images they belong to.

Needs the image file
no
Raises a note past
125 characters
Called a problem past
250 characters

What it cannot tell you is whether the sentence is true of the picture. Nothing here has seen the subject, so nothing here can mark you wrong about it.

All tools

Popular tasks

The jobs this site is asked for most. Each one opens ready to work.

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.