AI Alt Text Generator
An alt text generator that looks at the photo and writes the first draft, using Microsoft's Florence-2.
Runs entirely in your browser — your files and text never leave your device. The AI model downloads the first time you run this tool, then stays on this device — so later runs work offline.
Downloads the image captioning model (~262 MB) the first time you run it, then works offline.
Drag & drop or paste an image here, or
Runs on your device — the model downloads once (~340 MB on Chrome or Edge with WebGPU, ~260 MB on other browsers), then works offline. It's much faster with WebGPU and describes the scene and main subjects.
How to use
- Give it a picture: drag one onto the Image box, paste from the clipboard, or press Take photo if the device has a camera.
- Leave Detail on Detailed for a fuller description, or switch to Brief when you want a single short line.
- Press Describe image. On the first run the progress bar is tracking the model download, and Cancel sits right beside the button if you started it by accident.
- The caption lands in the Alt text box, which is read-only. Copy it with the button above the box and do your editing where the alt text is actually going.
About the model
Every image on a page is supposed to have alt text, and writing it for the fortieth product photo is where most people quietly give up. Hand the picture to this alt text generator and what you get back is a sentence to edit instead of an empty field to stare at.
The model is Florence-2 base, Microsoft's small vision-language model, MIT licensed and converted to ONNX. It downloads once, about 341 MB on Chrome or Edge where WebGPU is available and about 262 MB everywhere else, then loads from the browser cache on every later run. The image itself never goes over the network; the weights are the only traffic, which is the part that matters if you're captioning client work or your own family photos. WebGPU is dramatically quicker. On WebAssembly a caption is a wait rather than a blink.
Detail arrives set to Detailed, which asks Florence for its more detailed caption and lets it run to 256 tokens, usually two or three sentences about the scene. Brief stops at 64 and gives you one short line, which is closer to what alt text actually wants. Read whichever you pick before you use it. Florence gets the obvious subject of a clear photo right almost every time, but it won't give you the breed of the dog or a trustworthy count of the people in the frame, and a cluttered shot can come back confidently wrong.
Good to know
- It describes, it does not read. Words printed inside the image, the labels in a screenshot, a shop sign in the background: none of that comes through. OCR is the tool for that job.
- One image per run, with no queue. Forty product photos means forty rounds of drop, press, copy.
Frequently asked questions
How long should alt text be?
A screen reader announces the whole attribute in one breath, so the working convention is to stay somewhere near 125 characters. Brief usually lands inside that. Detailed often runs past it, which is why its output is better treated as raw material to cut down.
Which model is writing these captions?
Florence-2 base, the fine-tuned variant, in the onnx-community ONNX build. It's Microsoft's model and MIT licensed. Brief asks it for the CAPTION task and Detailed asks for MORE_DETAILED_CAPTION, which is why the two read so differently on the same photo.
Why is the first caption slow and the rest fast?
The first press is downloading weights, roughly 262 MB through WebAssembly or 341 MB through WebGPU. Those land in the browser's cache. Every run after that loads from disk, so only the generation itself costs you time, and the tool keeps working with the network off.
Is the generated line good enough to ship as alt text?
Rarely, on its own. A caption states what is in the frame. Alt text is meant to carry what the image is doing on that particular page. A photo of a laptop in a hero banner and the same photo inside a repair guide want completely different sentences. Start from the generated line and add the part only you know.
What should I put on a decorative image?
An empty alt attribute, not a description. Empty tells a screen reader to skip the image entirely, which is the right call for dividers, background flourishes, and icons sitting next to a text label that already says the same thing. Captioning those just makes the page noisier to listen to.
Can it describe a screenshot or a chart?
Not usefully. You'll get shapes and layout back, never the axis labels or the numbers, because reading text is a different job from describing a scene. Pull the words out with OCR and write the alt text from those.
Why does the caption sometimes start mid-sentence?
Florence likes to open with “In this image, we can see”. That opener gets stripped before you ever see it, along with duplicated words and stray spaces in front of punctuation, and the first letter is capitalised again afterwards. Now and then the trim takes a word you'd have kept.
Does this work on a phone?
It does, and Take photo hands the camera shot straight to the model. The catch is that download, a couple of hundred megabytes over mobile data. Do the first run on wi-fi and the cached copy carries you from then on.
What image formats can I give it?
Anything your browser can decode: JPEG, PNG, WebP, GIF, AVIF. The picker is set to image/* so it offers you all of them. A HEIC straight off an iPhone is the awkward one, since only Safari opens those without a conversion step first.
Missing something in AI Alt Text Generator? Suggest a feature →