169 checks · 33 auditors · 12 categories · zero network

SEO validation before Googlebot crawls.

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.

Try it free
no signupno API keysruns offline
site score
82/100
crawlens ./dist
TanStack Start · 248 pages · 33 auditors · pagerank ✓
error canonical.localhost 3 pages → dev host
warn links.broken 7 internal links → 404
warn content.thin 12 pages under 300 words
info sd.opportunity 5 posts qualify for Article
wrote crawlens-report/ in 1.9s
169
static checks
33
auditors
12
categories
PR
link graph + pagerank
0
network calls
[]frameworks

Auto-detects your build output.

Pass the build root — Crawlens resolves where prerendered HTML lives. Override with --framework or --client-dir when needed.

TanStack Start
dist/client/
React Router
dist/client/
Next.js
out/
Astro
dist/
SvelteKit
output/prerendered/pages/
Nuxt
.output/public/
SolidStart
dist/public/
Angular
dist/<project>/browser/
[01]what it checks

169 checks across 12 scored categories.

Blazing fast

Persistent worker pool for HTML parsing, sharded parse cache, and parallel per-page auditors — full sites audit in seconds.

Static-only & private

Pure functions over your build output — HTML, sitemap, robots.txt, redirects & assets. No crawler, no rendering, no network.

CI-ready gates

Regression baselines, --fail-on regression|error|score:<n>, --min-score, and --watch deltas. Gate every commit without seats or per-page billing.

On-page

36 checks — titles, descriptions, H1s, canonicals, robots, OG/Twitter & social image sizing.

Links

16 checks — broken links, orphans, PageRank, topical clusters, architecture & equity flow.

Technical

46 checks — sitemaps, robots.txt, redirects, hreflang, pagination & indexability conflicts.

Content

11 checks — thin pages, near-duplicates, cannibalization, readability & quality signals.

Media

8 checks — alt text, dimensions, lazy-load, formats & oversized assets hurting CLS.

Performance

15 checks — route weight, render-blocking assets, bundle outliers & CWV proxies.

Structured data

7 checks — JSON-LD validation, missing fields, breadcrumbs & schema opportunities.

Accessibility

9 checks — the SEO-relevant a11y subset: lang, viewport, labels, roles & tables.

AI / GEO

4 checks — llms.txt, ai.txt, AI-bot directives & citation readiness.

E-E-A-T

5 checks — author signals, publish dates, trust pages & HTTPS canonical hygiene.

Outbound

5 checks — citation density, rel hygiene, domain quality & dofollow ratios.

Ecommerce

7 checks — product/offer schema, ItemList, ratings & thin categories (opt-in).

[02]how it works

From zero to a full audit in three steps.

01

Point at your build

Pass your dist/ folder — Crawlens auto-detects the framework and resolves prerendered HTML.

npx crawlens ./dist
02

Audit & score

Extract → graph → audit → score. Writes crawlens-report/ with per-page scores, findings & fix cards.

→ crawlens-report/index.json
03

Upload or gate CI

Drop the report folder into this viewer, or fail the build on regressions, errors, or low scores.

crawlens --fail-on regression --min-score 80
[02b]report output

Split-file JSON your viewer consumes.

Every audit writes a crawl_report/ folder. Upload the whole directory here — no standalone HTML report needed.

index.json

Run meta, site score, categoryScores, topFixes, summary & timings

pages.json

Per-page route, score, indexable, words, links, depth & PageRank

graph.json

Compact internal link graph — nodes + integer-indexed edges

on-page.json … ecommerce.json

12 category findings + analytics blobs (always emitted)

fixes.json

Actionable fix cards keyed by finding id

regression.json

Baseline diff when using --save-baseline & --compare

[03]roadmap

Shipped fast. Shipping more.

shipped
  • 169 checks · 33 auditors · 12 categories
  • Framework auto-detection (8 frameworks)
  • Internal link graph + PageRank
  • Prioritized topFixes + fixes.json action cards
  • Regression baselines & diff (--save-baseline, --compare)
  • CI gates — --fail-on, --min-score, --watch
  • OG image validation & social-ready analytics
  • Content architecture & topical clusters
  • Indexability matrix & conflict detection
  • Ecommerce module (opt-in)
  • Project config — .crawlensrc.json
planned
  • Pull-request SEO review comments
  • Markdown · SARIF · JUnit output
  • Full rule configuration (disable rules, custom thresholds)
  • Baseline suppress mode — surface only new issues
  • Framework presets beyond auto-detection
  • Entity extraction & topical authority graph
  • Search-intent classification
  • Security & trust signals
[04]who it’s for

Built for developers who ship.

Wired it into my deploy script and immediately caught 4 pages canonicalizing to localhost. Would’ve tanked my launch.
IIndie hackerdocs SaaS
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.
SSolo founderB2B micro-SaaS
The link graph found a whole cluster of orphaned posts. Fixed the interlinking and traffic actually moved.
SSmall team leadcontent startup

Validate before Googlebot crawls.

SEO validation before Googlebot crawls. Run your first audit in under a minute — no account, no cost.

Try it now