Audit complete · 15d ago

pseolint.dev

pseolint.dev
Verdict
Ready

24 ship-blockers, 3 should-fix

  • Site typeprogrammatic-directory
  • Confidence70%
  • Discovered84 URLs
ERROR · pseolint.dev/r/YqLwXirkxPERROR · pseolint.dev/r/FzhWUWU9qzERROR · pseolint.dev/r/cdXVmgmvXbERROR · pseolint.dev/r/hA6HfnweEhERROR · pseolint.dev/r/dusCcvRnTfERROR · pseolint.dev/r/XKdKyuZzPfERROR · pseolint.dev/r/8qVZ5NjwH3ERROR · pseolint.dev/r/kUbVgyqMajERROR · pseolint.dev/r/naBLLuAJBVERROR · pseolint.dev/r/YNYQNmAiPhERROR · pseolint.dev/r/az3m3WjriXERROR · pseolint.dev/r/fGqmJXPRuDWARNING · pseolint.dev/changelogWARNING · pseolint.dev/leaderboardINFO · pseolint.dev/pricingINFO · pseolint.dev/limitsINFO · pseolint.dev/abuseINFO · pseolint.dev/toolsINFO · pseolint.dev/rulesINFO · pseolint.dev/symptomsINFO · pseolint.dev/methodologyINFO · pseolint.dev/tools/spambrain-checkerINFO · pseolint.dev/tools/thin-content-scannerINFO · pseolint.dev/tools/doorway-page-detectorINFO · pseolint.dev/rules/doorway-patternINFO · pseolint.dev/rules/thin-contentINFO · pseolint.dev/rules/boilerplate-ratioINFO · pseolint.dev/rules/template-diversityINFO · pseolint.dev/rules/near-duplicateINFO · pseolint.dev/rules/entity-swapINFO · pseolint.dev/rules/host-section-divergenceINFO · pseolint.dev/rules/publication-velocityINFO · pseolint.dev/rules/template-coverageINFO · pseolint.dev/rules/unique-valueINFO · pseolint.dev/rules/meta-uniquenessINFO · pseolint.dev/rules/missing-authorINFO · pseolint.dev/rules/eeat-signalsINFO · pseolint.dev/rules/title-uniquenessINFO · pseolint.dev/rules/image-alt-textINFO · pseolint.dev/rules/heading-structureINFO · pseolint.dev/rules/orphan-pagesINFO · pseolint.dev/rules/dead-endsINFO · pseolint.dev/rules/link-depthINFO · pseolint.dev/rules/cluster-connectivityINFO · pseolint.dev/rules/url-patternINFO · pseolint.dev/rules/freshness-signalsINFO · pseolint.dev/rules/llms-txtINFO · pseolint.dev/rules/crawler-accessINFO · pseolint.dev/rules/faq-coverageINFO · pseolint.dev/rules/translation-no-opINFO · pseolint.dev/rules/summary-baitINFO · pseolint.dev/rules/regurgitated-contentINFO · pseolint.dev/rules/common-phrase-reuseINFO · pseolint.dev/rules/wikipedia-paraphraseINFO · pseolint.dev/rules/value-addINFO · pseolint.dev/rules/crawlable-anchorsINFO · pseolint.dev/rules/generic-anchor-textINFO · pseolint.dev/rules/meta-description-presenceINFO · pseolint.dev/rules/language-mismatchINFO · pseolint.dev/rules/hreflang-validityINFO · pseolint.dev/rules/sitemap-hygieneINFO · pseolint.dev/rules/meta-robots-conflictINFO · pseolint.dev/rules/snippet-suppressionINFO · pseolint.dev/rules/robots-txt-limitsINFO · pseolint.dev/rules/html-sizeINFO · pseolint.dev/rules/viewport-metaINFO · pseolint.dev/symptoms/how-to-audit-programmatic-seoINFO · pseolint.dev/symptoms/pages-deindexed-bulkINFO · pseolint.dev/symptoms/lost-rankings-after-google-updateINFO · pseolint.dev/symptoms/site-reputation-abuse-penaltyINFO · pseolint.dev/symptoms/traffic-drop-no-updateINFO · pseolint.dev/symptoms/thin-content-warning-search-consoleINFO · pseolint.dev/symptoms/manual-action-pure-spamINFO · pseolint.dev/symptoms/traffic-dropped-rankings-unchangedINFO · pseolint.dev/symptoms/new-pages-not-getting-indexedINFO · pseolint.dev/symptoms/scaled-content-abuse-penaltyINFO · pseolint.dev/symptoms/doorway-pages-penaltyINFO · pseolint.dev/symptoms/duplicate-google-chose-different-canonicalINFO · pseolint.dev/symptoms/expired-domain-abuseINFO · pseolint.dev/research/seo-folklore-vs-google-docsINFO · pseolint.dev/research/llms-txt-programmatic-seoINFO · pseolint.dev/research/programmatic-seo-vs-doorway-pagesINFO · pseolint.dev/researchINFO · pseolint.dev/folkloreINFO · pseolint.dev/mcp-serverINFO · pseolint.dev/tools/nextjs-programmatic-seoINFO · pseolint.dev/tools/programmatic-seo-checklistINFO · pseolint.dev/rules/crawl-budget-optimizationINFO · pseolint.dev/rules/structured-data-at-scale
Pages12with blockers2with should-fix82with info0clean89 scanned
Pages
89
scanned
Blockers
24
findings
Should fix
3
findings
Info
133
findings
Clean
0
pages

Heuristic score over 89 sampled pages, not Google's classifier. How to read this ↓

Category grades

Integrity
A
4 issues
Discoverability
B
29 issues
Citation
B
127 issues
Data
A
0 issues
Severity adjustments4 rules softened by the programmatic-directory profile

These rules still ran and emitted findings: the site-type profile lowered their severity so the score reflects how the signal applies to this kind of site, not a one-size-fits-all penalty.

aeo/answer-firstaeo/citable-factsaeo/content-modularitytech/og-completeness

Save this audit to your history, sign in.

Monitor this domain with Pro →
Audit another site
Origin readinessConcerning
16 live fetches
Median TTFB
1050ms
p95 TTFB
4792ms
5xx rate
0%
Cache assisted
90%
Crawl coverageDiscovered 120 · audited 89 · skipped 1

Latency is high. Search-engine and AI-crawler bursts will amplify this: consider an edge cache or app-layer query cache.

Fix: add an edge CDN with a sensible s-maxage, or an app-layer query cache (Redis / Next.js unstable_cache) between the route handler and the database.

Templates · 5 detected

Findings · 160

sampled 89 pages
Top fixes by impactseverity × pages affected
  1. 1
    tech/meta-robots-conflicterrormoderate12 pages

    https://pseolint.dev/r/YqLwXirkxP declares both "index" (meta robots) and "noindex" (X-Robots-Tag header). Google applies the most restrictive directive, so "noindex" silently wins.

  2. 2
    content/citation-coveragewarningmoderate1 page

    https://pseolint.dev/changelog makes 44 quantified claims but cites 0 authoritative sources (25 named entities: ouranos labs, pseolint editorial team, iso, rfc).

  3. 3
    content/image-attributeswarningmoderate1 page

    https://pseolint.dev/leaderboard: 10 of 10 <img> tags declare neither width/height attributes nor inline sizing (e.g. https://tonfoyer.fr/opengraph-image?ef2f5ca556314a1d, https://pseolint.dev/opengraph-image?c80e752142bf0595, https://codexmachina.dev/previews/dashboard/dashboard.jpg). Without an aspect ratio the browser cannot reserve space, so content shifts as each image loads, which is what Cumulative Layout Shift measures.

  4. 4
    content/common-phrase-reusewarningmoderate1 page

    https://pseolint.dev/changelog reuses 10 common pSEO marketing clichés (e.g. "in the heart of", "gateway to", "discover the best"). High cliché density correlates with low value-add per Google's helpful-content guidance.

Blockers· 24

Severity error/critical · must fix before shipping
Errortech/meta-robots-conflict24 findings

https://pseolint.dev/r/YqLwXirkxP declares both "index" (meta robots) and "noindex" (X-Robots-Tag header). Google applies the most restrictive directive, so "noindex" silently wins.

pseolint.dev/r/YqLwXirkxP
Fix

Remove the unintended directive so all sources (meta robots, meta googlebot, X-Robots-Tag header) agree. If "noindex" is accidental (e.g. a staging header that shipped to production), it is currently deindexing/restricting this page.

moderate↗ Read more↗ Google docs12 pages affected
Affected pages12

Should fix· 3

Severity warning · should fix before scaling
Warninglow confidencecontent/citation-coverage1 finding

https://pseolint.dev/changelog makes 44 quantified claims but cites 0 authoritative sources (25 named entities: ouranos labs, pseolint editorial team, iso, rfc).

pseolint.dev/changelog
Fix

Cite the primary sources behind your numbers: link the statute, standard, dataset, .gov/.edu page, or research that backs each statistic. AI Overviews and Google's helpful-content systems weight pages that ground claims in authoritative references. Note: this rule detects statistic+citation co-occurrence, not semantic correctness.

moderate↗ Read more↗ Google docs1 page affected
Affected pages1
Warningcontent/image-attributes1 finding

https://pseolint.dev/leaderboard: 10 of 10 <img> tags declare neither width/height attributes nor inline sizing (e.g. https://tonfoyer.fr/opengraph-image?ef2f5ca556314a1d, https://pseolint.dev/opengraph-image?c80e752142bf0595, https://codexmachina.dev/previews/dashboard/dashboard.jpg). Without an aspect ratio the browser cannot reserve space, so content shifts as each image loads, which is what Cumulative Layout Shift measures.

pseolint.dev/leaderboard
Fix

Set the intrinsic width and height attributes on each <img> and let CSS scale it (width: 100%; height: auto). The browser derives aspect-ratio from the attribute pair and reserves the box before the bytes arrive. In a template, bind both from the same data source as the src.

moderate↗ Read more↗ Google docs1 page affected
Affected pages1
Warninglow confidencecontent/common-phrase-reuse1 finding

https://pseolint.dev/changelog reuses 10 common pSEO marketing clichés (e.g. "in the heart of", "gateway to", "discover the best"). High cliché density correlates with low value-add per Google's helpful-content guidance.

pseolint.dev/changelog
Fix

Replace generic marketing clichés with specific, substantive claims about this page's actual subject. SpamBrain weights cliché density as a content-quality proxy. Aim for ≤2 per page.

moderate↗ Read more1 page affected
Affected pages1

Informational· 133

Severity info · tracked for trend analysis
Infoaeo/faq-coverage68 findings

https://pseolint.dev/pricing reads as FAQ content (2 question-style headings (e.g. "What Pro unlocks", "Why we chose this pricing model")) but carries no machine-readable question/answer pairs.

pseolint.dev/pricing
Fix

Fix this in the visible page, not in markup: give each question its own heading and put the complete answer in the first paragraph directly beneath it, so an answer engine can lift a whole question/answer pair without reassembling it. Do NOT add FAQPage JSON-LD expecting a rich result: Google removed the FAQ rich result from Search on 2026-05-07 and deleted its documentation on 2026-06-15, and QAPage is documented as being only for pages where users can submit answers, not for a site's own FAQ. If a non-Google consumer of your schema needs the markup, generate it from the same per-record data that renders the headings: don't ship identical questions with only the entity name swapped.

structural↗ Read more↗ Google docs68 pages affected
Affected pages68
Infolow confidenceaeo/citable-facts49 findings

https://pseolint.dev/abuse has 0 unique citable facts. AI Overviews cite specific numbers and named references.

pseolint.dev/abuse
Fix

Replace vague language ("varies", "several weeks", "affordable", "many options") with specific values a reader or AI engine would cite: exact prices, percentages, dates, timeframes, version numbers, named products, standards, or regulations that apply to this page. For pSEO templates, bind these values from your data source so each page gets entity-specific numbers instead of repeating the same template wording. Target: 8+ unique facts per page.

structural↗ Read more↗ Google docs49 pages affected
Affected pages49
Infolow confidenceaeo/answer-first9 findings

https://pseolint.dev/symptoms/traffic-drop-no-update does not open with a direct, extractable answer: opener is 157 words (too long to extract) Marketing pages legitimately use narrative openers; this matters more for FAQ-style or directory pages.

pseolint.dev/symptoms/traffic-drop-no-update
Fix

Restructure the template to open with entity-specific facts. Instead of boilerplate or a topic preamble, lead with a complete-answer sentence containing the key number, date, agency, or form name a reader (or AI Overview) would cite. Target: <100 words, at least one concrete number, at least one named entity.

moderate↗ Read more↗ Google docs9 pages affected
Affected pages9
Infocontent/image-attributes1 finding

https://pseolint.dev/leaderboard serves 10 images and not one uses srcset or <picture>, so phones download the desktop-sized file. Google recommends responsive images; this is guidance rather than a requirement, and no image dimension or byte limit is documented.

pseolint.dev/leaderboard
Fix

Emit a srcset with a handful of widths plus a sizes attribute, or wrap the img in <picture> to offer a modern format with a fallback. Most image CDNs and framework Image components generate both from one source URL.

moderate↗ Read more↗ Google docs1 page affected
Affected pages1
Infolow confidenceaeo/content-modularity1 finding

https://pseolint.dev/changelog has 5/7 sections that are not independently extractable. Examples: "@pseolint/core": cross-references another section ('as mentioned above'), 29 paragraphs exceed 200 words | "pseolint": cross-references another section ('as mentioned above'), 12 paragraphs exceed 200 words | "@pseolint/mcp": cross-references another section ('as mentioned above'), 10 paragraphs exceed 200 words.

pseolint.dev/changelog
Fix

Each section should answer one question completely without referencing other parts of the page. (1) Replace "see above" / "as mentioned" with the actual information the reader needs. (2) Rename vague H2s ("More Info", "Details") to specific topics (e.g. "California LLC Annual Report Requirements"). (3) Break paragraphs longer than 200 words into 2–3 focused paragraphs with their own sub-headings.

moderate↗ Read more↗ Google docs1 page affected
Affected pages1

Is this your site?

Claim it to manage the listing, get a verified badge, and a followed backlink.

pseolint grade for pseolint.dev

Show the grade

pseolint.dev passed the audit. Embed the badge on your site or README; it always shows your current grade.

Markdown[![pseolint grade](https://pseolint.dev/api/badge/pseolint.dev)](https://pseolint.dev/r/mBgtBYKc3F)
HTML<a href="https://pseolint.dev/r/mBgtBYKc3F"><img src="https://pseolint.dev/api/badge/pseolint.dev" alt="pseolint grade for pseolint.dev" /></a>

How to read this report

  • Sample, not censusScored on 89 sampled pages from sitemap.xml. Template clusters across un-sampled pages may be missed.
  • Heuristic, not verdictRules inferred from public SpamBrain guidance, a structured conversation, not Google's classifier.
  • Server-rendered by defaultWe read the HTML the server returns. Client-rendered content looks empty to us; Pro audits can render JS-heavy / SPA pages in a browser first.
  • Page budgetpseolint samples up to 200 pages on free audits (50 without an account) and treats sitemap.xml as the source of truth. Pro lifts the budget to 500 pages on manual re-audits and crawls beyond the sitemap.
  • RetentionThis report is kept permanently because the site is on the public leaderboard.
  • Fair useRetention, rate limits and crawl behaviour are documented in full at pseolint.dev/limits.