All 30 checks with why-it-matters prose, severity, and cross-references to related audits.
Missing JSON-LD structured data leaves search engines without machine-readable signals to understand your content type, organization identity, or page purpose. Google's Rich Results — star ratings, FAQ dropdowns, sitelinks search boxes — are only available to pages with valid schema.org markup. Without it, your content competes on raw text signals alone, systematically losing SERP features to competitors who implement schema-org Organization and WebPage schemas. This is a direct findability penalty, not a cosmetic gap.
Why this severity: Critical because all Rich Results eligibility and schema.org knowledge-graph signals depend on JSON-LD being present and syntactically valid; absence forfeits the entire structured-data surface.
seo-advanced.structured-data.jsonld-presentSee full patternA JSON-LD block with the wrong `@type` or missing critical properties like `name`, `description`, and `url` is worse than no schema at all — it tells search engines you have content structure, then fails to describe it. Google's schema-org BlogPosting and Product parsers skip incomplete records for Rich Results eligibility. A product page with a generic `Thing` type instead of `Product` receives zero structured-data SERP benefit. Incomplete schema is technical debt that accumulates silently until a Rich Results Test exposes it.
Why this severity: High because schema type mismatches and missing critical properties directly disqualify pages from Rich Results, eliminating structured-data SERP gains even when the scaffolding is present.
seo-advanced.structured-data.schema-completenessSee full patternBreadcrumbList schema enables breadcrumb display in Google SERPs — the `Home > Category > Item` trail that appears below the page title. Without it, hierarchical pages miss a proven CTR signal: breadcrumbs communicate site structure at a glance and give users context before they click. schema-org BreadcrumbList and ListItem are among the most widely supported Rich Result types across Google, Bing, and AI-driven answer engines. Sites with three-level hierarchies that omit this schema systematically underperform peers who implement it.
Why this severity: High because breadcrumb Rich Results are a direct CTR factor in SERPs, and their absence on hierarchical pages is a measurable, recoverable ranking-signal loss.
seo-advanced.structured-data.breadcrumb-listSee full patternFAQ pages with visible Q&A content but no FAQPage schema forfeit an outsized SERP feature: Google expands FAQ Rich Results below the title link, sometimes doubling the vertical SERP footprint of a single result. The schema-org FAQPage and Question types are explicitly supported by Google for this expansion. A site with 10 FAQ questions that omits schema loses this real estate to any competitor who implements it. The mismatch between visible content and schema `mainEntity` is a common AI-generated defect — questions get hardcoded in markup but the schema block is never updated.
Why this severity: Medium because FAQ Rich Results expand SERP footprint significantly, but the failure affects only pages with FAQ content and doesn't break core site functionality.
seo-advanced.structured-data.faq-schemaSee full patternVisible star ratings on product or review pages with no Review or AggregateRating schema are invisible to search engines. Google can display star ratings in SERPs only when structured data provides the numeric signal — the visual stars in your HTML mean nothing without it. schema-org AggregateRating and Review are among the highest-CTR Rich Result types; their absence is a direct revenue impact for e-commerce and service pages where purchase intent is highest. This is a frequent AI-generated gap: a review component is built, the visual stars ship, and the schema never follows.
Why this severity: Medium because missing review schema suppresses star Rich Results in SERPs, reducing CTR on high-intent pages, but does not break site functionality or expose user data.
seo-advanced.structured-data.review-schemaSee full patternThe schema-org Organization type on the home page is the primary signal search engines use to associate your domain with a business identity, logo, and social profiles. Without it, Google's knowledge panel for your brand relies on probabilistic extraction from page text — often incomplete or wrong. The `sameAs` array linking to LinkedIn, Twitter, and GitHub profiles is how Google disambiguates your organization from others with similar names. Missing Organization schema is a fixable gap that silently suppresses brand search accuracy.
Why this severity: Low because Organization schema absence degrades knowledge-panel accuracy and brand disambiguation rather than blocking any direct user or search function.
seo-advanced.structured-data.organization-schemaSee full patternLocal businesses without schema-org LocalBusiness markup are invisible to the structured-data layer of local search. Google's local pack — the map + business listing results that appear above organic results for location-based queries — draws from structured signals including `address`, `telephone`, and `openingHoursSpecification`. A restaurant, clinic, or retail location without PostalAddress schema loses local pack eligibility to direct competitors who implement it. This is a recoverable gap that directly affects foot traffic for businesses with physical locations.
Why this severity: Low because LocalBusiness schema absence reduces local search visibility without breaking site functionality, and only affects businesses with physical locations.
seo-advanced.structured-data.local-business-schemaSee full patternVideo pages without schema-org VideoObject schema are excluded from Google's video Rich Results and video tab indexing. Google's video carousel requires `name`, `description`, `thumbnailUrl`, `uploadDate`, and `duration` to surface your video alongside search results — without them, your video is treated as an opaque embed. For tutorial, product demo, or educational content sites, video Rich Results represent a distinct SERP surface that competitors with schema markup access freely. The gap is almost always an omission, not intentional.
Why this severity: Low because VideoObject schema absence forfeits video Rich Results eligibility without breaking video playback or core site functionality.
seo-advanced.structured-data.video-schemaSee full patternClient-only rendering of product descriptions, article bodies, and pricing leaves Googlebot with empty shells — the rendering budget times out before your JavaScript finishes, so the page gets indexed with zero substantive content. User-agent-based cloaking goes further and earns manual action penalties under Google's Spam Policies, which can deindex the entire domain. Either failure mode silently collapses organic traffic on your highest-value commerce and content routes.
Why this severity: Critical because cloaking triggers manual penalties that deindex entire domains and tank organic revenue.
seo-advanced.crawlability.no-cloakingSee full patternSession IDs in query strings and unbounded faceted URLs multiply your crawlable surface exponentially — Googlebot spends its allotted fetches on duplicate variants of the same listing and never reaches your actual product pages. Infinite scroll without a paginated fallback makes content past the fold effectively invisible to crawlers. The result: shallow index coverage, delayed discovery of new pages, and wasted crawl capacity.
Why this severity: High because crawl waste compounds over thousands of URLs and starves new content of indexation.
seo-advanced.crawlability.crawl-budgetSee full patternPaginated routes without `rel=next`/`rel=prev` or canonical consolidation get indexed as disconnected, competing URLs — page 2 of `/products` ranks against page 1 for the same keywords, splitting link equity and diluting ranking signals. Googlebot treats each paginated URL as a standalone thin page, which suppresses the whole listing's authority and can trigger soft-404 classification on sparse pages.
Why this severity: High because pagination errors split PageRank across competing URLs and suppress category-level rankings.
seo-advanced.crawlability.paginationSee full patternEvery extra redirect hop costs ~500ms of crawler wait and burns one of Googlebot's retry slots — chains longer than one hop often get abandoned mid-traversal, leaving the final destination unindexed. Temporary 302/307 codes prevent PageRank consolidation entirely, so old URLs keep their equity while the new URL ranks from scratch. The compounding effect tanks migration projects and kills redirected link equity.
Why this severity: High because chained and temporary redirects silently drop PageRank and abandon crawls mid-traversal.
seo-advanced.crawlability.redirect-chainsSee full patternA single JSON syntax error in any structured data block silently invalidates that block for every search engine parser. Schema.org parsers do not partially parse malformed JSON — a missing closing brace or an unescaped character drops the entire block. Beyond syntax, schema-org DataType validation failures (wrong property types, empty required fields) prevent Rich Results without any visible error. These failures are invisible in the browser because JavaScript often doesn't execute JSON-LD, and they go undetected until a Search Console structured data report surfaces them — often weeks after deploy.
Why this severity: High because a single parse error silently drops an entire schema block from all search engine indexing, causing complete Rich Results loss with no visible symptom.
seo-advanced.crawlability.structured-data-validSee full patternPages missing from `sitemap.xml` rely entirely on internal link discovery — newly launched products, fresh blog posts, and deep category pages can sit unindexed for weeks. Conversely, including `noindex` pages in the sitemap sends contradictory signals that Google Search Console flags as `Submitted URL marked noindex` errors, which erode trust in the entire sitemap and slow crawl scheduling for legitimate URLs.
Why this severity: Medium because sitemap drift delays indexation but internal linking partially compensates for missing entries.
seo-advanced.crawlability.sitemap-completenessSee full patternA `Disallow` rule on `/_next/static/` or `/assets/` blocks Googlebot from fetching the CSS and JavaScript it needs to render the page — Google then sees unstyled, scriptless markup and may classify your pages as broken or low-quality. Mobile-first indexing amplifies this: rendered content that depends on blocked resources gets scored as if it were missing, dropping rankings on the pages you care about most.
Why this severity: Medium because blocked render resources degrade ranking signals but core HTML still reaches the crawler.
seo-advanced.crawlability.robots-txt-openSee full patternA stray `robots: { index: false }` in `app/layout.tsx` or a middleware-injected `X-Robots-Tag: noindex` header can deindex the entire site overnight without any code deploying fresh errors — the most common cause is a staging-guard that was never environment-gated. Once pages drop from the index, recovery takes weeks even after the tag is removed, and organic revenue vanishes during the wait.
Why this severity: Medium because unintended noindex can deindex the site but is detectable and reversible within a recrawl cycle.
seo-advanced.crawlability.no-unintended-noindexSee full patternMissing or misconfigured `hreflang` annotations cause Google to serve the wrong language version to users — French visitors land on English pages, bounce rates spike, and both versions compete for the same queries. Missing `x-default` means users from unlisted regions get an arbitrary variant instead of your canonical fallback, which degrades conversion on international traffic that you're already spending to acquire.
Why this severity: Info because hreflang errors only affect multi-locale sites and fall back to language-guessed serving.
seo-advanced.crawlability.hreflang-implementationSee full patternRich Results-eligible schema types like schema-org FAQPage and schema-org Review must pass Google's structural validation to appear in SERPs — structural validity is a separate gate from syntactic validity. A FAQPage block with valid JSON but a missing `acceptedAnswer` property will be indexed but never rendered as a Rich Result. Since Google Search Console only reports Rich Results errors after crawling (often days after deploy), structural validation failures accumulate undetected. Systematic pre-deploy validation closes this loop before it costs impressions.
Why this severity: Info because Rich Results validation failures reduce SERP features rather than breaking indexing or site functionality, making this a performance optimization rather than a critical defect.
seo-advanced.crawlability.rich-results-verifiedSee full patternGoogle uses Core Web Vitals — LCP, INP, and CLS — as direct page-experience ranking signals, confirmed in the 2023 Google Search documentation. Pages with LCP above 2.5s or CLS above 0.1 are algorithmically penalized in ranking relative to pages that meet thresholds. Beyond ranking, INP above 200ms produces measurably degraded user interaction feedback, which correlates with higher bounce rates. These metrics are tracked in Google Search Console under Core Web Vitals report, making poor performance visible to any competitor who looks. iso-25010:2011 performance-efficiency.time-behaviour maps directly to these thresholds.
Why this severity: Critical because Core Web Vitals are confirmed Google ranking factors — failing thresholds produces direct, algorithmic SERP ranking loss across all affected pages.
seo-advanced.technical-seo.core-web-vitalsSee full patternLighthouse Performance score below 80 on desktop or 60 on mobile indicates a page is delivering a measurably degraded experience relative to the performance budget Google uses for crawl prioritization. FCP above 1.8s means users see a blank screen for a full second longer than acceptable — search engines track this as a proxy for content delivery quality. TBT above 300ms indicates long JavaScript tasks blocking the main thread, which delays interactivity and degrades INP. iso-25010:2011 performance-efficiency.time-behaviour is the relevant quality dimension — these are engineering thresholds, not aspirational targets.
Why this severity: Medium because Lighthouse Performance score and FCP/TBT metrics influence crawl budget and user experience but are not direct ranking signals at the severity level of Core Web Vitals.
seo-advanced.technical-seo.page-speedSee full patternImages with empty, missing, or filename-only alt text fail WCAG 2.2 SC 1.1.1 (Non-text Content), exposing the site to accessibility compliance risk and excluding screen reader users from content. Beyond accessibility, search engines use alt text as an image indexing signal — non-semantic filenames like `IMG_1234.jpg` provide no keyword relevance, and unoptimized images above 1 MB inflate page weight past the 5 MB threshold that degrades mobile performance scores. iso-25010:2011 performance-efficiency.resource-utilisation maps to the weight problem; wcag:2.2 1.1.1 maps to alt text. Both compound each other.
Why this severity: Low because image alt text and optimization failures are individually recoverable without code structure changes, and the SEO and accessibility impact accumulates gradually rather than causing acute failures.
seo-advanced.technical-seo.image-optimizationSee full patternA missing Content Security Policy header leaves the application exposed to cross-site scripting via CWE-693 (Protection Mechanism Failure) and is a finding under OWASP A05 (Security Misconfiguration). CSP restricts which scripts, styles, and resources the browser will execute — without it, any XSS vector can load arbitrary scripts from external origins. For SEO, a compromised site that injects spam links or redirects risks Google Safe Browsing flagging, which removes the site from SERPs entirely until manual review clears it. A CSP that blocks analytics scripts is also a failure mode — it silently stops tracking data without an error.
Why this severity: Low in this audit context because CSP is a defense-in-depth control and its absence doesn't constitute an active vulnerability — but any existing XSS vector becomes higher-impact without it.
seo-advanced.technical-seo.content-security-policySee full patternWithout Google Search Console verification, you have no visibility into which queries drive impressions, which pages get indexed, or when Google flags your site for manual actions, security issues, or Core Web Vitals regressions. You also lose the ability to submit sitemaps, request recrawls after migrations, and disavow spam backlinks — every SEO recovery operation depends on having the property verified first.
Why this severity: Low because missing verification blocks diagnostics and recovery tools but does not directly harm rankings.
seo-advanced.technical-seo.search-consoleSee full patternDomains with zero or irrelevant backlinks rank below competitors on every commercial keyword regardless of on-page optimization — Google's algorithm treats link signals as a primary authority indicator, and a thin profile caps how high any page can climb. Sudden spikes from link farms trigger Penguin-style algorithmic demotion, and without a disavow file documenting known-bad sources, cleanup takes months of manual outreach.
Why this severity: Info because backlink quality influences authority rankings but sits outside codebase-detectable failures.
seo-advanced.technical-seo.backlink-profileSee full patternRaw `<img>` tags serving JPEG or PNG without WebP/AVIF fallbacks transfer 30–80% more bytes than equivalent next-gen formats for the same visual quality, directly inflating page weight past mobile performance thresholds. iso-25010:2011 performance-efficiency.resource-utilisation is the relevant dimension — unoptimized images are the single most common cause of mobile Lighthouse Performance scores below 60. For findability, page weight correlates with Time to First Byte and crawl efficiency: Google's crawler has bandwidth budgets per domain, and heavy pages consume more of that budget per crawl.
Why this severity: Low because format optimization is a performance multiplier rather than a blocking defect — sites function correctly without it, but every page with unoptimized images pays a measurable performance tax.
seo-advanced.technical-seo.image-formatsSee full patternFlat link architectures with no hub-and-cluster structure waste PageRank on the footer and navigation while leaving cluster pages with no topical context — Google can't infer which pages are authoritative on which subjects. Generic anchors like `click here` strip the keyword signal that descriptive anchors carry, so internal links stop contributing to the relevance score of their target pages. The cumulative effect is flat rankings across the entire site.
Why this severity: High because broken internal linking silently caps per-page authority and kills topical clustering signals.
seo-advanced.link-architecture.hub-clusterSee full patternBlog posts and articles without `datePublished` in schema-org BlogPosting are ineligible for date display in SERPs, which reduces click-through rate for time-sensitive content. Search engines use `dateModified` to determine crawl priority — pages without it are treated as stale after initial indexing, regardless of actual content freshness. A `dateModified` value earlier than `datePublished` is a schema error that signals unreliable metadata to indexers. For editorial sites where recency is a ranking signal, missing or inconsistent dates are a systematic findability disadvantage against competitors who maintain accurate temporal metadata.
Why this severity: Low because date schema absence and inconsistencies degrade freshness signals and SERP date display without causing indexing failure or functional breakage.
seo-advanced.link-architecture.content-datingSee full patternIndexable pages with under 300 words of original content get classified as thin content under Google's quality guidelines and either fail to rank or trigger site-wide quality penalties — a handful of skeletal product pages can drag down the authority of your entire catalog. Duplicated boilerplate FAQ or description blocks across many pages compound the problem by generating near-duplicate URLs that compete with each other for the same queries.
Why this severity: Low because thin content suppresses per-page rankings but rarely triggers site-wide manual actions.
seo-advanced.link-architecture.content-depthSee full patternTwo pages targeting the same primary keyword split click-through, link equity, and ranking signals — Google arbitrarily picks one to surface and suppresses the other, and the winner rotates over time so neither page builds stable authority. Common causes are legacy blog posts overlapping with new pillar pages, or tag archives competing with category pages. The result is persistent rank volatility on your highest-intent commercial queries.
Why this severity: Low because cannibalization shifts rankings between internal pages without removing the domain from results.
seo-advanced.link-architecture.keyword-cannibalizationSee full patternOrphan pages — indexable URLs with zero inbound internal links — receive no PageRank flow and often fall out of the index entirely, wasting whatever you spent producing them. Pages buried more than 3 clicks from home get crawled infrequently and inherit minimal authority, which caps their ranking ceiling regardless of content quality. Both failure modes commonly hide high-intent commercial pages that should be front-and-center.
Why this severity: Low because reachability issues suppress individual pages but do not affect well-linked core routes.
seo-advanced.link-architecture.page-reachabilitySee full patternRun this audit in your AI coding tool (Claude Code, Cursor, Bolt, etc.) and submit results here for scoring and benchmarks.
Open Advanced SEO Audit