301→302
A temporary redirect where a permanent one belongs. Found by Redirect checker →
redirect loop
The URL redirects back to itself and never settles. Found by Redirect checker →
Audit

Broken link checker with source and position

Find internal and external links to 4xx and 5xx URLs together with the page that links to them, the template area (content, footer, navigation) and the XPath.

Broken link checker with source and position

Fix the template, not every page

Position tells you when a broken link sits in a shared footer or navigation block.

Broken link checker with source and position

Link hygiene

Fragments that point nowhere, unsafe target=_blank links, links inside headings and image links without text.

How it works

Three steps, one saved scan

  1. Check one page or the whole site

    links-check tests the links on one page live. crawl-site walks the site from a start URL and stores the result for a full audit.

  2. See where each broken link sits

    With Screaming Frog Inlinks exports, each broken link is listed with its source page, link position and XPath.

  3. Fix the shared block once

    Each broken destination lists every page that links to it, so a broken footer or menu link is fixed in one template.

What it checks

Checks in this feature

CheckWhat it meansSeverityEvidence
BROKEN_INTERNAL_LINKInternal link points to a 4xx URLCriticalScreaming Frog Inlinks export (Client Error 4xx)
LINK_TO_5XXInternal link points to a 5xx URLCriticalScreaming Frog Inlinks export (Server Error 5xx)
BROKEN_EXTERNAL_LINKExternal link points to a broken (4xx or 5xx) URLImportantScreaming Frog Inlinks export (Client Error 4xx)
BROKEN_BOOKMARKLink fragment (#id) names no element on the destination pageImportantCrawl fragment check on retained page HTML
IMAGE_LINK_WITHOUT_TEXTImage link has neither anchor text nor alt text, so nothing says where it goesImportantCrawl link placement
UNSAFE_CROSS_ORIGIN_LINKtarget="_blank" link has no rel="noopener" or rel="noreferrer"ImportantCrawl link findings
How to run it

One command

bash
seohead links-check --url https://example.com/

Install first: installation guide. Every command also runs as an MCP tool for AI agents.

Related checks

From the check registry

BROKEN_INTERNAL_LINKLINK_TO_5XXBROKEN_EXTERNAL_LINKBROKEN_BOOKMARKIMAGE_LINK_WITHOUT_TEXT
FAQ

Questions

Broken link checker with source and position
No for a single page or a native crawl. Source, position and XPath, and the Inlinks-based checks (BROKEN_INTERNAL_LINK, LINK_TO_5XX, BROKEN_EXTERNAL_LINK), need Screaming Frog Inlinks exports. Without them those checks come back skipped with a reason, not as a clean result.
links-check covers the links of the one URL you give it, with a default cap of 200 unique targets per page. --internal-only skips external links. For the whole site, crawl the site and audit the export.
Yes, a 4xx from an external site is reported as BROKEN_EXTERNAL_LINK. Some sites return 403 to crawlers on purpose, so check those links by hand before you remove them.
No. links-check lists redirects (3xx) separately with their Location. Redirect chains and loops are covered by the redirect checker.
No. The checks send read-only requests. A crawl writes a local SQLite scan file, and the report is a file you keep.

Check your redirects locally