Image alt text, dimensions and lazy loading explained
Contents
Images affect three things findable cares about: whether a machine can understand them, whether the page jumps as it loads, and how much data loads up front.
Which checks cover images?
| Check id | What it tests | Passes when |
|---|---|---|
img_alt | Every image has non-empty alt text | None missing or blank (findable flags alt="" even where valid for decoration) |
img_dimensions | Every image has width and height | None missing |
img_alt_quality | Alt is not a filename or placeholder | No alt like IMG_1234 or photo.jpg |
img_alt_length | Alt is not too long | 125 characters or fewer |
img_lazy_loading | Few images load eagerly | 5 or fewer without loading="lazy" or fetchpriority="high" |
img_modern_format | Modern file types | At least half are WebP, AVIF or SVG |
When a page has no images, the first two pass and the others are skipped.
How do you write good alt text?
- Describe what the image shows or means in this spot.
- Be short. Stay under 125 characters.
- Do not start with "image of". The reader already knows.
- Never use the filename.
IMG_2043.jpgorscreenshot-3failsimg_alt_quality. - For truly decorative images an empty
alt=""is correct WCAG, but findable counts it as missing andimg_altwill fail. Prefer real text, or move decoration to CSS backgrounds.
<img src="/mug.webp" alt="Blue ceramic mug on a wooden table" width="800" height="600">
How does lazy loading work?
Add loading="lazy" to images that are off screen at first. The browser fetches them only when the reader scrolls near. Leave the main image at the top without it, and consider fetchpriority="high" for that one. findable does not count a high priority image as eager.
<img src="/hero.webp" alt="Mug collection" width="1200" height="600" fetchpriority="high">
<img src="/detail.webp" alt="Glaze close-up" width="800" height="600" loading="lazy">
Why add width and height?
With both set, the browser knows the shape before the file arrives and holds the space. Without them, text jumps down when the image appears. That jump hurts the reader. The full SEO list is in every SEO check.
What file types pass?
img_modern_format looks at the file extension of each recognised image (jpg, png, gif, webp, avif, svg). It passes when WebP, AVIF or SVG make up half or more. Photos usually shrink well when converted to WebP or AVIF.
Key takeaways
- Every image needs non-empty
alt, pluswidthandheight. - Keep alt under 125 characters and never use a filename.
- Lazy load below-the-fold images, not the main one.
- Prefer WebP, AVIF or SVG.
- The wider list is in every SEO check.
FAQ
- Should decorative images have alt text?
- Yes, for truly decorative images an empty alt is correct under WCAG and screen readers skip them. findable still counts an empty alt as missing, so img_alt fails. Prefer short real text, or move decoration to CSS.
- Should I lazy load every image?
- No. Lazy load images below the first screen. The main image at the top should load right away, and fetchpriority high marks it as important.
- Why do I need width and height?
- They let the browser reserve space before the image arrives, so the page does not jump while it loads.
- Is WebP required?
- No. The check passes when at least half of your recognised images are WebP, AVIF or SVG.
How does findable score a page?
| Family | Weight | Question it asks |
|---|---|---|
| SEO | 50% | Can crawlers read and index this page? |
| AEO | 25% | Is it easy to lift an answer from this page? |
| GEO | 25% | Does the page give a generative model a reason to cite it? |
The hosted audit waits up to 10 s for a page and fetches at most 5 MB. It reads robots.txt and llms.txt up to 512 KB each.
More guides
- Every findable AEO Check ID and How to Fix It
- All 35 AEO checks in findable explained, from aeo_faq to aeo_summary. See what each id tests, how loose the test is and how to fix it. AEO is 25% of the score.
- Canonical Tags and Duplicate Content: How to Get Them Right
- Use one canonical link per page that points to its own absolute URL. Learn the checks canonical, canonical_self and canonical_absolute and fix them.
- FAQ Schema for Answer Engines: Markup and Checks
- How to add FAQPage JSON-LD that answer engines can lift, and how findable tests aeo_faq, aeo_faq_count and faq_valid. Includes a working example.
- Get Findable in 15 Minutes: A Step by Step Checklist
- Install findable, audit a page and your site, fix the top failures, then add MCP, the web UI, the API and a CI gate. Every step has a copy-paste command.
- Every findable GEO Check ID, Plus AI Crawler Checks
- All 27 GEO checks in findable explained, plus the unscored Site checks for GPTBot, ClaudeBot and llms.txt. GEO is 25% of the score. Fixes included.
- JSON-LD Schema Basics: What findable Checks and Why
- Learn what JSON-LD is, which schema.org types findable validates, and how to fix jsonld_valid, jsonld_context and empty or relative values.
- llms.txt: What It Is and How findable Checks It
- llms.txt is a plain Markdown file at your site root that points AI tools to your key pages. See the llms-txt check and how to write the file.
- How to Write a Meta Description That Passes findable
- Write a meta description of 120 to 160 characters, one per page, that matches the page. See the checks desc_exists, desc_length and desc_single.
- Open Graph and Twitter Cards: Fix Your Share Previews
- Add og:title, og:description, og:image, og:url and twitter:card so links unfurl well. See every social check findable runs and how to pass it.
- robots.txt and AI Crawlers: GPTBot, ClaudeBot, PerplexityBot
- How robots.txt rules decide whether GPTBot, ClaudeBot, PerplexityBot and Google-Extended can fetch your page, and how findable tests each one.
- Every findable SEO Check ID and How to Fix It
- A plain guide to all 98 SEO checks in findable, from title_length to csp. See what each id tests, when it passes and the fix. SEO is 50% of your score.
- SEO vs AEO vs GEO: The Difference in Plain Words
- SEO, AEO and GEO each target a different reader: a search crawler, an answer box, or a generative AI model. See what wins in each and how to check them.
- Why AI Answer Engines Skip Your Site and How to Fix It
- ChatGPT, Perplexity and Claude may ignore your pages for five fixable reasons, from robots.txt blocks to missing answers. Learn each cause and its check id.