Getting found · Edition No. 7 · 1 Sep 2026

janreges/siteone-crawler

A command-line crawler that audits a whole site and writes one HTML report.

← Getting foundRead the whole edition →
03

janreges/siteone-crawler

💎 hidden gem
SiteOne Crawler: one site, one report. Crawls every page and lists the faults.

896 stars · MIT · v2.5.1 (2026-06-27) · Track this in Rising ↗

One command, one HTML report: broken links, redirects, titles, descriptions, image weight, response times.

Verified26 Oct 2026

Radar check

What we found when we opened it. Every bar is one fact, with its date.

Alive90

Last code pushed 27 Sep 2026, 30 days before this check.

Releases70

Latest release v2.5.1 on 27 Jun 2026.

Maturity70

Public since October 2023, about 3 years.

Adoption60

979 stars and 90 forks.

Activity85

210 commits and 8 new issues in the last 90 days.

Community40

7 contributors. No pull requests merged in 90 days; changes go in directly. A small team carries it.

Security40

No security policy file says how to report a problem. No published security advisories.

Licence MIT | [crawler.siteone.io](https://crawl: permissive: use it for anything, keep the noticeSetup effort 1 of 5Payoff 4 of 5
How the bars are scored
  • Alive. Days since the last code push: a week or less 100, a month 90, three months 70, six months 50, a year 30, eighteen months 15, older 0.
  • Releases. Age of the latest GitHub release, on a similar scale; no bar when the project publishes no releases.
  • Maturity. Age of the project: eight years 100, five 90, three 70, two 55, one 40, six months 25, younger 10.
  • Adoption. Stars on a log scale: 100,000 stars is 100, 10,000 is 80, 1,000 is 60, 100 is 40.
  • Activity. Commits in the last 90 days: 300 or more 100, 100 85, 30 65, 10 45, any 25.
  • Community. People who have contributed: 100 or more 100, 30 80, 10 60, 5 40, 2 25, one 10.
  • Security. A published security policy 80, none 40; published advisories are listed, not scored.

Checked by Repo Radar on 26 Oct 2026 from the repository on GitHub. Covered in Edition 7.

▶Repo detailsthe review · specs · pros & cons · install

What it does

You give it a web address and it walks the site, recording every page and every asset with its status code, response time, size, headers and title. It can also start from a sitemap or a list of addresses instead of following links. It then reports on broken links, redirects, SEO, security headers, accessibility and performance, and gives a score out of ten in five categories. The output can be a self-contained HTML report, JSON, or coloured text, and a built-in mailer can send the report by email. It also exports a working offline copy of a site, converts a site to Markdown files, generates sitemaps, runs a simple load test, and exits with a failure code when a quality threshold is missed, which is what makes it usable in an automated build. Pages that need JavaScript are rendered in Chromium when the browser option is used; since version 2.5.1 the browser support is in the ordinary downloaded binaries. Since first publication the project has been rewritten in Rust, and its own page claims 25% faster execution and 30% lower memory use than the previous version while producing identical output. What it does not do is fix anything, and in sitemap-only mode it does not discover links beyond that sitemap.

Why it matters

Who it suits. Anyone who looks after a site of more than a few dozen pages and has no idea how many of its links still work. It suits a documentation site particularly well, because missing titles and descriptions are exactly what stops pages being found. It also suits anyone who wants an archived copy of a site before a redesign, which is one command here. Skip it if the site is three pages long, because reading them is faster.

Verdict. Worth an hour, and the report is worth handing straight to whoever makes the fixes. The practical change since this edition first ran is the install: Homebrew and the Linux package repositories now carry it, so there is no longer any need to fetch a file from a releases page. Published limits are worth knowing before the first run: it defaults to three workers and ten requests a second, and it stops at 9,000 queued and 10,000 visited addresses, so a very large site needs those raised. The musl build, which is the one that runs on older Linux systems, is 50 to 80% slower during the export features. Edition 2 covered harlan-zw/unlighthouse, which answers one question well — how each page scores in a browser performance audit — and says nothing about dead links. Use lycheeverse/lychee instead if link checking on every deploy is all that is wanted.

Stars896
LicenceMIT
Latestv2.5.1 (2026-06-27)checked 7 Sep 2026
Written inRust
NeedsRust and cargo and ffmpeg
RunsLocally, on your own machine
Summary (Key Points)from the README
Key features
  • Faster Rust rewrite: The move from PHP+Swoole to Rust gave 25% faster execution and 30% lower memory use, with identical output.
  • Quality scoring: Scores run from 0.0 to 10.0 across five categories: Performance, SEO, Security, Accessibility and Best Practices.
  • CI quality gate: The `--ci` flag exits with code 10 when thresholds fail, so pipelines can block a deployment.
  • Three report formats: An interactive HTML report, structured JSON and colored terminal text, with optional emailing of the HTML report via a built-in SMTP mailer.
  • Offline and Markdown export: Sites can be cloned to browsable local HTML or converted to Markdown, including a single-file version for feeding AI tools.
  • Interactive wizard: Running the binary with no arguments opens a wizard with 11 preset modes and shows the equivalent CLI command.
  • Load testing: `--workers` (default 3) and `--max-reqs-per-sec` (default 10) control concurrency and request rate, and the same tool can warm caches.
  • Technology detection: The Technologies table lists the stack a site reveals, found passively from headers, cookies, script URLs and HTML markers.
  • Optional browser rendering: `--browser` renders pages in Chromium so JavaScript-driven sites are crawled with their post-render DOM, with screenshots and console diagnostics.
Ways to install
Platform or methodWhat it needsEffort
Pre-built binaries (Linux, Windows, macOS, x64 and arm64)Nothing; the binary is self-containedLow
HomebrewmacOS or Linux with HomebrewLow
Debian / Ubuntu (apt)Debian or Ubuntu; glibc 2.39+ or the static variant on older systemsLow
Fedora / RHEL (dnf)Fedora or RHEL; the static package on older systemsLow
openSUSE / SLES (zypper)openSUSE or SLES; the static package on older systemsLow
Alpine Linux (apk)Alpine LinuxLow
Build from sourceRust 1.94 or laterHigher
Important
  • Linux variant trade-off: The musl build runs on any distribution but is about 50–80% slower, mainly in offline and Markdown exports; the glibc build needs glibc 2.39+.
  • macOS launch issue: If Mac refuses to start the crawler from Downloads, move the whole folder elsewhere, such as your home folder.
  • Worker limits: A high `--workers` value can cause a denial-of-service effect on the target server, so use it carefully.
  • Browser mode limits: Auth, custom headers and cookies are not forwarded to the browser, and each rendered HTML page is fetched twice.
  • Browser auto-download: The auto-download of chrome-headless-shell trusts Google's CDN over TLS.
  • No-sandbox option: `--browser-no-sandbox` is often needed in Docker or CI but weakens isolation.
  • MP4 output: MP4 animations require an external ffmpeg; GIF works without it.
  • Cookie banner hiding: This is best-effort, and the accept-all fallback may grant consent where no reject control exists, so it is not a privacy tool.
  • URL list scope: Listed URLs skip robots.txt and include/ignore regex rules and may point to any host.
  • AI is opt-in: AI features run only with an `--ai-*` flag and can incur provider costs; `--ai-dry-run` previews cost.
  • Authenticated caching: Responses fetched with credentials are cached unless `--http-cache-dir=` is set empty.

Written by an AI model from the project’s README; not part of the review, and it can be wrong.

Setup effort
1 / 5
Payoff
4 / 5
Good
  • MIT licensed, a single program with no runtime to install, on macOS, Linux and Windows.
  • One pass covers the unglamorous checks: broken links, redirect chains, titles, descriptions, image weight, response times.
  • The offline export, the Markdown export and the sitemap generator are genuinely useful side effects.
Watch for
  • Fewer than a thousand stars and essentially one maintainer, so it is a tool to run rather than a dependency to build on.
  • It reports and fixes nothing; the report is worth only the time spent acting on it.
  • The queue caps and the three-worker default have to be raised by hand for a large site, and the musl build is much slower on the export features.
Install
brew install janreges/tap/siteone-crawler
Screenshots
janreges/siteone-crawler: GitHub preview card

On Stack Radar: Marketing & Growth › SEO & Organic Search › Technical SEO.

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.