Catalog/SEO issues
SEO issues

Technical SEO Issues — Fixes & Checklist

A plain-English guide to 157 technical SEO issues — what each means, why it matters, and exactly how to fix it. Your technical SEO audit checklist.

157
distinct issues
Every issue we've observed

Invalid ARIA role

View breakdown →

Control has no accessible name

View breakdown →

Dialog has no accessible name

View breakdown →

Heading levels skip a level

View breakdown →

No llms.txt for AI agents

View breakdown →

No main landmark for AI agents

View breakdown →

Leftover AI-assistant phrase in page text

View breakdown →

Low text variety (weak AI-content signal)

View breakdown →

Unfilled template or prompt-leak text

View breakdown →

Page discloses AI-generated content

View breakdown →

Uniform sentence length (scaled-content hygiene signal)

View breakdown →

AMP markup present (no Google Search benefit since Jul 2026)

View breakdown →

robots.txt-disallowed URL receives internal links (crawl-budget leak)

View breakdown →

Noindex page receives internal links (crawl-budget waste)

View breakdown →

Page served uncached (no-store/private or CDN bypass)

View breakdown →

Canonical target is non-200 / non-indexable

View breakdown →

Canonical target reachable only via a canonical tag (no inlinks)

View breakdown →

Canonical chain forms a loop

View breakdown →

Missing canonical tag

View breakdown →

Canonical points to a different URL

View breakdown →

Interior page canonicalizes to the homepage

View breakdown →

Canonical is not an absolute URL

View breakdown →

Canonical target is noindex

View breakdown →

Canonical target redirects to another URL

View breakdown →

Lorem-ipsum placeholder text in a live page

View breakdown →

Low text-to-HTML ratio

View breakdown →

Main text is hard to read (low Flesch Reading Ease)

View breakdown →

Thin content (low word count)

View breakdown →

Title tag and meta description are identical

View breakdown →

Access blocked (HTTP 403 / WAF) — crawler couldn't fetch; not a page defect

View breakdown →

Rate-limited (HTTP 429) — site throttled the crawler; not a page defect

View breakdown →

noarchive directive (blocks cached copy)

View breakdown →

noindex set via the X-Robots-Tag HTTP header (easy to miss)

View breakdown →

nosnippet / max-snippet:0 directive (blocks snippets & AI Overviews)

View breakdown →

Duplicate page content

View breakdown →

Duplicate meta description across pages

View breakdown →

Near-duplicate page content

View breakdown →

Homepage duplicated across protocol/host variants (no redirect)

View breakdown →

Duplicate <title> across pages

View breakdown →

Article page has no author attribution (E-E-A-T)

View breakdown →

Article page has no publication date (freshness / E-E-A-T)

View breakdown →

No character encoding declared (meta charset or Content-Type)

View breakdown →

Missing <!DOCTYPE html> (quirks-mode rendering risk)

View breakdown →

Page could not be fetched

View breakdown →

Incomplete/empty response after retries (likely transient — re-crawl)

View breakdown →

robots.txt blocks AI search/citation crawlers

View breakdown →

Missing <h1>

View breakdown →

Multiple <h1> elements

View breakdown →

Content-Type header doesn't match the actual content

View breakdown →

Invalid hreflang language code

View breakdown →

Self hreflang language disagrees with html lang

View breakdown →

hreflang set has no self-reference

View breakdown →

hreflang has no return link (not reciprocal)

View breakdown →

Missing html lang attribute

View breakdown →

Image alt text is keyword-stuffed (repetition / low variety)

View breakdown →

Image alt text is very long (possible keyword stuffing)

View breakdown →

Broken image (src returns 4xx/5xx)

View breakdown →

Image filename is generic/auto-generated (missed image-search signal)

View breakdown →

Likely hero image lacks fetchpriority=high

View breakdown →

Images missing alt text

View breakdown →

Images without width/height (layout shift / CLS)

View breakdown →

Hero/LCP image is lazy-loaded (loading=lazy delays LCP)

View breakdown →

Page-level nofollow directive

View breakdown →

Page is noindex

View breakdown →

noindex + nofollow (blocks link equity flow)

View breakdown →

Broken external link

View breakdown →

Broken internal link (target 4xx/5xx)

View breakdown →

Page is more than 3 clicks from the homepage

View breakdown →

Internal link has no anchor text / accessible name

View breakdown →

Orphan page (no internal inlinks)

View breakdown →

Internal link points to a redirect

View breakdown →

Page has only one internal inlink (fragile crawl path)

View breakdown →

Internal link points to a noindex page

View breakdown →

Missing meta description

View breakdown →

Meta description too long

View breakdown →

Meta description too short

View breakdown →

Legacy <meta name=keywords> tag present (Google ignores it)

View breakdown →

Meta-refresh redirect (use an HTTP 301 instead)

View breakdown →

Canonical differs between mobile and desktop

View breakdown →

Mobile version has much less content than desktop

View breakdown →

Mobile version has far fewer internal links than desktop

View breakdown →

Meta description differs between mobile and desktop

View breakdown →

Dynamic serving without Vary: User-Agent (cache-poisoning risk)

View breakdown →

Indexability directive differs between mobile and desktop

View breakdown →

Structured data present on desktop but missing on mobile

View breakdown →

Title differs between mobile and desktop

View breakdown →

Missing viewport meta tag

View breakdown →

Missing Open Graph tags

View breakdown →

Large DOM (over 1500 elements) slows rendering & interaction

View breakdown →

Same-host image over 100KB transferred (LCP risk)

View breakdown →

Legacy image format (jpg/png/gif) with no next-gen fallback

View breakdown →

Large HTML document

View breakdown →

No ETag header (no conditional GET for unchanged pages)

View breakdown →

No Last-Modified header (no conditional GET for unchanged pages)

View breakdown →

Render-blocking script in <head> (no defer/async)

View breakdown →

Slow server response

View breakdown →

Same-host CSS/JS served without gzip/Brotli compression

View breakdown →

Same-host CSS file appears unminified

View breakdown →

Same-host JavaScript file appears unminified

View breakdown →

Redirect chain (multiple hops)

View breakdown →

URL redirects to another URL

View breakdown →

Canonical changes after JS render

View breakdown →

Most content only present after JS render

View breakdown →

Most links only present after JS render

View breakdown →

Indexability directive changes after JS render

View breakdown →

Title changes after JS render

View breakdown →

Content required JS rendering (escalated)

View breakdown →

Content only rendered by JavaScript (invisible to non-JS crawlers & AI)

View breakdown →

Blocked by robots.txt

View breakdown →

robots.txt blocks CSS/JS the pages need to render

View breakdown →

robots.txt missing (root returns 404/none)

View breakdown →

Article schema missing recommended properties (Top Stories / image carousel)

View breakdown →

BreadcrumbList present but structurally incomplete

View breakdown →

Deep page has no BreadcrumbList structured data

View breakdown →

Comma decimal in schema ratingValue/price (invalid number)

View breakdown →

Deprecated data-vocabulary.org markup (no rich-result eligibility)

View breakdown →

Dataset schema incomplete (name/description; Dataset Search only)

View breakdown →

Deprecated schema type with no Google rich result

View breakdown →

Event schema missing required properties (name/startDate/location)

View breakdown →

FAQPage structured data (rich result removed May 2026)

View breakdown →

Schema describes content not visible on the page

View breakdown →

Rich-result schema missing required properties

View breakdown →

JobPosting schema missing required properties

View breakdown →

LocalBusiness schema missing required properties (name/address)

View breakdown →

JSON-LD block missing @context or @type

View breakdown →

No structured data detected

View breakdown →

Product schema missing required or recommended properties

View breakdown →

QAPage schema incomplete (mainEntity Question with an answer)

View breakdown →

Recipe schema missing required properties (name/image)

View breakdown →

Review schema missing required properties (author/itemReviewed/reviewRating)

View breakdown →

SoftwareApplication schema incomplete (name/offers-or-rating/recommended)

View breakdown →

Structured-data date has already passed (stale event/job/offer)

View breakdown →

VideoObject schema missing required properties (name/thumbnailUrl/uploadDate)

View breakdown →

Missing recommended security headers

View breakdown →

Mixed content on HTTPS page

View breakdown →

target=_blank link without rel=noopener (tab-napping)

View breakdown →

Non-indexable URL listed in sitemap

View breakdown →

Non-200 URL listed in sitemap

View breakdown →

Indexable page not listed in sitemap

View breakdown →

Client error (4xx) response

View breakdown →

Server error (5xx) response

View breakdown →

Non-200 final status

View breakdown →

Soft 404 (200 OK but content signals not found)

View breakdown →

Missing or empty <title>

View breakdown →

Title tag is identical to the H1 (missed keyword variation)

View breakdown →

Title likely truncated in SERP (too wide)

View breakdown →

Title is very short

View breakdown →

Missing Twitter Card tag

View breakdown →

Double slash in URL path (duplicate-content risk)

View breakdown →

Many query parameters

View breakdown →

Non-ASCII characters in URL path

View breakdown →

URL is very long

View breakdown →

Underscores in URL path (prefer hyphens)

View breakdown →

Uppercase letters in URL path

View breakdown →

Video contentUrl served from own host, not a CDN

View breakdown →

Video element present but hidden/zero-size (prominence)

View breakdown →

VideoObject declared but no player element on page

View breakdown →

Related
Catalog Invalid ARIA role Control has no accessible name Dialog has no accessible name Heading levels skip a level No llms.txt for AI agents No main landmark for AI agents Leftover AI-assistant phrase in page text Low text variety (weak AI-content signal) Unfilled template or prompt-leak text Page discloses AI-generated content Uniform sentence length (scaled-content hygiene signal) AMP markup present (no Google Search benefit since Jul 2026) robots.txt-disallowed URL receives internal links (crawl-budget leak) Noindex page receives internal links (crawl-budget waste) Page served uncached (no-store/private or CDN bypass) Canonical target is non-200 / non-indexable Canonical target reachable only via a canonical tag (no inlinks) Canonical chain forms a loop Missing canonical tag Canonical points to a different URL Interior page canonicalizes to the homepage Canonical is not an absolute URL Canonical target is noindex Canonical target redirects to another URL Lorem-ipsum placeholder text in a live page Low text-to-HTML ratio Main text is hard to read (low Flesch Reading Ease) Thin content (low word count) Title tag and meta description are identical Access blocked (HTTP 403 / WAF) — crawler couldn't fetch; not a page defect Rate-limited (HTTP 429) — site throttled the crawler; not a page defect noarchive directive (blocks cached copy) noindex set via the X-Robots-Tag HTTP header (easy to miss) nosnippet / max-snippet:0 directive (blocks snippets & AI Overviews) Duplicate page content Duplicate meta description across pages Near-duplicate page content Homepage duplicated across protocol/host variants (no redirect) Duplicate <title> across pages Article page has no author attribution (E-E-A-T) Article page has no publication date (freshness / E-E-A-T) No character encoding declared (meta charset or Content-Type) Missing <!DOCTYPE html> (quirks-mode rendering risk) Page could not be fetched Incomplete/empty response after retries (likely transient — re-crawl) robots.txt blocks AI search/citation crawlers Missing <h1> Multiple <h1> elements Content-Type header doesn't match the actual content Invalid hreflang language code Self hreflang language disagrees with html lang hreflang set has no self-reference hreflang has no return link (not reciprocal) Missing html lang attribute Image alt text is keyword-stuffed (repetition / low variety) Image alt text is very long (possible keyword stuffing) Broken image (src returns 4xx/5xx) Image filename is generic/auto-generated (missed image-search signal) Likely hero image lacks fetchpriority=high Images missing alt text Images without width/height (layout shift / CLS) Hero/LCP image is lazy-loaded (loading=lazy delays LCP) Page-level nofollow directive Page is noindex noindex + nofollow (blocks link equity flow) Broken external link Broken internal link (target 4xx/5xx) Page is more than 3 clicks from the homepage Internal link has no anchor text / accessible name Orphan page (no internal inlinks) Internal link points to a redirect Page has only one internal inlink (fragile crawl path) Internal link points to a noindex page Missing meta description Meta description too long Meta description too short Legacy <meta name=keywords> tag present (Google ignores it) Meta-refresh redirect (use an HTTP 301 instead) Canonical differs between mobile and desktop Mobile version has much less content than desktop Mobile version has far fewer internal links than desktop Meta description differs between mobile and desktop Dynamic serving without Vary: User-Agent (cache-poisoning risk) Indexability directive differs between mobile and desktop Structured data present on desktop but missing on mobile Title differs between mobile and desktop Missing viewport meta tag Missing Open Graph tags Large DOM (over 1500 elements) slows rendering & interaction Same-host image over 100KB transferred (LCP risk) Legacy image format (jpg/png/gif) with no next-gen fallback Large HTML document No ETag header (no conditional GET for unchanged pages) No Last-Modified header (no conditional GET for unchanged pages) Render-blocking script in <head> (no defer/async) Slow server response Same-host CSS/JS served without gzip/Brotli compression Same-host CSS file appears unminified Same-host JavaScript file appears unminified Redirect chain (multiple hops) URL redirects to another URL Canonical changes after JS render Most content only present after JS render Most links only present after JS render Indexability directive changes after JS render Title changes after JS render Content required JS rendering (escalated) Content only rendered by JavaScript (invisible to non-JS crawlers & AI) Blocked by robots.txt robots.txt blocks CSS/JS the pages need to render robots.txt missing (root returns 404/none) Article schema missing recommended properties (Top Stories / image carousel) BreadcrumbList present but structurally incomplete Deep page has no BreadcrumbList structured data Comma decimal in schema ratingValue/price (invalid number) Deprecated data-vocabulary.org markup (no rich-result eligibility) Dataset schema incomplete (name/description; Dataset Search only) Deprecated schema type with no Google rich result Event schema missing required properties (name/startDate/location) FAQPage structured data (rich result removed May 2026) Schema describes content not visible on the page Rich-result schema missing required properties JobPosting schema missing required properties LocalBusiness schema missing required properties (name/address) JSON-LD block missing @context or @type No structured data detected Product schema missing required or recommended properties QAPage schema incomplete (mainEntity Question with an answer) Recipe schema missing required properties (name/image) Review schema missing required properties (author/itemReviewed/reviewRating) SoftwareApplication schema incomplete (name/offers-or-rating/recommended) Structured-data date has already passed (stale event/job/offer) VideoObject schema missing required properties (name/thumbnailUrl/uploadDate) Missing recommended security headers Mixed content on HTTPS page target=_blank link without rel=noopener (tab-napping) Non-indexable URL listed in sitemap Non-200 URL listed in sitemap Indexable page not listed in sitemap Client error (4xx) response Server error (5xx) response Non-200 final status Soft 404 (200 OK but content signals not found) Missing or empty <title> Title tag is identical to the H1 (missed keyword variation) Title likely truncated in SERP (too wide) Title is very short Missing Twitter Card tag Double slash in URL path (duplicate-content risk) Many query parameters Non-ASCII characters in URL path URL is very long Underscores in URL path (prefer hyphens) Uppercase letters in URL path Video contentUrl served from own host, not a CDN Video element present but hidden/zero-size (prominence) VideoObject declared but no player element on page

Audit your own site — free

157 checks, internal PageRank, render-diff. No signup, results in ~30s.

Scan your site →