Sign inCreate a free account
Theme

Media and links

28 checks: alt text, image delivery, anchor text and broken links.

Images are usually most of what a page has to download, and links are how both readers and crawlers move through a site. 28 checks across the two.

Alt text

CheckWhat it looks for
media.alt_missingImages with no alt attribute. Both an accessibility failure and a lost description of your own content.
media.alt_textAlt text present and describing the image.
media.alt_keyword_stuffedAlt text written for a crawler rather than for a person. It is read aloud to somebody using a screen reader, which is what makes this worse than useless.

A decorative image, a divider or a background flourish, should have an empty alt attribute rather than no alt attribute. alt="" tells a screen reader to skip it. A missing attribute makes it read the filename out instead.

Image delivery

CheckWhat it looks for
media.missing_dimensionsImages without width and height. The browser cannot reserve space, so the page jumps when each one arrives. This is the most common cause of a failing CLS score.
media.legacy_formatJPEG or PNG where WebP or AVIF would be substantially smaller for the same quality.
media.not_responsiveNo srcset, so a phone downloads the desktop image at full size.
media.no_lazy_loadingImages below the fold loading immediately, competing for bandwidth with the content somebody is actually looking at.
media.hero_lazy_loadedThe opposite mistake: lazy loading applied to the image at the top of the page, which delays it and directly worsens LCP.

Lazy loading everything is a common and costly default. The rule is simple: lazy load what is below the fold, never what is above it. media.hero_lazy_loaded exists because applying loading="lazy" site-wide reliably makes the one image that matters arrive last.

CheckWhat it looks for
links.noneNo links out of the page at all. It is a dead end for a crawler.
links.distributionThe balance of internal to external links. Internal links are how authority moves around your own site.
links.excessive_externalA great many links off-site relative to the content.
links.rel_attributesWhether nofollow, sponsored and ugc are used where they should be.
links.undisclosed_affiliateLinks that look like affiliate links without rel="sponsored". A guidelines problem before it is an SEO one.
links.dead_fragmentAn in-page link such as #pricing pointing at an id that is not on the page.

Anchor text

Anchor text tells a search engine what the page you are linking to is about, and tells a reader whether to click. "Click here" does neither.

CheckWhat it looks for
links.empty_anchorA link with no text at all, usually an image or icon link with no alt text either.
links.non_descriptive_anchor"Click here", "read more", "this page". The link text describes the act of clicking, not the destination.
links.repeated_anchorThe same anchor text pointing at several different pages, which makes all of them ambiguous.

Broken links

We follow the links on the page and report the ones that do not resolve. Broken outbound links are a quality signal in the wrong direction, and a broken internal link is a page nobody can reach.

CheckWhat it looks for
links.brokenLinks returning an error. The finding lists each URL and the status it returned.
links.no_brokenEvery link we could check resolved.
links.no_probeableNothing on the page could be checked, usually because every link is in-page or uses a non-http scheme.

Link checking is bounded. We do not follow every link on a page with two thousand of them, and a site that rate-limits us will show links as unreachable that a browser reaches. Treat a broken link finding as a list to check rather than as a verdict. To sweep a whole site properly, use Site crawl.

Type to search. Try a check name from your report, an endpoint, or what you are trying to do.

↑↓ to move ↵ to open Esc to close