§
§ · free tool

Image alt checker. Every <img> in one paste.

Paste an HTML document; we extract every <img> tag and run six checks per image: alt presence, alt emptiness (decorative), suspicious filename-as-alt, keyword stuffing, length, and decorative-but-clickable conflict. WCAG 1.1.1 alignment.

Paste HTML; we walk every <img> in the document and check six conditions per image. Missing alt, decorative-empty alt, filename-as-alt, keyword stuffing, length out-of-range, and clickable-but-empty conflict are surfaced with the offending tag in context. Pure browser DOM parsing.

Try:
summary
Paste HTML and click Scan.
Sources used by this tool
  • WCAG 2.1 SC 1.1.1 Non-text Content — the canonical alt-text requirement
  • W3C WAI Images Tutorial — decorative vs functional vs informative
  • HTML parsing via the browser's built-in DOMParser (DOM Standard) — no third-party library
  • Filename-pattern detector: regex matching IMG_, DSC, screenshot- prefixes + .jpg/.png/.gif/.webp suffixes

All checks run in JavaScript on your device. No fetch, no log.

§ 02 · three states · why each matters

Missing vs empty vs descriptive.

Missing alt means the <img> tag has no alt attribute at all. Screen readers fall back to announcing the file path or filename, which is almost always meaningless — a user hears "image: forward-slash assets forward-slash hero dot jpg" and gets nothing useful. WCAG 2.1 SC 1.1.1 explicitly requires every non-decorative image to have alt text, so missing alt is a Level A failure.

Empty alt (alt="") is intentional and correct for decorative images: a background grain texture, a stylized horizontal-rule divider, an icon that visually duplicates an adjacent text label. The empty string tells the screen reader "skip this — it conveys no information beyond visual styling." Empty alt is required for these cases; without it, the screen reader announces the filename and clutters the listening experience.

Empty alt inside a link is a serious failure even though the alt itself is technically valid syntax. A clickable image with empty alt has no accessible name; the screen reader announces "link" with no description. Users cannot know what the link does. Either give the image meaningful alt describing the link's destination ("Book a consultation"), or wrap the image with the link text included visibly outside the image.

Descriptive alt describes the image's role in context. The same photo on a team page might have alt "Maya Chen, Head of Engineering, in the NYC office"; on an article about Series A funding might have alt "Maya Chen, founder, presenting at Y Combinator demo day". Same image, different alt because the role differs. Generic single-word alt ("image", "photo") is technically present but conveys nothing — we flag it as a warning.

Filename-as-alt is the symptom of a CMS or export pipeline that copied the filename into alt by default. alt="IMG_4523.jpg", alt="DSC_002.png", alt="Untitled-3.gif": all useless. Many CMS systems do this if no alt is provided at upload time. The checker flags any alt matching common camera-export or auto-numbered patterns.

Keyword stuffing in alt text was a 2008-era SEO trick that no longer works and now risks WCAG-spam penalties. Alt text should describe the image's function in context, not chant a list of every service keyword. The checker uses a simple heuristic — repeated words, missing verbs, eight-or-more comma-separated terms — to flag stuffed alts.

§ 03 · questions

Six questions users ask.

What does the alt attribute do?

The alt attribute provides a text alternative when an image cannot be displayed (slow connection, broken URL) and is read aloud by screen readers for users who cannot see the image. WCAG 2.1 Success Criterion 1.1.1 requires every non-decorative image to have meaningful alt text. Decorative images (purely visual, no information conveyed) should have alt='' (empty string) so screen readers skip them. Missing alt entirely means the screen reader announces the filename, which is almost always wrong.

Empty alt vs missing alt — what's the difference?

alt='' (empty string) is intentional: it tells the screen reader 'this image is decorative, skip it.' Missing alt entirely (no alt attribute) makes the screen reader fall back to announcing the image's URL or filename, which is rarely meaningful. Decorative images should always have alt='' rather than no alt.

What is filename-as-alt and why is it bad?

When alt text reads like a filename (IMG_4523.jpg, dsc-002.png, screenshot-2024-04-15.png) it suggests the page was generated by a CMS or export pipeline that copied the filename into the alt by default. These alts convey nothing useful — a screen reader user hears 'image: IMG underscore 4523' which is meaningless. We flag any alt that contains a file extension, sequential numbering, or DSC/IMG/SCREENSHOT prefixes.

What about keyword stuffing in alt?

Stuffing keywords into alt text was a 2008-era SEO trick that no longer works and now risks WCAG keyword-stuffing penalties. The rule: alt text should describe the image's function in context, not chant a list of every service keyword. 'Hero photo of NYC team during planning session' is good; 'shopify development agency NYC custom theme web design SEO' is bad.

How long should alt text be?

Aim for 8-125 characters. Too short usually means the alt is too generic ('image', 'photo', 'logo' alone). Too long means the alt is reading like body copy rather than a label. Most useful alts are one sentence (8-20 words) describing what the image shows and why it matters in context. Complex images (charts, infographics) should have longer descriptions in adjacent text or via aria-describedby pointing to a fuller description.

Does this tool log my HTML?

No. The HTML is parsed entirely in your browser using DOMParser. Nothing is sent to Digital Heroes servers. No signup, no email, no analytics beacon includes the HTML content.