What a free audit does, and doesn't.
Free tier: $0, up to 200 pages per audit (50 without an account) — sampled from your sitemap, stratified across detected templates, 24-hour anonymous retention (30-day window for signed-in accounts), 3 audits per day per browser session. Pro tier: $19/month ($180/year with 14-day refund), up to 500 pages on a manual re-audit, up to 200 pages per scheduled monitoring run, 50 audits per day, unlimited retention. Comparable hosted crawlers like Screaming Frog ($259/year), Sitebulb ($35/month), and Ahrefs Site Audit ($129/month) charge for the same surface area. Written plainly. No dark patterns, no asterisks hiding behind footnotes. If something here feels unfair or unclear, reply to hello@pseolint.dev and we'll fix it.
Scope — what we actually audit
- Audit focus
- Programmatic-SEO sites (template-driven content at scale) and AI Overview readiness. The sample is stratified across detected templates and the site verdict reflects the worst template, not the average URL. SpamBrain triggers from the March 5, 2024 scaled-content-abuse update + the May 7, 2024 site-reputation-abuse policy + the AEO patterns that determine ChatGPT, Perplexity, and Google AI Overview citations.
- Pages per anon audit (no account)
- Up to 50, sampled from your sitemap.xml and stratified across detected templates.
- Pages per free audit (signed-in)
- Up to 200, sampled from your sitemap.xml and stratified across detected templates.
- Pages per Pro audit (manual re-audit)
- Up to 500 pages, stratified across templates. Re-audits use the larger sample for tighter variance estimates.
- Pages per Pro scheduled monitoring run
- Up to 200 pages per run, stratified across templates. The site verdict reflects the worst template, not the average URL.
- Cumulative coverage (Pro monitoring)
- Each monitoring run fetches up to 200 URLs; over time, audit history accumulates across runs. Coverage grows faster on sites with URL churn; stable sites converge quickly. The per-domain dashboard shows the running total.
- Discovery source
- sitemap.xml is authoritative. If the sitemap lists 9 URLs, we audit those 9. We do not follow links beyond the sitemap by default.
- Deep-crawl discovery
- Opt-in option (
fillBudgetViaLinkDiscovery). When enabled, we follow same-origin links to top up the sample — respectfully, withrobots.txtDisallowrules honored. - What we do not do
- We do not attempt to log in, bypass paywalls, submit forms, execute logged-in-user journeys, or fetch non-HTML assets.
Why stratified sampling?
A flat random sample of 200 URLs across a 100k-URL directory is 0.2% coverage — dominated by the largest template cluster, leaving smaller templates barely sampled. A broken /listing/* template covering 90k pages would average out with clean category pages and score caution instead of concerning.
So we stratify the page budget across detected templates instead of drawing it flat — every template gets representation, not just the biggest cluster. The site verdict reflects the worst template, not the average URL. Fix the broken template: fix N pages in one shot.
What pseolint doesn't audit
- Core Web Vitals / page speed
- Out of scope. Use PageSpeed Insights (free) or the Chrome DevTools Lighthouse panel.
- Broken links + general site crawl
- Out of scope. Use Sitebulb ($35/mo) or Screaming Frog ($259/yr, free up to 500 URLs).
- Competitor research / backlink audits
- Out of scope. Use Ahrefs ($129/mo).
- Keyword research + rank tracking
- Out of scope. Use Semrush ($139.95/mo) or Ahrefs.
- Image weight / asset optimization
- Out of scope. PageSpeed Insights covers it; Sitebulb and Screaming Frog go deeper.
- Schema-validator-style validation
- Partial. We check schema-content consistency and required JSON-LD types as part of the AEO ruleset, but we don't replace Google's Rich Results Test for full schema validation.
Rate limits & cooldowns
- Anonymous audits
- 3 per day per browser session
- Free account audits
- 5 per day (does not roll over)
- Pro account audits
- 50 per day
- Cache between users
- If anyone audited the same URL in the last 60 minutes, you get that result instantly (no new crawl fired). Free users cannot force a re-crawl.
- Re-audit cooldown
- Authenticated accounts can force a fresh audit. Minimum 5 minutes between forced re-audits of the same URL, regardless of plan — target sites pay for our crawls in bandwidth.
- Per-host ceiling
- A single domain can receive at most 30 fresh audits per hour across all users, to prevent viral-post amplification from hammering a target.
How we treat the site we're auditing
- User-Agent
Mozilla/5.0 (compatible; pseolint/0.7.4; +https://pseolint.dev/bot)- robots.txt
- Fully honored — both Disallow paths and Crawl-delay pacing (capped at 60 seconds per request).
- Retry-After
- Honored once per URL, capped at 30 seconds. We don't hammer sites that ask us to back off.
- Concurrency
- At most 5 parallel fetches, dropping to 1 if Crawl-delay is declared.
- Total bandwidth per audit
- Capped at 50 MB of fetched bytes. We stop when we hit it, even if the budget isn't filled.
- SSRF protection
- localhost, private networks, and non-http(s) schemes are rejected. We only audit public sites.
Retention — how long reports live
- Anonymous (no account)
- 24 hours, then auto-deleted
- Free account
- 30 days
- Pro account
- Indefinite (until you delete)
- Monitored-domain audits (Pro)
- 90 days of history for trend charts
- When a report expires
- The cached HTML + structured summary are removed from object storage. Score, pageCount, and findingCount stay in the database for analytics. Source URL stays too.
What's public vs private
- Free-tier audits
- Public by default — shareable link + eligible for the /leaderboard. The URL + host + score are visible to anyone who has the share link.
- Pro-tier audits
- Private by default — only the audit owner can view.
- Visibility toggle
- Authenticated users can flip any of their own audits to private at any time via the audit page. Anonymous audits cannot be flipped (we can't confirm ownership).
- Leaderboard inclusion
- Public + completed + unexpired audits with 5+ pages. One entry per domain. Opt out by flipping to private (authed only) or letting an anonymous audit expire.
Accuracy caveats
- Sampling is lossy
- A 50-page sample of an 860-page site can miss template clusters entirely. The score reflects what we saw, not what's there. For full coverage, monitor on Pro or make sure your sitemap is complete.
- No JavaScript rendering by default
- We audit server-rendered HTML. Client-side rendered pages will look empty to us. Pro has optional browser rendering via CDP.
- The rule set is a subset of SpamBrain
- We infer plausible SpamBrain signals from public documentation, research, and observed patterns. We do not have access to Google's actual classifier and make no claim of one-to-one correspondence.
- Score is a heuristic
- Treat it as a structured conversation, not a verdict. A low score isn't a guarantee of indexing success. A high score isn't proof SpamBrain will act.
- We can't see off-page signals
- We measure on-page structural risk. We can't see the off-page authority and user-behaviour signals Google weighs most heavily — so a thin, templated page on a high-authority domain can rank fine, while a clean-looking page can still be suppressed by signals we don't observe. The audit covers the controllable, on-page surface of risk; pair it with your domain's authority for the off-page half.
Operational controls (when things go wrong)
- Kill switch
AUDITS_MODE=readonly- What readonly mode does
- New audits return 503 with a clear message; existing reports, leaderboards, and dashboards remain fully functional.
- Blocklist
- We can pause audits for a specific user or target host if abuse is detected. We always notify the affected party and explain why.
This page is the source of truth for what you can expect from pseolint's hosted audits. If you see behavior on the service that contradicts something here, that's a bug — please report it.
Sources
- Google Search Central — Search Essentials — Google Search Essentials defines robots.txt, crawlability, and technical requirements that pseolint's crawler is built to respect, including Disallow paths and Crawl-delay directives.
- Google Search Central — Large site owner's guide to managing crawl budget — Google's crawl-budget guidance explains why polite concurrency limits (5 parallel fetches, 50 MB cap, per-host ceiling of 30 audits per hour) matter for small origins on shared hosting.
- Google Search Central — Build and submit a sitemap — Google's sitemap documentation explains the sitemap.xml discovery model that pseolint uses as its authoritative URL source for template detection and stratified sampling.