Image SEO Audit Tool - Alt Text, Weight & Format Checker
Pricing
from $20.00 / 1,000 page analyzeds
Image SEO Audit Tool - Alt Text, Weight & Format Checker
Opens a page in a real browser and returns every image it renders with its weight, format, size and alt text. Flags missing alt attributes, files over 200 KB, JPEG/PNG that should be WebP, and images displayed at the wrong size. JSON per page plus a run summary.
Pricing
from $20.00 / 1,000 page analyzeds
Rating
5.0
(2)
Developer
My Smart Digital
Maintained by CommunityActor stats
3
Bookmarked
30
Total users
0
Monthly active users
10 days ago
Last modified
Categories
Share
Image SEO Audit Tool - Alt Text, Image Weight & Format Checker
Give it a URL. The page is opened in a real browser, every image it actually renders is collected — <img> tags and CSS background-image — and each one comes back with its weight, format, HTTP status, displayed size, natural size, alt text and the problems it has.
Output is JSON: one record per page, plus one summary record for the whole run.
What a real run returns
https://www.smashingmagazine.com, single page, default settings: 28 images, 12 issues — 9 images displayed far smaller than the file actually served, 3 images with no alt text. Formats found on that page: 10 SVG, 6 PNG, 12 undetermined.
What it checks
| Issue code | Raised when |
|---|---|
ALT_MISSING | The image has no alt attribute, or an empty one |
HEAVY_WARN | The file is over 200 KB and up to 500 KB |
HEAVY_CRITICAL | The file is over 500 KB |
NON_NEXT_GEN | A JPEG or PNG heavier than 50 KB, where WebP or AVIF would be lighter |
UPSCALED | The image is displayed larger than its own resolution, so it looks blurry |
DOWNSCALED | The image is displayed at under 25 % of its resolution, so most of the downloaded bytes are wasted |
Each family of checks can be switched off: checkAlt, checkWeight (weight and format), checkDimensions.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
startUrl | string | — | Required. The page to analyze, or the page the crawl starts from |
crawlUrls | boolean | false | Follow internal links and analyze several pages instead of one |
maxPages | integer | 10 | Upper bound on the number of pages analyzed when crawlUrls is on |
checkAlt | boolean | true | Report images with no alt text |
checkWeight | boolean | true | Report heavy images and outdated formats |
checkDimensions | boolean | true | Report images displayed at the wrong size |
timeout | integer (ms) | 15000 | Time budget for loading a page, and for each image request |
userAgent | string | Mozilla/5.0 (compatible; SEO-Image-Analyzer/1.0) | User agent sent to the site |
Only links on the same domain are followed, and anchors, mailto: and tel: links are ignored. There is no sitemap reading: the crawl only sees links present on the pages it visits.
Output
One record per page (type: "page"), with its images and its own counters:
{"type": "page","pageUrl": "https://www.smashingmagazine.com","title": "Smashing Magazine — For Web Designers And Developers","httpStatus": 200,"imagesCount": 28,"issuesCount": 12,"images": [{"imageUrl": "https://www.smashingmagazine.com/images/logo.svg","alt": "Smashing Magazine","displayed": { "w": 52.06, "h": 69.42 },"natural": { "w": 113, "h": 150 },"bytes": 2735,"bytesKB": 2.67,"format": "svg+xml","mime": "image/svg+xml","httpStatus": 206,"cacheControl": "public,max-age=31536000,immutable","issues": ["DOWNSCALED"]}],"summary": {"altMissing": 3,"heavyWarn": 0,"heavyCritical": 0,"nonNextGen": 0,"upscaled": 0,"downscaled": 9,"byFormat": { "svg+xml": 9, "png": 6, "unknown": 11, "svg": 1, "octet-stream": 1 }}}
One summary record for the run (type: "site-summary"), always the last one:
{"type": "site-summary","pagesCrawled": 1,"imagesTotal": 28,"issuesTotal": 12,"topIssues": [{ "type": "DOWNSCALED", "count": 9 },{ "type": "ALT_MISSING", "count": 3 }],"byFormat": { "svg+xml": 9, "png": 6, "unknown": 11, "svg": 1, "octet-stream": 1 },"byProblem": { "ALT_MISSING": 3, "HEAVY_WARN": 0, "HEAVY_CRITICAL": 0, "NON_NEXT_GEN": 0, "UPSCALED": 0, "DOWNSCALED": 9 },"byStatus": { "200": 8, "206": 8 },"thresholds": { "HEAVY_WARN": 204800, "HEAVY_CRITICAL": 512000, "HEAVY_WARN_KB": 200, "HEAVY_CRITICAL_KB": 500 }}
thresholds is there so the numbers behind the verdicts are never a black box.
What you are charged for
- Page Analyzed: one event per page record actually written to the dataset. A page that could not be loaded is reported with
httpStatus: 0and an empty image list, and is not charged. - Image Analyzed: one event per image analyzed on those pages, after deduplication by URL.
The amounts are shown in the pricing section of this page.
Limits, stated up front
- Weight is read from HTTP headers, not by downloading the image. A server that returns neither
Content-Lengthnor a byte range leavesbytesatnull, and the weight and format checks are then skipped for that image. - Inline images (
data:URIs) are measured from the page itself. Theirbytesis the decoded size of the embedded payload, and theirformatcomes from the declared media type, so they get the same weight and format verdicts as hosted images. They have nohttpStatusand nocacheControl, since nothing is requested over the network. Note that a base64 payload takes about a third more room inside the HTML document than the size reported here. - The
imageUrlof an inline image is shortened. A payload of several thousand characters is unreadable in a result table, so the field keeps the media type and the first 40 characters, then states how many were dropped:data:image/avif;base64,AAAAHGZ0eXBtaWYxAAAAAG1pZjFhdmlmbWlhZgAA… (+6264 chars). Deduplication still compares the full payload. - CSS background images have no alt text and no natural size, by construction. They are therefore always reported as
ALT_MISSING, and never get anUPSCALEDorDOWNSCALEDverdict. - The page is not scrolled. Images that a lazy-loading script only fetches once the visitor scrolls may be missing from the report, or reported without their final source.
pagesCrawledcounts every page record, including the pages that failed to load.
Typical uses
Pre-migration audit of a site's images, accessibility check on alt text, hunting down the heavy images that slow a page down, and checking that a WebP/AVIF migration actually reached every template.