Alt Text Suggester
Alt text isn’t one-size-fits-all — the image’s role decides the recipe. Tell the tool what job the image does (informative, decorative, functional, a complex chart, text-in-image, or one of a group) and it composes the right alt and the right markup: alt="" for decorative, the link destination for functional, a short alt plus a separate long description for charts, a verbatim transcription for text images. It reads the result back the way a screen reader would and lints it against WCAG 1.1.1 (and 1.4.5).
About this ToolHow it works, benefits & use casesTap to collapse
Most alt-text helpers treat every image the same — fill in a box, get a string. But alt text is not one-size-fits-all: the job an image does on the page decides the correct recipe. This tool walks the W3C alt decision tree for you. Pick the image’s role — informative (a photo or illustration that adds information), decorative (a spacer or flourish that adds none), functional (an image inside a link or button), complex (a chart, graph, diagram, or map), text-in-image (a picture of words), or one of a group — and it composes the right alt and the right markup. A decorative image resolves to alt=""; a functional image describes the link’s destination instead of the picture; a complex image gets a short alt plus a separate long description (figcaption, aria-describedby, or a collapsible <details>) because the data must live in real text; a text image is transcribed verbatim with a 1.4.5 warning. The tool reads the result back the way a screen reader would announce it, generates copy-paste HTML or JSX, and lints the alt against WCAG 1.1.1 pitfalls — empty alt on a non-decorative image, “image of” redundancy, filename-looking alt, over-125-character length, and keyword stuffing. There’s a second mode for pasting an existing alt to audit it, and the whole configuration is shareable via URL.
How to Use
- 1Answer the decision-tree question — what job does the image do? Pick informative, decorative, functional, complex, text-in-image, or group.
- 2Fill in only the fields that role needs: subject/action/context for informative, the link destination for functional, the chart name plus a long description for complex, or the verbatim words for a text image.
- 3Read the “Screen reader announces” preview to confirm the alt and how it’s spoken, and check the lint card for WCAG issues.
- 4For a complex image, choose how the long description is wired — figcaption, aria-describedby, or a <details> disclosure.
- 5Toggle HTML or JSX, then copy the generated <img> (or figure) markup, or share the URL with a teammate.
- 6Switch to “Lint existing alt” to paste an alt string, choose its role, and audit it against the same rules.
Key Benefits
- Role-driven: the image’s job (informative / decorative / functional / complex / text-in-image / group) picks the recipe
- Correctly produces alt="" for decorative images and keeps the attribute so AT doesn’t read the filename
- Functional images describe the link/button destination, not the picture (the alt becomes the control’s name)
- Complex images get a short alt plus a real-text long description via figcaption, aria-describedby, or <details>
- Generates the full, correct markup pattern per role in copy-paste HTML or JSX — not just a bare string
- Live screen-reader-style announcement preview so you hear what users hear
- Lints against WCAG 1.1.1 (and 1.4.5 for text images): empty alt, “image of”, filenames, length, keyword stuffing
- Separate lint mode to audit existing alt text, plus a shareable URL for handoff
Common Use Cases
- Deciding whether a hero photo is informative or decorative using the “would the page lose information?” test
- Writing the alt for a logo that links to the homepage so it announces “Home”, not “Company logo”
- Pairing a short alt with a real-text long description for a quarterly-revenue bar chart
- Transcribing a quote graphic verbatim — and getting the nudge to use real text instead (1.4.5)
- Describing a star-rating row once and using alt="" on the rest so it isn’t announced five times
- Auditing a content team’s existing alt attributes and explaining each WCAG violation
Screen reader announces
“Golden retriever puppy splashing through shallow surf on a sunny beach, graphic”
Informative — a concise description of what matters (subject + the salient detail). Keep it ≤125 characters and skip “image of”.
Informative image — HTML
<img src="…" alt="Golden retriever puppy splashing through shallow surf on a sunny beach" />
1.1.1 Non-text Content (A)Write a concise description of what matters: the subject plus the one salient detail. Aim for ≤125 characters. Skip "image of".
What job does the image do?
The image adds information the surrounding text does not — a photo, illustration, or icon that the reader would miss if it were gone.
Describe the image
Output
The alt decision tree
Good alt text starts with one question: would the page lose information if this image disappeared? If not, it’s decorative → alt="". If the image is inside a link or button, it’s functional → describe the destination, not the picture. A chart or diagram is complex → a short alt plus a long description in real text. A picture of words is text-in-image → transcribe verbatim. Otherwise it’s informative → a concise description of what matters.
Why the role matters
- The same photo needs different alt as a hero image vs. a logo that links home.
- A 200-character alt on a chart is unusable — the data belongs in text on the page.
- A missing alt is worse than an empty one: screen readers fall back to reading the filename.
Was this tool helpful?
Share Your Experience
Help others discover this tool!
Related tools
- Lorem Pixel GeneratorGenerate placeholder image URLs
- Image Optimization CalculatorPlan responsive images — recommended breakpoints with ×1/×2 DPR, ready-to-paste srcset/picture/Next.js <Image> markup, per-format byte estimates, and total savings vs shipping the full-size original
- PNG to ICOConvert PNG images to multi-resolution .ico favicons at any size
- ARIA Label GeneratorGenerate accessible names and preview what a screen reader announces
- Focus Order ValidatorVisualize DOM order vs tab order and catch positive-tabindex bugs
- Screen Reader Text GeneratorGenerate sr-only / visually-hidden text + CSS, with a focusable variant
Because alt text is not one-size-fits-all — the same image needs different alt depending on the job it does. A photo used as decoration takes alt=""; the same photo used as a homepage logo link takes “Home”; as a standalone hero it takes a description of what it shows. The role is the single most important decision, so this tool makes you choose it first and then applies the matching recipe automatically.
Start with one question: would the page lose information if the image were gone? If no, it’s decorative (alt=""). If the image is inside a link or button, it’s functional — describe the destination. If it’s a chart, graph, diagram, or map carrying data, it’s complex and needs a long description. If it’s essentially a picture of text, it’s text-in-image. If several images form one unit, it’s a group. Everything else is informative. That sequence is the W3C alt decision tree, and the About panel lays it out.

