An SEO audit checklist is the ordered list of things to verify on a website so search engines can crawl it, index the right URLs and understand every page. This one has 45 checks in nine groups, each with how to verify it for free and what counts as a pass. It covers the whole site: the site-wide files, one page of every template and what Google Search Console reports. For the reasons behind each area, read the technical SEO guide, which this checklist puts into practice. Allow two to four hours for a site with a handful of templates.
Quick answer
- Work top to bottom. The groups are in order of impact: a page Google cannot index makes every later check irrelevant.
- Audit templates, not pages. Pick one URL of each page type (home, category, product or service, article, landing page). A fix in the template fixes every page built from it.
- Check the site-wide files once: robots.txt, the XML sitemap and the http, https,
wwwand trailing-slash variants. - Use Search Console for what only Google knows: which URLs are indexed, which are not and why, and field Core Web Vitals.
- Write down the evidence for every fail (URL, what you saw, where) so the fix can be verified later.
- Fix blockers first: indexing, then crawl paths, then duplicates, then templates, then speed and extras.
How this checklist differs from a one-page audit
A one-page audit asks whether a single URL is set up to rank; the on-page SEO checklist walks through it check by check. This checklist is the level above: whether robots.txt and the sitemap agree, whether every URL variant collapses into one, whether templates repeat a mistake across hundreds of pages, and what Google has indexed. You run the one-page audit once per template as part of it.
Before you start: scope and access
- List the templates (home, category, product or service, article, landing page, static pages) and pick one URL of each, plus the ten pages with most organic clicks from Search Console → Performance → Pages.
- Get access to Google Search Console, the CMS or SEO plugin settings, and ideally someone who can change server or CDN rules.
- Decide where findings go. The SEO audit report template has a structure for writing them up.
A desktop crawler helps on sites of more than a few hundred pages, to find orphans and site-wide duplicates, but the checks below do not need one.
1. Indexing: can Google keep your pages?
Do this group first, on every template URL and the top ten pages.
| # | Check | How to verify | Pass when |
|---|---|---|---|
| 1 | Pages return HTTP 200 | Run the audit or a status checker on each URL | 200 on the final URL, at most one redirect before it |
| 2 | No accidental noindex | View source for name="robots"; check the X-Robots-Tag header | Only pages you want out of search carry noindex |
| 3 | Not blocked by robots.txt | Search Console → URL Inspection, or a robots.txt tester | Every page you want indexed is allowed for Googlebot |
| 4 | Indexed pages match your intent | Search Console → Indexing → Pages, "Indexed" count | Roughly the number of pages you want in search |
| 5 | "Not indexed" reasons make sense | Same report, "Why pages aren't indexed" | No important URLs under noindex, 404, soft 404 or blocked |
| 6 | CMS search visibility is on | WordPress: Settings → Reading | "Discourage search engines" is unticked |
If an important page fails here, stop and fix it before continuing. Why is my page not in Google? is the step-by-step diagnosis, and Discovered – currently not indexed covers the most common Search Console status.
2. Site-wide files: robots.txt and the XML sitemap
| # | Check | How to verify | Pass when |
|---|---|---|---|
| 7 | robots.txt exists and answers 200 | Open /robots.txt | Plain text, 200, no Disallow: / for all agents |
| 8 | No important paths blocked | Read each Disallow line | CSS, JavaScript and images the page needs are not blocked |
| 9 | Sitemap declared | Sitemap: line in robots.txt, submitted in Search Console | At least one absolute sitemap URL |
| 10 | Sitemap is valid XML | Sitemap validator | Parses; under 50,000 URLs and 50 MB per file |
| 11 | Sitemap lists only canonical 200 URLs | Sample the URLs | No redirects, 404s, noindex or parameter URLs |
| 12 | Important pages are in the sitemap | Search for your template URLs in it | Every page you want indexed is listed |
| 13 | lastmod is honest or absent | Compare dates with real edits | Changes only when the content changes |
Google says it ignores priority and changefreq, so do not spend time on them. The robots.txt guide and XML sitemap validation explain each rule.
3. One URL per page: HTTPS, hosts and redirects
| # | Check | How to verify | Pass when |
|---|---|---|---|
| 14 | HTTP redirects to HTTPS | Request http:// for the home page and one deep page | One 301 or 308 to the https URL |
| 15 | One host | Request the www and bare versions | One redirects to the other in one hop |
| 16 | One trailing-slash style | Request a URL with and without the slash | One form answers 200, the other redirects |
| 17 | No redirect chains | Follow the redirects of old URLs and internal links | One hop at most |
| 18 | Canonical is self-referencing | View source for rel="canonical" on each template | Exactly one tag, absolute, pointing at the page's own clean URL |
| 19 | Parameter URLs canonicalise | Add ?utm_source=test to a URL | The canonical still names the clean URL |
| 20 | Removed pages are handled | Check a few old URLs | 301 to the closest replacement, or 404 or 410 |
The canonical side of this group has its own topic: canonical tags explained. For the redirect rules per server, see trailing slashes, www and https: pick one.
4. Templates: titles, descriptions and headings
Run the one-page audit on each template URL and read the SEO findings.
| # | Check | How to verify | Pass when |
|---|---|---|---|
| 21 | Every page has a unique title | Audit per template; crawl or Search Console for duplicates | 30–60 characters, topic first, different on every page |
| 22 | Meta description per important page | Audit per template | 70–160 characters, describes that page |
| 23 | One H1 per page | Audit per template | Exactly one, naming the topic |
| 24 | Logical heading order | Audit per template | No jumps from H2 to H4 |
| 25 | lang and viewport set | Audit per template | <html lang> matches the content; viewport tag present |
| 26 | Paginated and filtered pages have distinct titles | Open page 2 of a category | "Page 2" or the filter in the title |
| 27 | Thin or empty templates | Tag, author and empty category pages | Either useful content or noindex |
Duplicates across the site are the most common template failure; duplicate titles and descriptions across a site shows how to find them in Search Console and fix the pattern.
5. Links and site architecture
| # | Check | How to verify | Pass when |
|---|---|---|---|
| 28 | No broken internal links | Broken link check per template, crawler for the site | No 4xx or 5xx targets |
| 29 | Internal links point at final URLs | Same check, redirect column | No links to redirecting URLs |
| 30 | Every important page is linked | Compare the sitemap with a crawl | No orphan pages |
| 31 | Important pages are near the top | Click depth in a crawler, or count clicks from home | Key pages reachable in a few clicks |
| 32 | Links are real <a href> | View source of menus and "load more" | Crawlable links, not click handlers |
| 33 | Internal links are followed | Look for rel="nofollow" on internal links | None, except login or cart links |
Internal links: how many, where and with what anchor text and finding orphan pages cover the fixes.
6. Rendering: does the content need JavaScript?
| # | Check | How to verify | Pass when |
|---|---|---|---|
| 34 | Main content is in the HTML | View source (not the inspector) and search for a sentence of body text | The text is there before scripts run |
| 35 | Title, canonical and robots are not changed by scripts | Compare source with the rendered page | Same values in both |
| 36 | Google sees the rendered page | URL Inspection → View crawled page | The screenshot and HTML show the content |
See JavaScript-rendered content and Google for framework-specific fixes.
7. Mobile and speed
Google indexes the mobile version of your pages, so audit on a phone-sized viewport first.
| # | Check | How to verify | Pass when |
|---|---|---|---|
| 37 | Viewport tag present, zoom allowed | Audit per template | width=device-width, no user-scalable=no |
| 38 | Same content on mobile and desktop | Compare both versions | Same text, headings, links and structured data |
| 39 | Core Web Vitals pass in the field | Search Console → Core Web Vitals, or a speed test with field data | LCP ≤ 2.5 s, INP ≤ 200 ms, CLS ≤ 0.1 at the 75th percentile |
| 40 | Server responds quickly | Time to first byte per template | Consistently under about 0.8 s |
The page speed guide explains the metrics and what to fix per template.
8. Structured data, international and security
| # | Check | How to verify | Pass when |
|---|---|---|---|
| 41 | Structured data parses | Schema validator per template | Every JSON-LD block parses |
| 42 | Required properties present | Same, per type (Product, Article, Organization…) | No missing required properties |
| 43 | hreflang pairs link back | hreflang check on each language version | Every version lists all others and itself |
| 44 | No mixed content | Audit or browser console | No http:// images or scripts on https pages |
| 45 | No security warnings | Search Console → Security issues and Manual actions | Both empty |
How getReport checks it
The SEO audit covers most of groups 1 to 5 for one URL per run, from indexability, robots.txt and the sitemap to redirects, the canonical, titles, headings and broken links. The same report includes speed, security and structured data, which covers much of groups 7 and 8. Run it once per template URL and keep the report links: each one stays at its address for 12 months, which gives you the "before" for the re-check.
What it does not do: crawl the whole site, find orphan pages or show what Google has indexed. Search Console, which is free, covers indexing, and a site crawl of up to 500 pages is a funded unlock that switches on for everyone once donations cover it.
How to prioritise what you find
Sort the fails into blockers (group 1 and robots.txt, fix the same day), site-wide signals (groups 2 and 3, one change fixes every page), template fixes (groups 4 to 6) and projects (groups 7 and 8). Within each, do the small-effort fixes first; picking which fixes to do first has an impact-versus-effort grid.
How often to run the audit
Run the full checklist once or twice a year, and immediately after a migration, redesign, CMS or theme change, or a new SEO plugin. Between audits, a monthly pass over groups 1 and 3 catches most regressions in 30 minutes: see SEO monitoring between audits. Before a new site goes live, the website launch checklist is the version for launch day.
Common mistakes
- Auditing only the home page. It is usually the best-maintained page on the site; templates carry the problems.
- Reading tool scores instead of findings. A 92 with a
noindexon the product template is worse than a 70 with slow images. - Treating every Search Console "Not indexed" row as an error. Redirects, canonicalised duplicates and intentional
noindexpages belong there. - Blocking duplicates in robots.txt. Google then cannot see their canonical or
noindex; use those instead.
Questions people ask
What is an SEO audit?
An SEO audit is a structured check of whether search engines can crawl, index and understand your pages, and whether they are set up to earn clicks. It covers technical basics (status codes, robots.txt, canonicals, sitemaps, speed), on-page elements (titles, descriptions, headings, links, images) and often content and backlinks. The result is a prioritised list of problems with fixes, not a ranking guarantee.
How do I do an SEO audit?
Start with indexability, then work outward. Check that key pages return 200, are not blocked by robots.txt and carry no stray noindex. Then check titles, descriptions, headings and canonicals on one page per template, internal links, images and structured data. Finish with speed and Search Console's Pages report. The SEO audit runs the page-level checks in about a minute; fix whatever fails on every template first.
What should an SEO audit include?
At minimum: whether pages can be crawled and indexed (robots.txt, noindex, canonical, sitemap), titles and meta descriptions, headings, internal and broken links, redirects, page speed and Core Web Vitals, mobile layout, HTTPS and structured data. A full audit adds content quality, keyword targeting and backlinks, which need Search Console and other data. Fix whatever blocks indexing first, then what affects clicks.
How do I conduct a technical SEO site audit?
Crawl the whole site with a crawler, and pair the result with Search Console's Pages, Sitemaps and Core Web Vitals reports. Look for pages returning errors or redirects, accidental noindex tags and robots.txt blocks, duplicate URLs without canonicals, orphan pages, redirect chains and slow templates. Then audit one page per template in detail. getReport's audit covers the page-level half; its site-wide crawl is a funded unlock.
How often should you audit your site for SEO?
Run a full audit once or twice a year, and a light check monthly. A monthly pass over the key templates catches the common regressions: a plugin update that adds noindex, a theme change that breaks titles, a slower server. Audit immediately after any migration, redesign, CMS change or large content change, because that is when most accidental damage happens. A monthly site health routine takes about 30 minutes.
What is the difference between an SEO checklist and an SEO audit?
An SEO checklist is the list of things to verify; an SEO audit is the act of going through it on a specific site and recording what passes, what fails and what to fix first. The checklist stays the same from site to site. The audit produces evidence, a priority order and a report, and it is only useful if someone acts on the fails and re-checks them afterwards.
Can I do an SEO audit myself without paying for tools?
Yes. Google Search Console, which is free, shows what Google has indexed, why other pages are left out and your Core Web Vitals. A free checker covers the page-level and site-file checks per template, and your browser's view source covers the rest. Paid crawlers save time on large sites, mainly for finding orphan pages and duplicates across thousands of URLs.
How long does a technical SEO audit take?
Two to four hours for a small site with a handful of templates, if you follow a checklist and audit one page per template. Large shops and sites with many languages or parameters take one to several days, mostly for crawling and working through duplicates. Writing up the findings and agreeing the priorities often takes as long as the checks themselves.
What should I check first in an SEO audit?
Check that your important pages can be indexed: they return 200, carry no noindex, are allowed in robots.txt and have a correct canonical. Then open Search Console's Pages report and read why pages are not indexed. Everything else, from titles to speed, only helps pages that Google can already keep in its index.
Do I need to crawl my whole site for an SEO audit?
Not for most problems. They come from templates, so checking one page per template plus the site-wide files finds them. A full crawl adds what page-level checks cannot see: orphan pages, duplicate titles across hundreds of URLs, broken links deep in the site and pages missing from the sitemap. It is worth doing on sites with more than a few hundred pages.