Audit complete · 19d ago

pseolint.dev

pseolint.dev
Verdict
Caution

1 should-fix, 79 informational

  • Site typeunclear
  • Confidence0%
  • Discovered56 URLs
WARNING · 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/thin-contentINFO · pseolint.dev/rules/doorway-patternINFO · pseolint.dev/rules/near-duplicateINFO · pseolint.dev/rules/boilerplate-ratioINFO · pseolint.dev/rules/host-section-divergenceINFO · pseolint.dev/rules/template-diversityINFO · pseolint.dev/rules/entity-swapINFO · pseolint.dev/rules/publication-velocityINFO · pseolint.dev/rules/template-coverageINFO · pseolint.dev/rules/unique-valueINFO · pseolint.dev/rules/missing-authorINFO · pseolint.dev/rules/meta-uniquenessINFO · pseolint.dev/rules/title-uniquenessINFO · pseolint.dev/rules/heading-structureINFO · pseolint.dev/rules/eeat-signalsINFO · pseolint.dev/rules/image-alt-textINFO · pseolint.dev/rules/orphan-pagesINFO · pseolint.dev/rules/dead-endsINFO · pseolint.dev/rules/link-depthINFO · pseolint.dev/rules/url-patternINFO · pseolint.dev/rules/cluster-connectivityINFO · pseolint.dev/rules/freshness-signalsINFO · pseolint.dev/rules/llms-txtINFO · pseolint.dev/rules/crawler-accessINFO · pseolint.dev/rules/faq-coverageINFO · pseolint.dev/rules/summary-baitINFO · pseolint.dev/rules/translation-no-opINFO · pseolint.dev/rules/common-phrase-reuseINFO · pseolint.dev/rules/regurgitated-contentINFO · 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/wikipedia-paraphraseINFO · pseolint.dev/researchINFO · pseolint.dev/folkloreINFO · pseolint.dev/mcp-serverINFO · pseolint.dev/tools/nextjs-programmatic-seoINFO · pseolint.dev/tools/programmatic-seo-checklistClean page · no findings
Pages0with blockers1with should-fix51with info1clean53 scanned
Pages
53
scanned
Blockers
0
findings
Should fix
1
findings
Info
79
findings
Clean
1
pages

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

Category grades

Integrity
A
2 issues
Discoverability
A
4 issues
Citation
A
74 issues
Data
A
0 issues
Severity adjustments2 rules softened by the unclear 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/citable-factstech/og-completeness

Save this audit to your history, sign in.

Monitor this domain with Pro →
Audit another site
Origin readinessNot ready
14 live fetches
Median TTFB
915ms
p95 TTFB
11057ms
5xx rate
0%
Cache assisted
80%
Crawl coverageDiscovered 56 · audited 53 · skipped 0

Origin looks unprepared for crawl load. A cache-cold dynamic origin at this rate will struggle under bot traffic and may leak to your database bill.

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.

Findings · 80

sampled 53 pages
Top fixes by impactseverity × pages affected
  1. 1
    content/image-attributeswarningmoderate1 page

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

Should fix· 1

Severity warning · should fix before scaling
Warningcontent/image-attributes1 finding

https://pseolint.dev/leaderboard: 8 of 8 <img> tags declare neither width/height attributes nor inline sizing (e.g. https://tonfoyer.fr/opengraph-image?ef2f5ca556314a1d, https://codexmachina.dev/previews/dashboard/dashboard.jpg, https://pseolint.dev/opengraph-image?c80e752142bf0595). 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

Informational· 79

Severity info · tracked for trend analysis
Infoaeo/faq-coverage46 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 docs46 pages affected
Affected pages46
Infolow confidenceaeo/citable-facts28 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 docs28 pages affected
Affected pages28
Infocontent/image-attributes1 finding

https://pseolint.dev/leaderboard serves 8 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

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/FzhWUWU9qz)
HTML<a href="https://pseolint.dev/r/FzhWUWU9qz"><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 53 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.