SEO Audit
The 12 SEO Checks Explained
A detailed breakdown of every check Surfaceable runs, what it looks for, and what to do when it flags an issue.
1. Page SEO
Analyses the fundamental on-page SEO elements of each URL.
What it checks:
<title>tag — presence, length (50–60 chars optimal), uniqueness- Meta description — presence, length (120–160 chars optimal)
- H1 tag — must be exactly one per page
- H2–H6 structure — logical hierarchy
- Canonical tag — correct self-referencing or cross-domain canonical
- Hreflang — valid language/region codes and reciprocal links
- Lang attribute on
<html>element - Viewport meta tag
Common issues: missing meta description, title too short/long, multiple H1s, missing canonical.
2. Indexability
Checks whether your pages can be found and indexed by search engines.
What it checks:
robots.txt— exists, is parseable, doesn't block critical pathsnoindexmeta tag — flags pages that are accidentally noindexednofollowon internal links — flags links that shouldn't be nofollowed- Redirect chains — detects 301/302 chains longer than 2 hops
- XML sitemap — presence, accessibility, format validity
- Sitemap URLs vs crawled URLs — surfaces pages missing from the sitemap
Common issues: sitemap missing, important pages blocked in robots.txt, redirect chains.
3. Schema / Structured Data
Detects and validates JSON-LD structured data against Schema.org.
What it checks:
- Presence of any JSON-LD on the page
- Valid JSON (parses without error)
- Recognised Schema.org
@typevalues - Required properties for each type (e.g.
nameforOrganization,headlineforArticle) - Consistency between structured data and visible content
Common issues: no structured data present, invalid JSON, wrong @type for page content.
Why it matters for AI: AI assistants use structured data to understand entities. A page with correct Organization, Product, or Article schema is easier for an AI to cite accurately.
4. Content Analysis
Analyses the quality and structure of the page's written content.
What it checks:
- Word count — flags thin content below 300 words
- Readability — Flesch-Kincaid score (aim for Grade 8–10 for general audiences)
- Keyword density — warns if a single keyword appears more than 3% of total words
- Heading distribution — checks H2–H6 are used to break up long content
- Paragraph length — flags blocks of text longer than 150 words
Common issues: thin content, unreadable score (too complex), missing subheadings.
5. Links
Maps every internal and external link on the page and checks their health.
What it checks:
- Internal links — counts and maps all same-domain links
- External links — counts and lists all outbound links
- Broken links — HEAD requests each link and flags 4xx/5xx responses
- Anchor text — flags excessive use of generic anchors like "click here"
- Link depth — pages that are more than 3 clicks from the homepage
Common issues: broken internal links, orphan pages (no internal links pointing to them).
6. HTTP Headers
Analyses the HTTP response headers returned by the server.
What it checks:
Cache-Control— proper caching directives for static assetsContent-Encoding— gzip or brotli compression enabledStrict-Transport-Security— HSTS configuredX-Content-Type-Options— set tonosniff- Response time — flags pages taking over 1 second to first byte
- HTTP vs HTTPS — flags insecure HTTP pages
Common issues: no compression, missing HSTS, slow TTFB.
7. Social Meta
Validates Open Graph and Twitter Card meta tags for correct social sharing.
What it checks:
- Open Graph:
og:title,og:description,og:image,og:url,og:type - Twitter Card:
twitter:card,twitter:title,twitter:description,twitter:image - Image dimensions — OG images should be at least 1200×630px
- Consistency — OG title/description should match the page title/meta description
Common issues: missing og:image, OG tags present but no Twitter Card, inconsistent titles.
8. Core Web Vitals
Fetches real-world performance data via the Google PageSpeed Insights API.
What it checks:
- LCP (Largest Contentful Paint) — should be under 2.5s
- INP (Interaction to Next Paint) — should be under 200ms
- CLS (Cumulative Layout Shift) — should be under 0.1
- TTFB (Time to First Byte) — should be under 800ms
- PageSpeed score — 0–100 for both mobile and desktop
Common issues: slow LCP (usually large unoptimised images), high CLS (missing image dimensions), poor INP (JavaScript blocking).
9. Security
Audits your site's security posture via Mozilla Observatory.
What it checks:
- Overall Mozilla Observatory grade (A+ to F)
- Content Security Policy — presence and configuration
- X-Frame-Options — clickjacking protection
- Referrer-Policy — data leakage prevention
- Permissions-Policy — feature restriction
- Subresource Integrity — external script integrity checks
Common issues: missing CSP, no X-Frame-Options, low Observatory grade.
10. DNS
Checks DNS configuration, email authentication, and SSL certificate health.
What it checks:
- A / AAAA records — IPv4 and IPv6
- MX records — mail exchange configuration
- SPF record — email sender authorisation
- DMARC record — email authentication policy
- SSL certificate — valid, not expired, correct hostname
- SSL expiry — warns when cert expires in under 30 days
Common issues: missing SPF/DMARC, expiring SSL certificate, no IPv6 (AAAA) record.
11. HTML Validation
Validates your page's HTML5 markup against W3C standards.
What it checks:
- Parse errors — malformed tags, unclosed elements
- Deprecated elements — use of
<font>,<center>,<marquee> - Duplicate IDs —
idattributes that appear more than once - Missing required attributes — e.g.
alton<img>,langon<html>
Common issues: duplicate IDs, unclosed tags from CMS templates, deprecated elements.
12. Accessibility
Checks for WCAG 2.1 AA compliance issues that affect both users and SEO.
What it checks:
- Images — all
<img>elements must have analtattribute - Form inputs — every
<input>must have an associated<label> - Heading order — headings must not skip levels (e.g. H1 → H3)
- Colour contrast — flagged where detectable from HTML/CSS
- Viewport — must not disable user scaling
- Language —
langattribute must be set on<html> - Links — no empty
<a>tags, no duplicate link text pointing to different URLs
Common issues: images without alt text, unlabelled form fields, skipped heading levels.