Blazing fast
Persistent worker pool for HTML parsing, sharded parse cache, and parallel per-page auditors — full sites audit in seconds.
Crawlens is a build-time SEO quality gate for prerendered static sites. Point it at your dist/ — it auto-detects your framework, crawls HTML plus sitemap.xml, robots.txt, _redirects, and local assets, runs 169 checks via 33 auditors, builds an internal link graph with PageRank, and writes a scored JSON report.
Pass the build root — Crawlens resolves where prerendered HTML lives. Override with --framework or --client-dir when needed.
dist/client/dist/client/out/dist/output/prerendered/pages/.output/public/dist/public/dist/<project>/browser/Persistent worker pool for HTML parsing, sharded parse cache, and parallel per-page auditors — full sites audit in seconds.
Pure functions over your build output — HTML, sitemap, robots.txt, redirects & assets. No crawler, no rendering, no network.
Regression baselines, --fail-on regression|error|score:<n>, --min-score, and --watch deltas. Gate every commit without seats or per-page billing.
36 checks — titles, descriptions, H1s, canonicals, robots, OG/Twitter & social image sizing.
16 checks — broken links, orphans, PageRank, topical clusters, architecture & equity flow.
46 checks — sitemaps, robots.txt, redirects, hreflang, pagination & indexability conflicts.
11 checks — thin pages, near-duplicates, cannibalization, readability & quality signals.
8 checks — alt text, dimensions, lazy-load, formats & oversized assets hurting CLS.
15 checks — route weight, render-blocking assets, bundle outliers & CWV proxies.
7 checks — JSON-LD validation, missing fields, breadcrumbs & schema opportunities.
9 checks — the SEO-relevant a11y subset: lang, viewport, labels, roles & tables.
4 checks — llms.txt, ai.txt, AI-bot directives & citation readiness.
5 checks — author signals, publish dates, trust pages & HTTPS canonical hygiene.
5 checks — citation density, rel hygiene, domain quality & dofollow ratios.
7 checks — product/offer schema, ItemList, ratings & thin categories (opt-in).
Pass your dist/ folder — Crawlens auto-detects the framework and resolves prerendered HTML.
npx crawlens ./distExtract → graph → audit → score. Writes crawlens-report/ with per-page scores, findings & fix cards.
→ crawlens-report/index.jsonDrop the report folder into this viewer, or fail the build on regressions, errors, or low scores.
crawlens --fail-on regression --min-score 80Every audit writes a crawl_report/ folder. Upload the whole directory here — no standalone HTML report needed.
index.jsonRun meta, site score, categoryScores, topFixes, summary & timings
pages.jsonPer-page route, score, indexable, words, links, depth & PageRank
graph.jsonCompact internal link graph — nodes + integer-indexed edges
on-page.json … ecommerce.json12 category findings + analytics blobs (always emitted)
fixes.jsonActionable fix cards keyed by finding id
regression.jsonBaseline diff when using --save-baseline & --compare
Wired it into my deploy script and immediately caught 4 pages canonicalizing to localhost. Would’ve tanked my launch.
Finally an SEO tool that doesn’t crawl my site or charge per page. It just reads dist/ — 169 static checks, zero network. Runs on every PR now.
The link graph found a whole cluster of orphaned posts. Fixed the interlinking and traffic actually moved.
SEO validation before Googlebot crawls. Run your first audit in under a minute — no account, no cost.