Audits Image SEO, Core Web Vitals (LCP/CLS), WCAG 2.2 / EAA accessibility, missing alt on links, WHATWG sizes="auto", next-gen AVIF/WebP formats, Open Graph dimensions, XML Image Sitemaps, and actively probes broken image links with 0-100 scoring.
Audits Image SEO, Core Web Vitals (LCP/CLS), WCAG 2.2 / EAA accessibility, missing alt on links, WHATWG sizes="auto", next-gen AVIF/WebP formats, Open Graph dimensions, XML Image Sitemaps, and actively probes broken image links with 0-100 scoring.
Flags critical empty accessible links on clickable images, generic alt stubs, camera filenames, and emoji noise while respecting decorative ARIA rules.
Identifies LCP hero images, flags lazy-loading anti-patterns on above-the-fold assets, verifies fetchpriority=\"high\", and flags missing HTML dimensions.
Enforces WHATWG Living Standard rules for sizes=\"auto\" with loading=\"lazy\", and inspects picture sources and srcset descriptors for retina scaling.
Calculates AVIF/WebP adoption ratios, flags bandwidth-heavy legacy bitmaps (BMP, TIFF, uncompressed PNG), and alerts on assets exceeding 200KB and 500KB.
Decompresses and parses XML image sitemaps, cross-references on-page images against sitemap entries, and actively probes for HTTP 404/500 broken links.
Applies a balanced 45-rule deduction system with category caps and hard ceilings, ensuring only flawless pages receive Grade A+ (95-100).
Templates & workflows
Comprehensive audit of image SEO, Core Web Vitals (LCP/CLS), WCAG 2.2 accessibility, and next-gen formats across high-traffic landing pages.
{
"urls": "https://example.com/\nhttps://example.com/about\nhttps://example.com/products",
"timeout": 30,
"maxImages": 100,
"concurrency": 8,
"checkImageHealth": true
}Automatically unpack and audit all URLs declared in an XML sitemap or sitemap index to detect broken assets and sitemap discrepancies.
{
"urls": "https://example.com/sitemap.xml",
"timeout": 30,
"maxImages": 50,
"concurrency": 10,
"maxSitemapPages": 50,
"checkImageHealth": true
}Audit product catalog imagery for Merchant Center compliance, missing dimensions (CLS), missing alt text on linked thumbnails, and modern WebP/AVIF adoption.
{
"urls": "https://store.example.com/category/shoes\nhttps://store.example.com/category/jackets",
"timeout": 45,
"maxImages": 150,
"concurrency": 6,
"checkImageHealth": true
}Image SEO Auditor
An enterprise-grade, dual-engine Image SEO, Core Web Vitals (LCP & CLS), WCAG 2.2 AA / European Accessibility Act (EAA) Compliance, and Next-Gen Format Auditor for BrowserMesh.
Audits web pages for image search visibility, evaluates accessibility compliance, diagnoses Largest Contentful Paint (LCP) and Cumulative Layout Shift (CLS) bottlenecks, inspects Open Graph & Schema.org image structured data, verifies WHATWG responsive markup (srcset, sizes="auto"), unpacks XML Image Sitemaps, and actively probes image reachability to detect broken assets and bandwidth bloat.
The modern cloud alternative to Screaming Frog SEO Spider (£209/yr), Sitebulb, Google Lighthouse CLI, and brittle custom Python image crawlers.
loading="lazy" anti-pattern, catch missing width/height dimensions that trigger layout shifts (CLS), and enforce modern AVIF/WebP next-gen formats.og:image) and Twitter Card image previews, ensuring exact 1200x630 dimensions and high-resolution visuals across LinkedIn, Facebook, and X.Audits visual content against international accessibility regulations:
<a href="..."><img ...></a>) that lack alt text or accessible names, creating critical WCAG 2.4.4 barrier traps for screen-reader users.image, photo, logo, banner), placeholder stubs (TODO, sample, temp), redundant prefixes (Picture of..., Image showing...), camera filenames (IMG_2026.jpg), emojis in alt text, and missing terminal punctuation.aria-hidden="true", role="presentation", role="none", and aria-label/aria-labelledby, preventing false-positive flags on valid decorative icons.loading="lazy" to above-the-fold hero images and warns when fetchpriority="high" is missing.width and height attributes or CSS aspect ratios, preventing layout jumps during page rendering.loading="lazy" and decoding="async" for secondary content and footer images to conserve client bandwidth.sizes="auto" Compliance: Evaluates modern responsive images using sizes="auto". Flags violations where sizes="auto" is used without loading="lazy" (violating WHATWG specifications) or lacks explicit dimension attributes.<picture>, <source>, and srcset tags for 2x/3x retina descriptors and responsive breakpoint scaling.<image:image>, <image:loc>, <image:title>, <image:caption>, and <image:license> tags from standard and gzip-compressed XML sitemaps.<meta name="robots" content="max-image-preview:large"> (required for Google Discover rich cards) or blocked by noimageindex.og:image, og:image:width, og:image:height, and og:image:alt tags, verifying optimal 1.91:1 aspect ratios (1200x630 px).Product, Article, Recipe, and Organization schemas.HEAD/GET requests, detecting HTTP 404 Not Found, 403 Forbidden, and 500 Server Errors before they damage user trust.noimageindex are capped at 59 (Grade D).{
"urls": "https://example.com/products/hiking-boots\nhttps://example.com/sitemap.xml",
"checkImageHealth": true,
"maxImages": 100,
"maxSitemapPages": 50,
"concurrency": 8,
"timeout": 30
}
https://example.com/product/123, https://example.com/blog/article).example.com, shop.example.com, https://sub.domain.co.uk/).<image:image>, <image:loc>, <image:title>, and <image:caption> entries (e.g. https://example.com/sitemap.xml)..xml.gz sitemap archives on-the-fly (e.g. https://example.com/sitemap.xml.gz).<sitemapindex> tags up to maxSitemapPages.Every yielded record strictly adheres to these 25 structured fields:
{
"url": "https://beacons.ai/austin",
"domain": "beacons.ai",
"statusCode": 200,
"status": "healthy",
"healthScore": 79,
"grade": "B",
"totalImagesCount": 3,
"missingAltCount": 0,
"emptyAltCount": 0,
"descriptiveAltCount": 1,
"poorAltCount": 2,
"linkedImagesMissingAltCount": 0,
"missingDimensionsCount": 1,
"lazyLoadedCount": 0,
"eagerLoadedCount": 0,
"modernFormatPercentage": 0,
"totalImageWeightBytes": 7694,
"oversizedImagesCount": 0,
"brokenImagesCount": 0,
"lcpImageAudit": {
"detected": true,
"src": "https://cdn.beacons.ai/profile_pictures/instagram/austingingerich.jpg?q=1609087767.9388068",
"format": "jpg",
"isModernFormat": false,
"fileSizeBytes": 5056,
"isLazyLoaded": false,
"hasFetchPriorityHigh": false,
"hasExplicitDimensions": false,
"issues": [
"lcp-image-missing-fetchpriority"
]
},
"formatBreakdown": {
"avif": 0,
"webp": 0,
"svg": 0,
"jpg": 1,
"png": 2,
"gif": 0,
"other": 0
},
"openGraphImageAudit": {
"hasOgImage": true,
"ogImageUrl": "https://cdn.beacons.ai/profile_pictures/instagram/austingingerich.jpg?q=1609087767.9388068",
"hasDimensions": true,
"width": 600,
"height": 600,
"hasAlt": false,
"alt": null,
"issues": []
},
"schemaImageAudit": {
"hasSchemaImages": true,
"schemaImageCount": 1,
"imageObjects": [
{
"url": "https://cdn.beacons.ai/profile_pictures/instagram/austingingerich.jpg?q=1609087767.9388068"
}
],
"hasPrimaryImageOfPage": true,
"primaryImageUrl": "https://cdn.beacons.ai/profile_pictures/instagram/austingingerich.jpg?q=1609087767.9388068",
"sitemapSourceUrl": null,
"declaredInSitemapCount": 0,
"brokenSitemapImages": [],
"issues": []
},
"images": [
{
"src": "https://cdn.beacons.ai/profile_pictures/instagram/austingingerich.jpg?q=1609087767.9388068",
"resolvedUrl": "https://cdn.beacons.ai/profile_pictures/instagram/austingingerich.jpg?q=1609087767.9388068",
"alt": "profile",
"altStatus": "valid_descriptive",
"role": "icon",
"format": "jpg",
"isModernFormat": false,
"width": 84,
"height": 4,
"naturalWidth": 84,
"naturalHeight": 4,
"hasExplicitDimensions": false,
"loading": "unset",
"fetchPriority": "unset",
"decoding": "unset",
"hasSrcset": false,
"hasSizes": false,
"sizesAuto": false,
"inPicture": false,
"inLink": false,
"linkHref": null,
"inFigure": false,
"figcaptionText": null,
"nearestHeading": null,
"issues": [
"missing-dimensions"
],
"recommendations": [
"Add explicit width and height HTML attributes (or CSS aspect-ratio) to prevent Cumulative Layout Shift (CLS)."
],
"statusCode": 200,
"fileSizeBytes": 5056,
"isBroken": false
}
],
"audit": {
"healthScore": 79,
"grade": "B",
"totalDeductions": 26,
"categoryDeductions": {
"accessibility": 0,
"performance": 9,
"format": 12,
"responsive_semantic": 0,
"social_structured_robots": 5
},
"activeCeilingCaps": [],
"bonusesAwarded": [
"Schema.org ImageObject structured data declared (+5 pts)"
],
"primaryIssues": [
"1 image(s) missing explicit width/height",
"Zero modern image format adoption (WebP/AVIF)"
],
"recommendations": [
"Add fetchpriority=\"high\" to the main hero LCP image.",
"Set explicit HTML width and height attributes to avoid layout shifts.",
"Adopt WebP and AVIF modern formats to reduce image payloads by 30-50%.",
"Add <meta name=\"robots\" content=\"max-image-preview:large\"> to enable high-res Google Discover previews."
]
}
}
loading="lazy" to above-the-fold hero images or omit explicit dimensions causing layout shifts.max-image-preview:large directives, and Schema.org ImageObject markup.What makes an "Empty Accessible Link" a critical accessibility failure?
When an <img> tag is wrapped in an <a> or <button> element with no text content and has an empty alt="" or missing alt attribute, screen readers encounter an anchor with no accessible name. Screen readers will read the raw URL or announce "Unlabeled Link", severely impairing blind users and violating WCAG 2.4.4 (Link Purpose) and the European Accessibility Act (EAA).
Applying loading="lazy" to the main above-the-fold image delays the browser's preload scanner from initiating the image network request until JavaScript parses layout coordinates. This artificially delays the Largest Contentful Paint (LCP) by 500ms to 2,000ms. Hero images should always have loading="eager" (or no loading attribute) and fetchpriority="high".
width and height cause Cumulative Layout Shift (CLS)?Before an image file downloads, the browser cannot determine its aspect ratio without explicit width and height HTML attributes. Once downloaded, the image suddenly expands, pushing surrounding text and buttons down and causing jarring layout jumps that ruin user experience and degrade Google's CLS metric.
sizes="auto" specification?sizes="auto" is a modern browser specification that allows the browser to dynamically set the image layout width based on the rendered element width. However, according to the WHATWG HTML Living Standard, sizes="auto" must only be used on lazy-loaded images (loading="lazy") and requires explicit dimensions to prevent infinite layout loops.
Yes! Simply pass the sitemap URL (e.g., https://example.com/sitemap.xml or https://example.com/sitemap.xml.gz) into the urls configuration. The plugin automatically uncompresses Gzip files, parses <image:image> entries, expands child sitemaps, and audits the discovered URLs up to maxSitemapPages.
This workflow executes natively within your local or peer BrowserMesh node using real Chromium browser automation. It navigates dynamically rendered single-page applications, executes interaction logic, avoids cloud proxy fees, and extracts clean structured datasets directly to your local machine with complete security and privacy.
Unlike legacy cloud scraping APIs that impose expensive per-request markups and risk IP bans, BrowserMesh routes execution through authentic residential environments. You pay zero cloud data transfer fees, experience full anti-bot stealth emulation, and retain 100% ownership of your extracted datasets without vendor lock-in.
3 records · 25 nested fields · real execution preview
Combine complementary browser automation and auditing workflows to verify site health, infrastructure, and search engine crawlability with 100% local execution.
Scan websites and XML sitemaps to detect 404 dead links, broken anchors, and redirect loops with zero cloud markups.
Discover who hosts any website. Detect cloud infrastructure, CDN edge networks, IP geo, and DNS routing instantly.
Audit on-page SEO factors, meta tags, heading structures, Core Web Vitals, and SERP snippet previews with local privacy.
Explore our comprehensive guides or reach out directly to our engineering support team.