You've just published a post with an image, but on the live page it's broken and you're staring at a question mark. You right-click, open the image URL, and it loads perfectly. So what's going on?
The image exists. The URL works. Yet the page still won't display it.
src path that resolves differently from the page's location, an HTTP image on an HTTPS page blocked as mixed content, hotlink protection or a CDN rule rejecting the page as referrer, or a lazy loading script that never swaps in the real src.Problems like this are easy to miss when you check a site one page at a time. Once a site has hundreds or thousands of images, the issues go well beyond one broken file: missing alt text, empty alt attributes, oversized images, wrong dimensions, poor formats, broken image URLs, images blocked from crawling, and images delivered badly to different devices.
A proper image SEO audit checks whether images can be loaded, crawled, understood, accessed, and delivered efficiently, not just whether the URL works when opened directly.
Why Image SEO Matters
Images support a page's content, help users understand a product or concept, and give search engines extra context, including visibility in Google Images. But they also cause problems when they're too large, inaccessible, incorrectly referenced, or impossible to crawl. Heavy images are one of the most common causes of a slow Largest Contentful Paint (LCP).
3,000px image shown at 600px
Looks fine to the visitor, but the browser downloads far more data than needed.
IMG_48291.jpg, no alt text
Same large file on desktop and mobile, with nothing describing it.
Neither makes the page unusable, but both belong in an audit.
Alt Text
Alt text describes the purpose or content of an image when it can't be seen, and it's read aloud by screen readers. For an image that communicates something useful, the alt attribute should describe what it conveys. Our guide to image optimization covers this in more depth.
alt="Technical SEO audit report showing crawl issues"Specific, useful context for users and search engines.
alt="SEO audit technical SEO audit website SEO audit best SEO audit tool"Helps no one understand the image.
Empty Alt vs Missing Alt
These look similar in a crawl but mean very different things, and auditors confuse them constantly.
alt="Sales chart, Q3"
Right for informative images.
alt=""
Tells assistive tech to skip it. Right for decorative images.
<img src="...">
No attribute at all. Screen readers may read the filename aloud.
An empty alt is not automatically an SEO problem. The issue is an important image with an empty or missing alt attribute, which leaves users with no alternative description.
Decorative Images
Some images are purely visual: background decorations, separators, icons beside text, and other elements that add no information. These generally shouldn't get descriptive alt text.
<img src="/images/section-divider.svg" alt="">
If the surrounding text already communicates the information, repeating it in alt text just adds noise for screen reader users.
Write descriptive alt text
Use alt=""
Image Filenames
Filenames give context before anyone looks at the image itself.
seo-audit-report.jpgIMG_29481.jpgUse short, descriptive filenames with hyphens between words. Avoid repeated keywords and extremely long names. Renaming an image that's already established across the site means updating every reference to it, so filename optimization is easiest before publishing.
Image Dimensions
Dimensions matter because browsers often download the full file even when it's displayed much smaller. A 3,000 × 2,000 image displayed at 600 × 400 wastes most of what's downloaded.
Intrinsic size vs displayed size
Roughly 25 times more pixels than the layout needs.
During an audit, compare each image's intrinsic dimensions with its displayed size. Large gaps flag images worth resizing or serving responsively. Also make sure <img> tags declare width and height attributes, so the browser reserves space and the layout doesn't jump as images load (Cumulative Layout Shift).
Responsive Images and srcset
Responsive images let a page offer different files based on device, screen size, and display density. Instead of every visitor downloading the same large file, smaller screens get smaller alternatives, which matters most on mobile connections.
The srcset attribute lists the available sources, and sizes tells the browser how wide the image will display:
<img
src="/images/seo-audit-800.jpg"
srcset="
/images/seo-audit-400.jpg 400w,
/images/seo-audit-800.jpg 800w,
/images/seo-audit-1200.jpg 1200w"
sizes="(max-width: 768px) 100vw, 800px"
width="800" height="533"
alt="SEO audit report showing technical issues">
Gets 400w
Small file for a small screen.
Gets 800w
Matches the layout width.
Gets 1200w
Extra detail only where it's visible.
When auditing, check whether large images are served unnecessarily and whether responsive markup is used where it makes sense.
Image Formats
| Format | Common use | Audit consideration |
|---|---|---|
| JPEG | Photographs and complex images | Check compression and dimensions |
| PNG | Transparency or lossless quality | Check whether the file is unnecessarily large |
| SVG | Logos, icons, vector graphics | Scales cleanly at any size |
| WebP | General web images | Often smaller files for many image types |
| AVIF | Modern web images | Very high compression where support and workflow allow |
To serve modern formats safely, the <picture> element lets the browser pick AVIF or WebP and fall back to JPEG:
<picture> <source srcset="/images/audit.avif" type="image/avif"> <source srcset="/images/audit.webp" type="image/webp"> <img src="/images/audit.jpg" alt="SEO audit report" width="800" height="533"> </picture>
The goal isn't converting every image to one format. The right choice depends on the image, required quality, transparency, browser support, and the site's delivery setup.
Lazy Loading
Lazy loading delays images far below the initial viewport until the user scrolls near them:
<img src="/images/example.jpg" loading="lazy" alt="Example image">
Images well below the fold, such as gallery items, comments, and footer graphics.
Hero images and anything visible on first load, especially your LCP image. Consider fetchpriority="high" on it instead.
During an audit, identify where lazy loading is used and whether it fits each image's position and importance. Lazy loading implemented with JavaScript can also hide images from crawlers that don't scroll, so native loading="lazy" is the safer default.
Broken Image URLs
A broken image is one that can't be loaded from the URL the page references. The HTML may contain <img src="/images/missing-image.jpg"> while the file no longer exists. Common causes:
- Deleted files
- Renamed directories
- Incorrect paths
- CMS changes
- Migration problems
- Simple typos
Look for image requests returning error responses and verify that important images actually load. They show up the same way as links to broken resources in a crawl.
Images Blocked From Crawling
An image can appear on a page and still be inaccessible to crawlers because its URL is blocked. If a page references https://example.com/images/product.jpg but that path is off-limits, the crawler can't retrieve it. When important images can't be crawled, check:
- robots.txt rules
- Server restrictions
- Authentication requirements
- CDN configuration
- Hotlink protection
- Other access controls
Disallow: /wp-content/ or Disallow: /assets/ that blocks the entire image directory.Image Links
Images can also be links:
<a href="/products/seo-tool"> <img src="/images/seo-tool.jpg" alt="SEO auditing tool"> </a>
When an image is the only clickable content, its alt text effectively becomes the link's anchor text, describing the destination to users and search engines. During an audit, find linked images and check whether they tell users enough about where the link goes. A linked image with an empty alt is an empty link.
Accessibility
Image SEO and accessibility overlap heavily. Ask these questions during an audit:
- Does each informative image have useful alt text?
- Are decorative images marked so they can be skipped?
- Does linked image content communicate the link's purpose?
- Is important information contained only inside an image?
- Do images display correctly at different screen sizes?
- Are broken images leaving users without important information?
Accessibility isn't just another SEO checkbox. The goal is content that works for people with different needs and browsing conditions. Text locked inside an image is also invisible to many AI tools, so see how to make infographics readable to AI search engines.
How to Audit Images
Start by collecting every image reference found during a crawl, then group the findings so you can see which problems actually need attention.
1. Find every image
Crawl the site and record, for each image:
- Image URL
- Source page
- Alt attribute
- Image dimensions
- File size
- HTTP status
- Content type
- Lazy loading status
- Responsive markup
- Whether it's linked
- 2Check alt attributesSeparate missing alt from empty alt, then decide whether each image is informative or decorative.
- 3Check filenamesFlag generic names, overly long names, and names with no useful context.
- 4Check dimensions and file sizeFind images much larger than their displayed size or unusually heavy. These are candidates for resizing, compression, or responsive delivery.
- 5Check responsive deliveryInspect large images for
srcsetandsizes. Are mobile visitors getting oversized files? - 6Check formatsFind opportunities to cut file weight without losing required quality.
- 7Check lazy loadingMake sure it matches each image's position and importance.
- 8Check image URLsFind broken image requests and confirm important images return successful responses.
- 9Check crawlabilityConfirm crawlers can retrieve important images. Review robots.txt and other restrictions.
- 10Review linked imagesCheck that alt text on linked images describes the destination.
- 11Prioritize the fixesNot every image issue deserves the same priority. Use the table below.
| Finding | What to check | Typical action |
|---|---|---|
| Broken URL | Does the resource return an error? | Restore, replace, or remove the reference |
| Blocked image | Can crawlers retrieve it? | Review access and crawl rules |
| Lazy-loaded hero | Is an above-the-fold image delayed? | Load it eagerly; consider fetchpriority="high" |
| Missing alt | Is the image informative? | Add useful alt text where needed |
| Empty alt | Is the image decorative? | Keep empty if decorative; describe if informative |
| Large dimensions | Is the source far larger than displayed? | Resize or use responsive delivery |
| Large file size | Is compression or a better format possible? | Optimize the image |
| No responsive source | Are large images sent to small screens? | Consider srcset and sizes |
Image SEO Audit Checklist
- Informative images have useful alt text
- Empty alt attributes are separated from genuinely missing ones
- Decorative images are marked to be skipped by assistive technology
- Image filenames are descriptive
- Source dimensions are compared with displayed dimensions
- Oversized image files are identified
- Images declare width and height to prevent layout shift
- Responsive images are used where appropriate
srcsetandsizesare implemented correctly- Image formats and compression are reviewed
- Lazy loading skips above-the-fold images
- Broken image URLs are found and fixed
- Important images aren't blocked from crawling
- Images used as links are reviewed
- Image accessibility is checked
- Issues are prioritized by impact and the image's role
Audit Images Across the Website
Checking one page is straightforward. Checking every image across a large website is not. Inspecting HTML manually works for a few pages, but it gets tedious fast with hundreds or thousands of URLs and images.
A site crawler collects image data during the same crawl and shows which pages have missing alt attributes, empty attributes, broken image URLs, oversized resources, and other image issues. SiteAuditLint's on-page SEO checks surface these across the whole site, so you can move from checking images page by page to reviewing problems from the crawl report and deciding what to fix first.
The goal isn't to optimize every image a crawler finds. It's to find images that are inaccessible, too heavy, incorrectly referenced, hard to understand, or poorly delivered, and fix the ones that matter.