The technical SEO checklist, ordered by what fails
Most checklists are somebody's opinion in no particular order. Every item here carries a failure rate measured over a real sample, and the list is sorted by that rather than by category.
A technical SEO checklist is only useful if it is ordered. A page has to pass four gates in sequence: a crawler must reach it, receive the content in the HTML, be able to work out what it is about, and be able to lift a passage out of it. A failure early in that chain makes everything after it irrelevant, so the order is the checklist.
What actually breaks, measured
Failure rates over 88 professional marketing sites that returned HTML to our fetcher, out of a sample of 98. The 10 that answered with bot protection are excluded from every rate here, because a blocked fetch has no HTML and would score every content check as a failure.
Source: our own audit of 98 agency sites, rerun and reported at/research/geo-agency-audit/. Crawler access figures below come from a separate and larger sample of 1,048 sites, reported at /research/ai-crawler-blocking/. The two samples are not interchangeable and each row says which one it used.
Gate 1 Reach
Can the crawler fetch the page at all. Nothing below this matters until it passes, which is why it is first and why most of the weight in the engine sits here.
The page returns 200 to a crawler, not just to a browser
The most under checked item on any list. Across 1,048 sites, 18% answered 401, 403 or 429 to a declared crawler, and 2.1% of all sites then served a normal page to a Chrome user agent from the same address. The owner never sees it, because their own browser works fine.
How to check it. Fetch your own homepage with curl and no user agent. If that differs from what a browser gets, your bot protection is the problem.
No accidental noindex
Weighted joint highest in our engine with reachability. A staging noindex shipped to production is the single most expensive one line mistake in SEO.
How to check it. Check the meta robots tag and the X-Robots-Tag header. Both can carry it, and people usually only look at the first.
robots.txt allows the crawlers you want
fails on 5% of 88 sitesSeparate from whether it allows Googlebot. Across 1,048 sites, 28.3% block at least one AI crawler while only 1.5% block Googlebot, and 26.8% do the first while permitting the second.
How to check it. List your agents explicitly. A blanket allow is not the same as naming GPTBot, ClaudeBot, PerplexityBot and Google-Extended.
The canonical points somewhere that resolves
fails on 35% of 88 sitesThe highest failure rate of anything we measure, and almost always accidental: apex pointing at www, http pointing at https, or a trailing slash mismatch that sends the canonical through a redirect.
How to check it. Request the canonical URL itself and confirm it returns 200 directly, with no hop.
An XML sitemap exists and lists the pages you care about
A sitemap is a hint rather than an instruction, but a missing one on a large site removes the only cheap way a crawler discovers deep pages.
How to check it. Confirm it is referenced from robots.txt and that the URLs in it match your canonicals exactly, including the trailing slash.
Gate 2 Read
Is the content in the HTML the crawler received. This is the gate that changed most in the last three years, and its failures are silent: the page looks perfect in a browser.
Content is present before JavaScript runs
fails on 0% of 88 sitesThe rate in our agency sample is zero, which is the finding rather than an absence of one: professional marketing sites are mostly static. The failure concentrates hard in app shells and React sites built without server rendering.
How to check it. Disable JavaScript and reload. If the page is empty, a large part of the retrieval ecosystem receives an empty page.
The page is not shipping more bytes than its content justifies
fails on 25% of 88 sitesA quarter of a professional sample fails this. Weight is a crawl budget question as much as a speed one, and it is the check our own site has had to fight hardest.
How to check it. Compare HTML bytes against visible words. A page whose markup dwarfs its text will also fail text to code ratio.
The server answers quickly enough that a crawler waits
fails on 24% of 88 sitesCrawlers work to a budget and a slow first byte reduces how much of your site gets fetched per visit.
How to check it. Measure time to first byte from outside your own network, cold, and more than once.
Compression and caching headers are set
fails on 11% of 88 sitesThe cheapest fix on this whole list and one that is still missed by roughly one site in ten.
How to check it. Confirm gzip or brotli on HTML, and a cache policy on static assets.
Gate 3 Understand
Can a machine work out what the page is about and who published it. This is where the classic on-page list lives, and where most checklists stop.
One H1, and a heading order with no skipped levels
fails on 3% of 88 sitesLow failure rate in a professional sample and worth checking anyway, because when it breaks it breaks the outline a parser builds from the page.
How to check it. Read the headings alone, in order. If they do not summarise the page, neither does your structure.
A title and meta description that describe this page specifically
Title carries the most weight of any on-page check in our engine. The common failure is not absence, it is a template that produces the same string on hundreds of pages.
How to check it. Sort every title on the site and look for duplicates. That is the whole test.
Structured data that parses and matches the visible page
fails on 13% of 88 sitesPresent and parsing on only 34.6% of the 1,048 site web sample. Schema that fails to parse is not a warning, it is silently ignored in full.
How to check it. Validate it, then read it. Markup claiming a review score the page does not show is a manual action waiting to happen.
Images carry alt text
fails on 3% of 88 sitesTwo separate checks in our engine: whether alts exist at all, and whether coverage across the page is reasonable. Passing the first and failing the second is common.
How to check it. Empty alt is correct for decorative images. Missing alt is not the same thing as empty alt.
Open Graph and Twitter card tags are present
Not a ranking factor, and the reason it stays on the list is that it decides what your link looks like when somebody shares it, which is where links come from.
How to check it. Check the image resolves absolutely, not as a relative path.
Language and hreflang are declared if you serve more than one
The lowest weight check in the engine for a single language site and a serious one for anybody else, because hreflang errors are reciprocal and one bad end breaks both.
How to check it. Every hreflang cluster must reference itself and every sibling must point back.
Gate 4 Quote
New, and the half that classic checklists do not have. Assistants cite passages rather than pages, and a page that cannot be lifted from is a page that does not get named.
Sections answer one question in a passage that stands alone
Our engine scores this as answer extractability and weights it as heavily as render gap. A passage that only makes sense after the three paragraphs above it cannot be quoted.
How to check it. Take any single paragraph out of context and read it. If it still answers something, it is liftable.
The page carries a date a machine can read
fails on 32% of 88 sitesNearly a third of a professional sample fails this. A date rendered by JavaScript, or written only as "last updated recently", is not a date.
How to check it. Put it in the markup, not only on the screen.
The page says who wrote it, in the markup
fails on 25% of 88 sitesA quarter of the sample has no author in the markup and no Person or Organization schema. This is the single cheapest gap to close on this list.
How to check it. A byline in the HTML plus an author field in your schema. Both, because they are read by different things.
llms.txt, if you publish one, is real
Optional and widely faked. Of the sites we found serving one, only 11.5% were genuine files: the rest were soft 404s returning 200 with a page of HTML, which counts as a file if you trust status codes and as nothing if you read it.
How to check it. Fetch yours and read the body. If it is your 404 page with a 200 on it, you do not have one.
Where this list came from
These 19 items are the human readable form of the 36 checks our own audit engine runs, grouped by the gate they belong to rather than by the category they sit in internally. Some engine checks collapse into one line here because they are one question to a person and two questions to a parser, and a few carry no failure rate because they did not break often enough in our sample to have earned one.
The reason to sort by failure rate rather than by importance is that importance is an opinion and a rate is not. A check can be weighted heavily and almost never fail, which makes it a poor use of an afternoon. The canonical target check is the opposite: modest weight, and the most broken thing we measure.
Nothing here is a ranking factor claim. Every item is a precondition, which is a different and much more checkable kind of statement: these are the things that have to be true before the question of ranking comes up at all.
Run the list against your own site
Every item above is one of the 36 checks in our free audit, and each has its own tool.
Fair questions
What is a technical SEO checklist?
An ordered list of the machine readable things that have to be true before a page can rank or be cited: that a crawler can fetch it, that the content is in the HTML it receives, that the markup describes the page accurately, and that a passage can be lifted out of it. It is a diagnostic list rather than a strategy, and the ordering matters more than the length.
What should I check first in a technical SEO audit?
Reachability and indexability, in that order, because every other item on the list is irrelevant if they fail. Then the canonical target, which is the most commonly broken item we measure: it fails on roughly a third of professional marketing sites, almost always because the canonical points at a URL that redirects rather than resolving directly.
How many items should a technical SEO checklist have?
Fewer than you would think, and each one needs a reason to be there. Our own engine runs 36 checks across eight categories, weighted so that a broken canonical does not score the same as a missing Twitter card. Lists of two hundred items are usually one real check split into fragments, which moves the hard part, deciding what matters, back onto the reader.
Is technical SEO still relevant with AI search?
More so, and the list gets longer rather than shorter. Everything a search crawler needed, an AI crawler also needs, plus three things it did not: per agent access in robots.txt, content that survives without JavaScript, and passages that can be quoted on their own. The technical half is now the part that decides whether you are eligible to be cited at all.
How often should I run through this?
Fully once or twice a year, and the reach gate after every release that touches templates, routing, rendering or infrastructure. Most serious technical problems arrive with a deploy rather than with an algorithm update, and the interval that catches those is measured in weeks.
Can I check these myself for free?
Yes, and the mechanical half is fully automatable. We run every item on this page as a free check, and so do several other people. What no tool does well is decide which findings matter for your business and in what order, which is the part worth a person.
Run all 36 checks
on your own site
Paste a URL and get the whole list scored, with the failures ordered by what would change anything. Free, no card.
Measuring rankings in