SEO audit checklist
The SEO audit checklist behind this tool
An SEO audit checklist is the ordered list of checks that tells you whether a page can be crawled, indexed, understood, and ranked. This website SEO audit checklist is the full list our free SEO audit tool runs on any URL, grouped into 14 areas and 160 documented items, starting with indexability because everything else is wasted effort if the page cannot be indexed. Use it as an SEO audit report checklist by hand, print it as a PDF, or run all 160 checks automatically in seconds: free, no signup, no credit card, with a shareable report at the end. A full audit run covers 203 checks in all, the difference being the AI-search set documented on the GEO audit checklist.
It is built to be worked through, not just read. Every check is tickable and your progress is saved in this browser, so you can stop and come back. Each one carries how badly it hurts to skip it (35 are critical), roughly how long the fix takes, and whether it is a developer job or a content job — so you can filter the list down to what you can actually ship today, and hand the rest over as a ticket list. If you only have ten minutes, do the twelve checks below and stop there.
Written by Vasa, GEO & AEO specialist · Last updated
Start here: the 12 checks that break sites outright
0 of 12 cleared
Most SEO problems cost you a few positions. These twelve cost you the page. Clear them before you spend an afternoon on anything else on this list — a perfect title tag on a noindexed page earns nothing.
- — a noindex left behind from staging removes the page from Google entirely details
- — a header-level noindex is invisible in the page source and overrides everything in it details
- — one stray Disallow line and the page is never crawled at all details
- — soft 404s and redirect chains get dropped from the index however good the content is details
- — without one, Google picks a URL for you, and it is often the wrong one details
- — a CMS default that canonicalises every page to / can deindex a whole site details
- — a broken sitemap slows discovery of everything you publish next details
- — the strongest on-page ranking and click signal you fully control details
- — zero or several H1s leave the page with no clear topic statement details
- — a missing viewport fails mobile-first indexing, which is how every page is ranked details
- — HTTP pages lose the ranking signal and trigger browser warnings that kill conversions details
- — lorem ipsum and TODO markers shipped live are a direct quality signal against you details
How to run a full SEO audit
- 1. Fix indexability and crawl control first: Verify HTTP status codes, robots.txt directives, robots meta tags, and canonical tags. A noindex or canonical mismatch outranks every other improvement on the page.
- 2. Validate on-page tags, headings, and URL structure: Ensure title length fits the SERP snippet, meta descriptions promise clear value, and heading hierarchy is strictly sequential with exactly one H1.
- 3. Audit content depth, links, and Schema.org structured data: Verify word count against search intent, inspect internal link distribution, fix broken links, and validate JSON-LD structured data with zero syntax errors.
- 4. Review Core Web Vitals, mobile responsiveness, and security headers: Audit image alt text and compression, verify mobile viewport settings and touch targets, and enforce HTTPS, HSTS, and Content-Security-Policy headers.
- 5. Run automated verification with IMVASA free audit tool: Paste your URL into the free audit tool to test all checks automatically, review HTML evidence, and re-run after fixes to watch your score move.
Your progress
0 of 160 complete
Ticks are saved in this browser only. Nothing is uploaded and no account is needed.
Indexability and crawl control
0 / 17 done
Nothing else matters if Google cannot fetch and index the page. Start every audit here.
- Critical≤ 5 minDev
The audited URL returns 200, not a soft 404, 3xx chain or 5xx.
- Critical≤ 5 minDev
No accidental noindex or nofollow on a page you want ranked.
- Critical≤ 5 minDev
Header-level directives are checked separately; they silently override the page.
- Critical≤ 5 minDev
Reachable at the root, valid syntax, no stray BOM or HTML error page.
Generate a robots.txt - Critical≤ 5 minDev
The exact URL is evaluated against every matching user-agent group.
- Critical≤ 5 minDev
Exactly one rel=canonical, absolute, https, self-referencing unless intentional.
- Critical≤ 5 minDev
A canonical pointing at a redirect or 404 wastes the signal entirely.
- Important~30 minDev
A canonicalises to B which canonicalises back to A confuses consolidation.
- Critical≤ 5 minDev
Canonicalising to a noindexed URL can deindex the whole cluster.
- Critical~30 minDev
Deep pages canonicalising to / is a common CMS misconfiguration.
- Important≤ 5 minDev
Conflicting HTTP and HTML canonicals are resolved unpredictably.
- ImportantHalf a day+Dev
Whether meaningful content exists in server HTML or only after JavaScript runs.
- Important~30 minDev
Zero or one hop; each extra hop leaks crawl budget and link equity.
- Important~30 minDev
Permanent moves use 301/308, not 302, meta refresh or JS location swaps.
Titles, meta and headings
0 / 14 done
The classic on-page layer, judged on intent match and truncation risk, not just presence.
- Critical≤ 5 minContent
One title element, in head, non-empty.
- Important≤ 5 minContent
Roughly 30 to 60 characters so it survives the SERP snippet.
- Important≤ 5 minContent
Target term appears early rather than after the brand name.
- Important≤ 5 minContent
One description, 70 to 160 characters, written as a click promise.
- Important~30 minContent
Boilerplate descriptions across a site suppress snippet quality.
- Critical≤ 5 minContent
Zero or multiple H1s weaken the page's topical statement.
- Important≤ 5 minContent
The H1 and title should describe the same job, not two different pages.
- Important~30 minDev or content
No skipped levels (H2 to H4) and no headings used purely for styling.
- Important~30 minContent
Subheadings name the subtopics a searcher expects to find.
- Important≤ 5 minDev
Declared and valid, so both search and screen readers know the language.
- Important≤ 5 minDev
UTF-8 declared inside the first kilobyte of the document.
- Polish≤ 5 minDev
Present and reachable; missing icons show up in SERP branding.
- Polish~30 minDev
Checked for installability and mobile browser chrome.
URL structure
0 / 14 done
Fourteen checks on the URL itself. Cheap to fix, and it compounds across a whole site.
- Important~30 minContent
Descriptive words, not IDs or dates alone.
- Important≤ 5 minDev
Case-sensitive paths create duplicate URLs.
- Important~30 minDev
Underscores are not reliable word separators for search engines.
- Important≤ 5 minDev
Malformed paths generate duplicate and 404 variants.
- Polish~30 minDev
Percent-encoded paths are hard to share and easy to break.
- Polish≤ 5 minContent
Overlong URLs truncate in results and in shares.
- Important≤ 5 minDev
/blog/blog/post usually signals a routing bug.
- ImportantHalf a day+Dev
Parameters that change content should be canonicalised or handled explicitly.
- CriticalHalf a day+Dev
Session IDs create infinite duplicate crawl space.
- Important≤ 5 minDev
utm parameters in canonicals split ranking signals.
- Important≤ 5 minDev
Search result pages are thin and crawl-expensive.
- ImportantHalf a day+Dev or content
Pages more than three clicks deep receive far less crawl attention.
- Polish≤ 5 minContent
Trimmed slugs read better and match queries more tightly.
- Important~30 minDev
One canonical form; the other should redirect, not duplicate.
Content quality
0 / 11 done
Measured, not guessed: real counts and readability metrics extracted from your page.
- ImportantHalf a day+Content
Thin pages are flagged relative to what the query type needs.
- Polish~30 minContent
Scored, with the target band explained for your content type.
- Polish~30 minContent
Long sentences reduce both readability and AI extractability.
- Important~30 minContent
Wall-of-text blocks are flagged with the offending paragraph lengths.
- Important~30 minContent
Where your top terms actually appear: title, H1, first 100 words, body.
- Important~30 minContent
Density outliers are reported with exact counts.
- Polish≤ 5 minContent
Two- and three-word phrases ranked by frequency and position.
- ImportantHalf a day+Content
Which topical clusters the page covers strongly and which are missing.
- ImportantHalf a day+Dev
A very low ratio usually means content is being rendered client-side.
- Important~30 minContent
Repeated blocks and boilerplate-dominant pages.
- Important≤ 5 minDev or content
Published and modified dates present, plausible and consistent.
Structured data
0 / 10 done
JSON-LD and microdata are parsed and validated against Schema.org, with the source line number for every error.
- Important~30 minDev
JSON-LD, microdata and RDFa are all extracted.
- Critical≤ 5 minDev
Syntax errors are reported with their line in the HTML.
- Important~30 minDev
The declared @type matches what the page actually is.
- Important~30 minDev
Missing required fields for the declared type are listed individually.
- Polish~30 minDev
Fields that unlock richer results but are not strictly required.
- Critical~30 minDev or content
Markup describing content that is not on the page is a manual-action risk.
- Critical~30 minDev or content
Prices, dates and ratings in schema are compared to the rendered text.
- Important~30 minContent
Question and answer pairs exist visibly on the page.
Internal and external links
0 / 12 done
Eighteen link checks, including a real fetch of external targets rather than a pattern guess.
- Important~30 minContent
Too few links isolates the page; too many dilutes each one.
- Critical~30 minDev or content
Every internal href is resolved and status-checked.
- Important~30 minContent
Redirects are followed; bot-gated hosts are reported as unverified, not failed.
- Important~30 minContent
Repeated 'click here' and exact-match spam are both flagged.
- Polish≤ 5 minContent
Anchor links pointing at IDs that do not exist on the page.
- ImportantHalf a day+Dev or content
Sitemap pages with no internal links pointing at them.
- Polish~30 minDev or content
Link count against the practical crawl and equity limit.
- Important~30 minDev
Links that force an unnecessary hop should point at the final URL.
- Important≤ 5 minContent
Correct rel attributes on paid, UGC and untrusted links.
- Polish≤ 5 minContent
Links pointing back at the current URL waste crawl signals.
Images
0 / 15 done
Fifteen checks covering both accessibility and delivery.
- Critical~30 minContent
Every content image has an alt attribute.
- Important~30 minContent
Describes the image rather than repeating the filename or keyword.
- Polish~30 minContent
Long enough to be useful, short enough to be read aloud.
- Important≤ 5 minDev
Empty alt for decoration, not a repeated caption.
- Important~30 minDev
Prevents layout shift and improves CLS.
- ImportantHalf a day+Dev
WebP or AVIF served where legacy formats dominate.
- ImportantHalf a day+Dev
Multiple sources so mobile does not download desktop assets.
- Important~30 minDev
Intrinsic dimensions far above display size.
- Polish~30 minContent
IMG_4821.jpg carries no signal; hyphenated descriptive names do.
- Critical≤ 5 minDev or content
Every src is resolved and status-checked.
- Polish~30 minContent
figcaption pairing where figures are used.
- Polish~30 minDev
Animated GIFs are usually an order of magnitude heavier than video.
- Polish~30 minDev
Very large inline SVGs bloat the HTML payload.
- Important≤ 5 minDev
A valid img fallback inside every picture.
- Important~30 minDev
Content in CSS backgrounds is invisible to search and screen readers.
Performance signals
0 / 6 done
Static, measurable signals from the fetch. For lab metrics the report links straight to PageSpeed Insights.
- ImportantHalf a day+Dev
Payload size against the practical parse budget.
- CriticalHalf a day+Dev
Time to first byte from the audit fetch.
- Critical≤ 5 minDev
gzip or brotli on the HTML response.
- ImportantHalf a day+Dev
Synchronous CSS and JS in head, counted and listed.
- Polish≤ 5 minDev
preconnect, dns-prefetch and preload used for critical origins.
- Important≤ 5 minDev
Cache-Control present and sane for a static document.
Mobile
0 / 7 done
Mobile-first indexing means these are ranking checks, not usability nice-to-haves.
- Critical≤ 5 minDev
Exactly one viewport tag with width=device-width.
- Important≤ 5 minDev
Blocking zoom is both an accessibility and a mobile-usability failure.
- Important≤ 5 minDev
Body text large enough to read without zooming.
- Important~30 minDev
Interactive elements meeting the minimum tap area.
- Critical~30 minDev
Fixed-width containers wider than a phone viewport.
- Critical~30 minDev or content
Full-screen overlays on entry, distinguished from normal sticky headers.
- Important~30 minDev
Adjacent controls that are easy to mis-tap.
Security and trust headers
0 / 11 done
Security headers are a trust signal and, for HTTPS and mixed content, a direct ranking factor.
- Critical~30 minDev
The page is served over TLS and HTTP redirects to it.
- Critical≤ 5 minDev
Certificate resolves without warnings.
- Important≤ 5 minDev
Strict-Transport-Security present with a sensible max-age.
- ImportantHalf a day+Dev
Present and not trivially permissive.
- Polish≤ 5 minDev
nosniff set on the document response.
- Important≤ 5 minDev
Clickjacking protection through either mechanism.
- Polish≤ 5 minDev
Set to a policy that does not leak full URLs cross-origin.
- Polish≤ 5 minDev
Powerful features restricted by default.
- Critical~30 minDev
Any http:// subresource on an https page is listed individually.
- Critical≤ 5 minDev
API keys and tokens accidentally rendered into the markup.
Accessibility
0 / 12 done
WCAG-aligned static checks. They overlap heavily with what AI parsers need to understand a page.
- Important~30 minDev
header, nav, main, footer present and used once each where appropriate.
- Important≤ 5 minDev
Exactly one main element wrapping the primary content.
- Critical~30 minDev
Every input has a programmatically associated label.
- Important~30 minDev
Roles exist, are spelled correctly and are not redundant.
- Polish≤ 5 minDev
A keyboard-reachable skip-to-content link.
- Important≤ 5 minDev
Outline suppression without a replacement indicator is flagged.
- Polish≤ 5 minDev
Positive tabindex values break natural focus order.
- Important~30 minDev or content
Detectable contrast failures from declared colours.
- Polish~30 minDev or content
Data tables use th and scope correctly.
- Polish≤ 5 minContent
Foreign-language passages marked with lang.
- ImportantHalf a day+Content
Captions or transcripts referenced for audio and video.
Social and sharing
0 / 8 done
Ten checks so shared links render as a card instead of a bare URL.
E-E-A-T signals
0 / 14 done
Sixteen checks on the trust layer Google's quality raters and AI engines both lean on.
- Important~30 minContent
Linked from the page or site navigation.
- Important~30 minContent
A real contact route, not only a form widget.
- Important~30 minContent
Present and linked in the footer.
- PolishHalf a day+Content
How content is produced and reviewed.
- Important~30 minContent
Verifiable organisational identity.
- Important≤ 5 minDev or content
Dates on the page, not only in markup.
- Important~30 minContent
Claims backed by outbound links to primary sources.
- Important~30 minContent
Whether cited domains are authoritative or self-referential.
- Important~30 minContent
Numbers on the page traced to a source.
- Critical≤ 5 minContent
Required where monetised links exist.
- CriticalHalf a day+Content
Extra trust requirements on money and health topics.
HTML validity and internationalisation
0 / 9 done
Parser-level problems that quietly break everything downstream.
- Critical≤ 5 minDev
Missing doctype triggers quirks mode.
- Critical≤ 5 minDev
Duplicated head sections silently drop metadata.
- Important≤ 5 minDev
Duplicates are resolved unpredictably.
- Polish≤ 5 minDev
Flow content inside head noscript breaks parsing.
- Critical≤ 5 minContent
Lorem ipsum, TODO and template defaults.
- ImportantHalf a day+Dev
Very large documents get truncated before the content ends.
- Important~30 minDev
Valid language and region codes on every alternate.
- Important~30 minDev
Each page references itself in its own cluster.
- Critical~30 minDev
Alternates pointing at noindexed URLs break the cluster.
Run this checklist on your site automatically
Paste a URL and the tool works through every item above, returns the evidence from your own HTML, and ranks the fixes by impact.
Frequently asked questions
- Where do I start if I have hundreds of pages?
- Do not start with pages, start with templates. Almost every one of these 160 checks is set once in a layout or template and inherited by every page using it. Audit one representative URL per template - one product page, one blog post, one category page, one landing page - fix what fails there, and the fix propagates. Then run the twelve critical checks at the top of this page across the rest of the site to catch the pages that escape their template.
- How long does a full SEO audit actually take?
- Budget two to four hours for a single page done properly by hand, and a full working day for a small site across its templates. The 160 checks here are labelled by effort: most are five minutes or less, roughly a third take about half an hour, and a handful - render mode, Core Web Vitals, query parameter handling - are engineering projects rather than audit items. Use the "Under 5 minutes" filter for a first pass that clears most of the list in one sitting.
- Which of these checks actually move rankings?
- Indexability is not a ranking factor, it is a prerequisite: get it wrong and nothing else counts. After that, titles, H1s, content depth against intent, internal links, and mobile usability do the real ranking work. The rest - security headers, social tags, accessibility, HTML validity - are hygiene that rarely moves a position on its own but compounds across a site and protects you from the failures that do. The 35 checks marked Critical are the ones where being wrong costs you visibility outright.
- Half of this checklist belongs to my developers. What can I do on my own?
- Filter the list to Content and you are left with the work a writer, marketer, or SEO can ship without a deploy: titles, meta descriptions, H1s and heading structure, content depth, keyword placement, internal links and anchor text, alt text, author bylines, citations, and disclosure. Run the Developer filter to produce the ticket list for engineering, and hand it over with the severity labels attached so it can be prioritised against their other work.
- Does my progress save if I close the tab?
- Yes. Ticked checks are stored in your own browser, so the list is still there when you come back. Nothing is uploaded, there is no account, and there is no sync - progress is per browser and per device, so ticks made on your laptop will not appear on your phone. Use Reset progress to start a fresh audit on a new page or site.
- What is included in an SEO audit checklist?
- An SEO audit checklist includes 160 checks across 14 categories: indexability and crawl control, on-page tags, headings, URL structure, content quality, structured data (Schema.org), internal and external links, image optimization, Core Web Vitals and speed signals, mobile responsiveness, security headers, accessibility, and E-E-A-T signals.
- What should an SEO audit checklist cover?
- A complete SEO audit checklist covers indexability and crawl control first, then on-page elements, URL structure, content quality, structured data, internal and external links, images, performance, mobile, security headers, accessibility, and E-E-A-T signals. Anything that skips indexability is not an audit, it is a content review.
- How to run a full SEO audit step-by-step?
- To run a full SEO audit: (1) verify indexability and crawl access so search engines can reach the page, (2) check title tags, meta descriptions, and heading hierarchy, (3) validate content quality, readability, and Schema.org structured data, (4) test internal link equity, images, and Core Web Vitals, and (5) re-audit after fixing high-priority items to verify your score improvement.
- Can I download this SEO audit checklist as a PDF?
- Yes. This page is formatted for clean printing and offline export. Use your browser's Print dialog (Ctrl+P or Cmd+P) and select 'Save as PDF' to get an ad-free checklist with an empty tick box beside every item. Any filters you have applied carry into the print, so you can export just the critical checks, or just the developer tickets, instead of the whole list.
- Can I run this checklist automatically?
- Yes. IMVASA Audit Tool runs the checks on this page against any public URL for free, with no signup, and returns evidence from your own HTML plus a prioritised fix list.
- How often should I run an SEO audit?
- Run a full audit quarterly, and a short indexability pass after every deployment that touches routing, rendering, or metadata. Most catastrophic SEO problems are shipped, not grown.
- What is the difference between an SEO audit and a GEO audit?
- An SEO audit optimises for ranked links in Google. A GEO audit optimises for being retrieved and cited by AI answer engines like ChatGPT, Perplexity, and Google AI Overviews. They overlap on crawlability and structure but diverge sharply on answer readiness, entity clarity, and evidence.
- Do I need paid tools to complete this checklist?
- No. Every item here can be verified with free tools: this audit tool, Google Search Console, and Google PageSpeed Insights for lab performance metrics.
Keep going
GEO audit checklist
What AI answer engines need before they cite you.
Free GEO audit tool
Score your AI search visibility on any URL.
Free SEO audit tools compared
Honest look at the free tiers, including Semrush alternatives.
Free SEO audit MCP
Run audits from ChatGPT, Claude or Cursor.
Free file generators
robots.txt, sitemap.xml and llms.txt builders.