vibecheck0.3.0
Search visibilityseoimage-alt-missingwarning

Images missing alt text in Svelte

The alt attribute is how screen-reader users perceive an image and how search engines (and image search) understand it. An <img> with no alt attribute is opaque to both — the user hears only “image” or the filename. AI-generated markup frequently emits <img> tags with a src and nothing else.

Symptoms

  • Screen readers announce the filename or just “image”
  • Images never appear in Google Image search
  • axe/Lighthouse report “Image elements do not have [alt] attributes”

How VibeCheck catches it

In your widget · Problems

warningseoImages missing alt text

To your coding agent · MCP

agent › get_detected_issues
{ detector: "seo", issue: "Images missing alt text", threshold: "one or more <img> without an alt attribute" }

The same string in your widget and in your agent’s context — no screenshot, no copy-paste.

Root causes

  • Generated <img> tags include src but no alt
  • Dynamic images render without threading through an alt value
  • Decorative images omit alt entirely instead of using alt=""

The fix for Svelte

Svelte’s compiler emits an a11y-missing-attribute warning for <img> without alt.

svelte
<img src={photo.url} alt={photo.caption} />

Steps

  1. Add a descriptive alt to every content image
  2. Use alt="" for decorative images (not a missing attribute)
  3. For dynamic images, require alt text at the data layer

See the general, framework-agnostic fix →

FAQ

Is alt="" ever correct?
Yes — for purely decorative images (dividers, background flourishes), an explicit empty alt="" tells assistive tech to skip it. That is different from omitting the attribute, which VibeCheck flags.
What makes good alt text?
Describe the information the image conveys in context, concisely. Skip “image of” — screen readers already announce it is an image.
Does alt text help SEO?
Yes. It helps images rank in image search and adds relevant context to the page. It is also a legal accessibility requirement in many jurisdictions.