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

Looking for an SEO audit checklist PDF? This page is print-formatted.

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. 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. 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. 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. 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. 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.

Filter
Filters apply to the printed PDF as well, so you can print just the critical list.

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.

  • Important≤ 5 minDev

    An absolute Sitemap: line pointing at a live sitemap.

    Generate a robots.txt
  • Critical~30 minDev

    Correct XML, correct namespace, served as XML not HTML.

    Generate a sitemap.xml
  • Important≤ 5 minDev

    Orphaned-from-sitemap pages get crawled far less often.

    Generate a sitemap.xml
  • 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.

  • 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.

  • Important≤ 5 minDev

    Meta and link tags after body opens are ignored by crawlers.

  • 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.

  • 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.

  • Important~30 minDev or content

    The entity layer AI engines use for attribution.

  • Polish~30 minDev

    Improves both SERP display and internal-structure understanding.

0 / 12 done

Eighteen link checks, including a real fetch of external targets rather than a pattern guess.

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.

  • 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.

  • Important≤ 5 minContent

    Present, non-empty and distinct from boilerplate.

  • Important~30 minDev or content

    Absolute https URL that returns an image.

  • Polish~30 minDev or content

    Large enough for a summary_large_image card.

  • Important≤ 5 minDev

    Mismatched og:url reattributes the share to another page.

  • Polish≤ 5 minDev

    website, article or product as appropriate.

  • Important≤ 5 minDev

    Declared, with the matching title, description and image.

  • Polish~30 minDev or content

    Whether the page offers a share path at all.

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 minDev

    The byline is backed by Person or Organization markup.

  • Important~30 minContent

    Credentials or experience stated, not just a name.

  • 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.