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

Free local SEO crawler

SpiderHead crawls a site from a start URL on your own machine, follows links on the same host, respects robots.txt and audits the result with the same checks it uses for Screaming Frog exports.

Free local SEO crawler

Crawl without a project

In the desktop app, enter a URL and press Start; save the result as a project later. In the terminal, crawl-site writes one native SQLite scan you can reopen, export and reanalyse.

  • Same host when following links
  • robots.txt respected
  • Free and local: no hosted account

Free local SEO crawler

Checks that cannot run say so

A native crawl cannot produce every kind of evidence. Checks that need what it did not collect come back skipped with a reason, never as a false clean.

  • Finding, ran without findings, skipped or failed
  • Partial crawls withhold link-graph claims
How it works

Three steps, one saved scan

  1. Start from one URL

    Enter a start URL in the desktop app, or run crawl-site in the terminal. It follows links on the same host and writes one native SQLite scan you can reopen.

  2. Stay polite by default

    About two requests per second per host, with adaptive delays. You set the URL cap; the default is 200 URLs.

  3. Audit the same evidence

    The crawl is checked with the same registry as Screaming Frog exports. A check that needs data a native crawl cannot collect is marked skipped with a reason, never clean.

What it checks

Checks in this feature

CheckWhat it meansSeverityEvidence
BROKEN_PAGE_4XXThe crawled page returns a 4xx responseCriticalURL and response status
SERVER_ERROR_5XXThe crawled page returns a 5xx responseCriticalURL and response status
NO_RESPONSENo response: timeout, DNS or connection failureCriticalURL and failure reason
BROKEN_INTERNAL_LINKAn internal link points to a 4xx URLCriticalSource page and link position
REDIRECT_LOOPThe redirect chain returns to a URL it already visitedCriticalLoop path
REDIRECT_CHAINTwo or more redirect hops before the final URLImportantEvery hop with status
BLOCKED_BY_ROBOTSrobots.txt blocks the URL, so the crawl did not fetch itImportantURL and matching robots.txt rule
How to run it

One command

bash
seohead crawl-site --url https://example.com --max-urls 500 --scan-out ./scans/audit.sqlite

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

Related checks

From the check registry

BROKEN_PAGE_4XXSERVER_ERROR_5XXNO_RESPONSEBLOCKED_BY_ROBOTS
FAQ

Questions

Free local SEO crawler
No. The native crawl runs locally and needs no hosted account or SF licence. Screaming Frog exports can still be imported if you already have them.
No, and it does not claim parity. Checks that need evidence a native crawl cannot produce, such as near-duplicates, readability and link score, are reported as skipped, with summary.check_coverage showing how much of the registry ran.
Yes, by default. If robots.txt cannot be read because of a 5xx or 429 response, the crawl stops rather than assume access. Use --robots report_only to crawl anyway and list what would be blocked.
The default cap is 200 URLs (--max-urls). Set a higher number, up to 1,000,000, or 0 for no URL limit bounded by resource guards. Crawls above project budgets need --approve-large-crawl.
Not in the core crawl. Rendering is optional: install the render extra and Chromium, then set rendering.browser in the crawl config. The core crawl works without a browser.

Check your redirects locally