Broken link checker
Find broken links on any page: 404 errors, server errors, and redirects
Check results
This check only covers for broken links. For a full picture of your page, run a page audit.
For issues across your whole site — duplicate titles, orphan pages, broken internal links — run a site audit.
Want us to fix what we found? Our team can help.
What are broken links and why they matter
A broken link is an <a href> whose target doesn't load correctly — the server returns a 4xx error (404 Not Found, 403 Forbidden, 410 Gone), a 5xx error (backend crash), or fails to respond at all (DNS failure, connection refused, timeout). Users who follow a broken link land on an error page and usually leave. Search crawlers that encounter a broken link waste crawl budget on a dead end and lose the link equity that would have flowed through to the target page. On large sites with frequent content changes, dozens of internal links silently break every month as pages are renamed, deleted, or moved — which is why "broken link audit" is a standard monthly maintenance task.
This tool checks only internal links on the audited page — links pointing to the same domain. External / outbound links aren't checked because their status depends on third-party servers that frequently rate-limit or block automated audits, and because external-link maintenance is usually handled differently (linkrot reports from services like Ahrefs, or manual review during content updates).
What this tool checks
- Collects every internal
<a href>on the page — same-origin links only; skips anchors (#),mailto:,tel:, andjavascript:hrefs - Probes each link with HEAD — a lightweight request that asks for the response status without downloading the body. Falls back to GET on 405 (some servers don't implement HEAD)
- 4xx responses — reported as broken (typically 404 or 403)
- 5xx responses — reported as server errors (may be transient; re-check after a few minutes)
- 3xx responses — reported as redirects (link works but adds a round-trip and loses some link equity per hop; ideally link directly to the final URL)
- Connection failures — DNS resolution failures and refused connections reported as unreachable; timeouts reported separately as "did not respond in time" (may be transient)
How broken internal links affect SEO
- Crawl budget waste — Googlebot spends a quota of requests on your site per crawl cycle; 404s burn slots that could have fetched real content, slowing new-page discovery
- Lost link equity — every internal link is a vote for the target page; a link to a 404 is a vote wasted
- User experience signals — bounce rate and dwell time on error pages are worse than real pages; Google observes these via SERP click behavior
- Perceived site quality — John Mueller has said Google doesn't directly penalize sites for broken links, but large quantities of 404s can signal a neglected or low-quality site and indirectly affect rankings
Good vs bad examples
Good — link to a live page:
<a href="/pricing">Pricing</a>
→ 200 OK
Good — direct link to the final URL (no redirect):
<a href="https://example.com/blog/post-slug">Read more</a>
→ 200 OK (no redirects)
Attention — link goes through a redirect:
<a href="/blog/old-post-name">Read more</a>
→ 301 → /blog/new-post-name → 200 OK
Fix: update the href to /blog/new-post-name directly.
Bad — link to a 404:
<a href="/about-us">About</a>
→ 404 Not Found
Fix: update the href (it's /about, not /about-us), or add a 301 from /about-us.
Bad — link to a server error:
<a href="/search?q=...">Search</a>
→ 500 Internal Server Error
Fix: investigate the target page's backend error in application logs.
Common mistakes
- Relying on a 301 to mask a broken link — yes, the user ends up at the right page, but every hop costs latency and a bit of link equity. Update the link at the source
- Redirect chains (A → B → C) — compound the per-hop cost. After a migration, sweep internal links to point directly at the final URL, not at the first intermediate
- Forgetting links after a page rename — a CMS usually sets up the 301 automatically but leaves internal
<a href>pointing at the old path. Pair every rename with a find-and-replace in the content - Links to staging / dev environments — a
href="https://staging.example.com/..."accidentally committed to production. Shows as unreachable from the public internet - Hard-coded port numbers —
href="https://example.com:8080/..."left over from local development; the port isn't open in production - Ignoring 5xx as "probably transient" — if the audit sees a 5xx on a link, so do users and crawlers right now. Investigate the target, don't just re-check and hope
Frequently asked questions
<a href> to point at the final destination rather than leaving the chain in place "because the redirect works."staging.example.com link, a removed API subdomain). Timed out is called out separately as attention rather than bad — it can be transient (slow network, backend garbage-collection pause), so recheck before treating it as broken.