SEO Audit
73
Overall score

https://example.com/

Audit #69 · started 6 months ago · 10.39 s · triggered by fix-guide-smoke
✓ 27 pass ! 17 warn ✗ 6 fail · 73 total checks Content unchanged since last audit
meta
52
headings
92
schema
0
technical
90
sitemap
40
ssl security
80
page speed
93
links
80
images
100
content
48
mobile
100
hreflang
100
geo
100
spam security
—
domain security
—
⚠️
23 issues need attention
Open the for prioritised, copy-paste-ready fixes with location and AI-personalised suggestions.

Fix progress

0 of 23 issues fixed · Est. time left: 10h 5m
0%
Severity: | Showing / 23 | PDF CSV
High meta Fail priority 78/100 −100 pts Trivial · ~5m

Meta description present

No meta description found.

Location in HTML
Line 1 · html > head
>    1  <!doctype html><html lang="en"><head><title>Example Domain</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5e…
     2  
Generic best practice

Add a meta description (120-160 characters) summarising the page. It appears under the title in search results and directly affects click-through rate.

Code fix
Before:
<head>
  <!-- no meta description -->
</head>
After:
<head>
  <meta name="description" content="Compelling 120-160 character summary describing what's on this page and why a user should click.">
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
High content Fail priority 72/100 −70 pts Medium · ~45m

E-E-A-T: Expertise

Weak: The content demonstrates minimal expertise, providing only basic information about the domain's intended use for documentation purposes. It lacks depth, specialized knowledge, or technical detail beyond its simple functional statement.

Generic best practice

Show expertise: author bio with credentials, citations to reputable sources, in-depth coverage of the topic, technical accuracy.

AI suggestion (context-aware)
Generating personalised suggestion…
High content Fail priority 68/100 −80 pts Hard · ~120m

Sufficient word count

Only 17 words — thin content.

Generic best practice

Expand the content. 300+ words is the minimum for a substantive page; 1000+ for competitive informational queries. Cover the topic thoroughly.

AI suggestion (context-aware)
Generating personalised suggestion…
High content Fail priority 68/100 −80 pts Hard · ~120m

E-E-A-T: Experience

Weak: The page shows no first-hand experience with any subject matter as it serves only as a placeholder domain example. There is no demonstration of practical engagement or real-world application.

Generic best practice

Demonstrate first-hand experience: original photos, personal anecdotes, before/after results, screenshots from the actual product/service.

AI suggestion (context-aware)
Generating personalised suggestion…
High meta Warning priority 65/100 −60 pts Easy · ~15m

OpenGraph image present

Missing <meta property="og:image">.

Location in HTML
Line 1 · html > head
>    1  <!doctype html><html lang="en"><head><title>Example Domain</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5e…
     2  
Generic best practice

Add an Open Graph image so links to this page render as a rich card on social platforms. Use 1200x630 px, JPEG/PNG, under 1MB.

Code fix
Before:
<head>
  <!-- no og:image -->
</head>
After:
<head>
  <meta property="og:image" content="https://yoursite.com/og-image.jpg">
  <meta property="og:image:width" content="1200">
  <meta property="og:image:height" content="630">
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
High schema Fail priority 62/100 −100 pts Medium · ~45m

JSON-LD structured data present

No JSON-LD scripts found.

Generic best practice

Add structured data (JSON-LD) so search engines understand your content type. Schema can trigger rich results — stars, prices, FAQs — that increase click-through rate.

Code fix
Before:
<!-- no JSON-LD -->
After:
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Page title",
  "author": {"@type": "Person", "name": "Author name"},
  "datePublished": "2026-01-01"
}
</script>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium meta Warning priority 68/100 −50 pts Trivial · ~5m

Title length

Title is only 14 characters — too short to communicate value.

Location in HTML
Line 1 · html > head > title
>    1  <!doctype html><html lang="en"><head><title>Example Domain</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5e…
     2  
Generic best practice

Title is outside the 30-60 character sweet spot. Google truncates titles longer than ~60 chars in search results, hiding your keywords. Keep the primary keyword near the start.

Code fix
Before:
<title>14 chars</title>
After:
<title>Shortened title — primary keyword first (≤60 chars)</title>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium technical Warning priority 66/100 −40 pts Easy · ~15m

Canonical URL present

No canonical link tag found.

Location in HTML
Line 1 · html > head
>    1  <!doctype html><html lang="en"><head><title>Example Domain</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5e…
     2  
Generic best practice

Add a canonical link to prevent duplicate-content issues. It tells search engines which URL is the authoritative version of this page.

Code fix
Before:
<head>
  <!-- no canonical -->
</head>
After:
<head>
  <link rel="canonical" href="https://example.com/">
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium sitemap Fail priority 61/100 −100 pts Easy · ~15m

sitemap.xml accessible

No sitemap at https://example.com/sitemap.xml (status 0).

Generic best practice

Publish an XML sitemap listing all indexable URLs. Submit it via Google Search Console for faster discovery.

Code fix
Before:
// File missing: /sitemap.xml
After:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://yoursite.com/</loc>
    <lastmod>2026-01-01</lastmod>
    <changefreq>weekly</changefreq>
  </url>
</urlset>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium meta Warning priority 59/100 −60 pts Trivial · ~5m

Title is descriptive

Title has fewer than 3 words.

Generic best practice

Make the title descriptive — at least 3 meaningful words including the page topic and brand. Single-word titles waste a high-impact ranking signal.

Code fix
Before:
<title>2 words</title>
After:
<title>Specific Page Topic — Brand Name</title>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium meta Warning priority 59/100 −60 pts Trivial · ~5m

OpenGraph title present

Missing <meta property="og:title">.

Location in HTML
Line 1 · html > head
>    1  <!doctype html><html lang="en"><head><title>Example Domain</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5e…
     2  
Generic best practice

Add og:title for social-media link previews. Without it, shared links fall back to the page <title>, which may not be ideal for Facebook/LinkedIn cards.

Code fix
Before:
<head>
  <!-- no og:title -->
</head>
After:
<head>
  <meta property="og:title" content="Your social-friendly title">
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium meta Warning priority 59/100 −60 pts Trivial · ~5m

OpenGraph description present

Missing <meta property="og:description">.

Location in HTML
Line 1 · html > head
>    1  <!doctype html><html lang="en"><head><title>Example Domain</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5e…
     2  
Generic best practice

Add og:description so links shared on Facebook/LinkedIn show a preview blurb. Falls back to meta description if missing, but a tailored one converts better.

Code fix
Before:
<head>
  <!-- no og:description -->
</head>
After:
<head>
  <meta property="og:description" content="Punchy social-share blurb, 90-150 chars.">
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
Medium page speed Warning priority 59/100 −50 pts Easy · ~15m

Compression enabled

No gzip/brotli content-encoding header.

Generic best practice

Enable gzip or Brotli compression on your server. Typically cuts text payload by 70-80% — easy LCP win.

AI suggestion (context-aware)
Generating personalised suggestion…
Medium sitemap Warning priority 56/100 −50 pts Trivial · ~5m

robots.txt accessible

No robots.txt found at https://example.com/robots.txt

Generic best practice

Create a /robots.txt file. Tells crawlers which pages to skip and where your sitemap lives.

Code fix
Before:
// File missing: /robots.txt
After:
User-agent: *
Allow: /

Sitemap: https://example.com/sitemap.xml
AI suggestion (context-aware)
Generating personalised suggestion…
Medium ssl security Warning priority 54/100 −40 pts Easy · ~15m

HSTS header present

Missing strict-transport-security header.

Generic best practice

Add Strict-Transport-Security header so browsers refuse HTTP for your domain after the first visit. Bumps SSL Labs grade to A+.

Code fix
Strict-Transport-Security: max-age=31536000; includeSubDomains
AI suggestion (context-aware)
Generating personalised suggestion…
Medium links Warning priority 50/100 −60 pts Medium · ~45m

Healthy internal link count

No internal links on this page.

Generic best practice

Add internal links to related pages on your site. Internal links spread link equity and help users discover related content.

AI suggestion (context-aware)
Generating personalised suggestion…
Low meta Warning priority 40/100 −60 pts Trivial · ~5m

Twitter card present

Missing <meta name="twitter:card">.

Location in HTML
Line 1 · html > head
>    1  <!doctype html><html lang="en"><head><title>Example Domain</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5e…
     2  
Generic best practice

Add a twitter:card meta tag to control how Twitter renders shared links. Use "summary_large_image" with an og:image for the best preview.

Code fix
Before:
<!-- no twitter:card -->
After:
<meta name="twitter:card" content="summary_large_image">
AI suggestion (context-aware)
Generating personalised suggestion…
Low meta Warning priority 40/100 −30 pts Trivial · ~5m

Charset meta tag present

No charset declaration in <head>.

Generic best practice

Declare a charset as the FIRST element inside <head>. Without it, browsers may guess wrong and corrupt non-ASCII characters.

Code fix
Before:
<head>
  <title>...</title>
</head>
After:
<head>
  <meta charset="utf-8">
  <title>...</title>
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
Low headings Warning priority 40/100 −40 pts Medium · ~45m

Sufficient H2 tags

Only 0 H2 tags.

Generic best practice

Use H2s to break content into scannable sections. Pages with no H2 read as a wall of text — worse for users and for search relevance.

Code fix
Before:
<!-- no H2 sections -->
After:
<h2>First Major Section</h2>
<p>...</p>
<h2>Second Major Section</h2>
<p>...</p>
AI suggestion (context-aware)
Generating personalised suggestion…
Low ssl security Warning priority 39/100 −40 pts Trivial · ~5m

X-Content-Type-Options

Missing x-content-type-options header.

Generic best practice

Add X-Content-Type-Options: nosniff so browsers honour the Content-Type and don't MIME-sniff for malicious files.

Code fix
X-Content-Type-Options: nosniff
AI suggestion (context-aware)
Generating personalised suggestion…
Low technical Warning priority 38/100 −30 pts Easy · ~15m

Favicon present

No favicon link tag.

Generic best practice

Add a favicon — a 16×16 / 32×32 icon shown in browser tabs and bookmarks. Helps brand recognition.

Code fix
Before:
<head>
  <!-- no favicon -->
</head>
After:
<head>
  <link rel="icon" href="/favicon.ico">
  <link rel="icon" type="image/svg+xml" href="/favicon.svg">
</head>
AI suggestion (context-aware)
Generating personalised suggestion…
Low sitemap Warning priority 37/100 −30 pts Trivial · ~5m

Sitemap referenced

robots.txt does not reference a sitemap.

Generic best practice

Reference your sitemap from robots.txt so crawlers can find it without guessing.

Code fix
User-agent: *
Allow: /

Sitemap: https://yoursite.com/sitemap.xml
AI suggestion (context-aware)
Generating personalised suggestion…
Low ssl security Warning priority 32/100 −40 pts Medium · ~45m

CSP header present

Missing content-security-policy header.

Generic best practice

Add a Content-Security-Policy header to block XSS by whitelisting allowed script/style sources.

Code fix
Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'
AI suggestion (context-aware)
Generating personalised suggestion…
Pass Title tag present
title_present
Title tag found.
Actual: Example Domain
Warning Title length
title_length
Title is only 14 characters — too short to communicate value.
Fix: Aim for 30–60 characters.
Actual: 14 chars
Expected: 30–60 chars
Warning Title is descriptive
title_unique_words
Title has fewer than 3 words.
Fix: Make the title descriptive — include the page topic and brand.
Actual: 2 words
Fail Meta description present
meta_description_present
No meta description found.
Fix: Add a compelling 120–160 character meta description.
Actual: missing
Expected: present
Warning OpenGraph title present
og_title_present
Missing <meta property="og:title">.
Fix: Add the og:title meta tag for rich social previews.
Actual: missing
Expected: present
Warning OpenGraph description present
og_description_present
Missing <meta property="og:description">.
Fix: Add the og:description meta tag for rich social previews.
Actual: missing
Expected: present
Warning OpenGraph image present
og_image_present
Missing <meta property="og:image">.
Fix: Add the og:image meta tag for rich social previews.
Actual: missing
Expected: present
Warning Twitter card present
twitter_card_present
Missing <meta name="twitter:card">.
Fix: Add the twitter:card meta tag for rich social previews.
Actual: missing
Expected: present
Pass Viewport meta tag present
meta_viewport_present
Viewport meta tag present.
Actual: width=device-width, initial-scale=1
Warning Charset meta tag present
meta_charset_present
No charset declaration in <head>.
Fix: Add <meta charset="utf-8"> as the first child of <head>.
Pass H1 tag present
h1_present
Found 1 H1.
Actual: 1 H1
Pass Single H1 tag
h1_count
Exactly one H1.
Actual: 1
Pass H1 has reasonable length
h1_length
H1 length 14 chars.
Actual: 14 chars
Warning Sufficient H2 tags
h2_count
Only 0 H2 tags.
Fix: Use H2s to break content into scannable sections.
Actual: 0
Expected: ≥ 2
Pass Heading hierarchy
heading_hierarchy
Heading levels descend logically.
Actual: 0 skips
Fail JSON-LD structured data present
schema_json_ld_present
No JSON-LD scripts found.
Fix: Add structured data (Organization, WebSite, BreadcrumbList).
Actual: 0 scripts
Skipped JSON-LD is valid JSON
schema_valid_json
No JSON-LD to evaluate.
Skipped Recommended schema types used
schema_recommended_types
No JSON-LD to evaluate.
Skipped No deprecated schema types
schema_no_deprecated
No JSON-LD to evaluate.
Skipped No restricted schema types
schema_no_restricted
No JSON-LD to evaluate.
Info Microdata or RDFa present
schema_microdata_present
No microdata. JSON-LD is preferred — this is informational only.
Actual: 0
Warning Canonical URL present
canonical_present
No canonical link tag found.
Fix: Add <link rel="canonical" href="..."> to prevent duplicate indexing.
Actual: missing
Skipped Canonical self-references
canonical_self_referencing
No canonical to evaluate.
Pass Page is indexable
robots_meta_indexable
No noindex directive.
Actual: (not set)
Pass HTML lang attribute
lang_attribute_present
<html lang="en"> declared.
Actual: en
Pass HTML5 doctype
doctype_html5
HTML5 doctype declared.
Warning Favicon present
favicon_present
No favicon link tag.
Fix: Add <link rel="icon" href="/favicon.ico">.
Pass HTTP status 2xx
http_status_ok
Server returned 200.
Actual: 200
Pass Response time acceptable
response_time_ok
Fetched in 87 ms.
Actual: 87 ms
Warning robots.txt accessible
robots_txt_found
No robots.txt found at https://example.com/robots.txt
Fix: Add a robots.txt to control crawler access.
Actual: 0
Skipped robots.txt does not block
robots_txt_no_block
No robots.txt to evaluate.
Fail sitemap.xml accessible
sitemap_xml_found
No sitemap at https://example.com/sitemap.xml (status 0).
Fix: Generate and host an XML sitemap.
Actual: 0
Warning Sitemap referenced
sitemap_referenced
robots.txt does not reference a sitemap.
Fix: Add "Sitemap: https://example.com/sitemap.xml" to robots.txt.
Pass Page served over HTTPS
ssl_https
Served over HTTPS.
Actual: https
Pass TLS handshake succeeds
ssl_valid
TLS handshake succeeded.
Actual: example.com
Pass HTTP redirects to HTTPS
http_redirects_to_https
HTTP requests redirect to HTTPS.
Warning HSTS header present
hsts_header_present
Missing strict-transport-security header.
Fix: Add strict-transport-security for hardened security posture.
Actual: missing
Warning CSP header present
csp_header_present
Missing content-security-policy header.
Fix: Add content-security-policy for hardened security posture.
Actual: missing
Warning X-Content-Type-Options
x_content_type_options
Missing x-content-type-options header.
Fix: Add x-content-type-options for hardened security posture.
Actual: missing
Pass PageSpeed performance score
pagespeed_score
Score 100/100.
Actual: 100/100
Pass Largest Contentful Paint
lcp_within_threshold
Within good threshold (0.76s).
Actual: 0.76s
Pass Cumulative Layout Shift
cls_within_threshold
Within good threshold (0).
Actual: 0
Pass First Contentful Paint
fcp_within_threshold
Within good threshold (0.76s).
Actual: 0.76s
Pass Time To First Byte
ttfb_within_threshold
Within good threshold (0s).
Actual: 0s
Info Interaction to Next Paint
inp_within_threshold
INP is a field-only metric — not measured here.
Actual: field-only
Pass Few render-blocking resources
render_blocking_resources
No render-blocking resources detected.
Warning Compression enabled
gzip_or_brotli
No gzip/brotli content-encoding header.
Fix: Enable gzip or Brotli on your server.
Warning Healthy internal link count
internal_link_count
No internal links on this page.
Fix: Link to related pages on your site to spread link equity.
Actual: 0
Skipped No broken internal links
no_broken_internal_links
No internal links to test.
Pass External links safe
external_links_safe
All external _blank links use rel=noopener.
Actual: 1 external
Pass Descriptive anchor text
descriptive_anchor_text
Anchor texts are descriptive.
Actual: 0/1 generic
Info Images have alt text
images_alt_present
No <img> tags on page.
Actual: 0
Skipped Below-fold images lazy
images_lazy_loaded
No images to evaluate.
Skipped Modern image formats
images_modern_formats
No images to evaluate.
Skipped Images have dimensions
images_have_dimensions
No images to evaluate.
Fail Sufficient word count
word_count
Only 17 words — thin content.
Fix: Target 300+ words; ideal 1000+.
Actual: 17 words
Expected: ≥ 300
Skipped Readable prose
readability
Insufficient text to score.
Fail E-E-A-T: Experience
eeat_experience
Weak: The page shows no first-hand experience with any subject matter as it serves only as a placeholder domain example. There is no demonstration of practical engagement or real-world application.
Fix: Experience is the most impactful E-E-A-T weakness here — address first.
Actual: 2/10
Expected: ≥ 7
Fail E-E-A-T: Expertise
eeat_expertise
Weak: The content demonstrates minimal expertise, providing only basic information about the domain's intended use for documentation purposes. It lacks depth, specialized knowledge, or technical detail beyond its simple functional statement.
Fix: Expertise is the most impactful E-E-A-T weakness here — address first.
Actual: 3/10
Expected: ≥ 7
Pass E-E-A-T: Authoritativeness
eeat_authority
Strong: This domain is managed by IANA (Internet Assigned Numbers Authority) and is officially designated for documentation examples, giving it high institutional authority. Its status as the canonical example domain in internet standards documentation establishes strong authoritative positioning.
Actual: 8/10
Pass E-E-A-T: Trustworthiness
eeat_trust
Strong: The page is highly trustworthy as it's operated by IANA under ICANN oversight, uses HTTPS, and serves its stated purpose reliably. Its long-standing official status and transparent purpose make it dependable, though it offers minimal content to evaluate for accuracy.
Actual: 9/10
Pass Viewport set for mobile
mobile_viewport
Responsive viewport configured.
Actual: width=device-width, initial-scale=1
Pass Tap targets reasonable
mobile_tap_targets
No obvious tap-target sizing problems.
Info Legible font sizes
mobile_font_size
No inline body font-size — relying on stylesheet defaults.
Actual: unknown
Pass No Flash/legacy plugins
mobile_no_flash
No legacy plugin elements.
Info hreflang tags present (if i18n)
hreflang_present
No hreflang tags. OK for monolingual sites.
Actual: 0
Skipped hreflang codes valid
hreflang_valid_codes
No hreflang to evaluate.
Skipped hreflang self-reference
hreflang_self_ref
No hreflang to evaluate.
Skipped hreflang x-default present
hreflang_x_default
No hreflang to evaluate.
Skipped Content provides clear answers
geo_clear_answers
Content too short to evaluate.
Skipped High factual density
geo_factual_density
Content too short to evaluate.
Skipped Structured for AI extraction
geo_structured_for_ai
Content too short to evaluate.
Skipped Cites authoritative sources
geo_authoritative_sources
Content too short to evaluate.