SEO audit template
20 checks in seven groups, each with how to run it using free tools and what a pass looks like. Download it as a CSV, open it in any spreadsheet, and fill in the last four columns as you go.
Most rows are answered by crawling the site and reading what each page says about itself, which is what the ShownTrue website crawl does. The rest need Search Console, because only Google can say what Google did with a page.
What is in the template
The same rows as the CSV. Where a free tool on this site does the check, it is linked.
Crawling and indexing
robots.txt lets crawlers reach the pages you want found
Open /robots.txt on the live domain and test your most important paths against it.
Pass when: Every page you want in search is allowed, and the file answers at the root of the host.
Important pages are indexed
Run URL Inspection in Search Console on each key page, then read the Pages report.
Pass when: Each key page is indexed, or the reason it is not is known and intended.
The sitemap lists only pages you want indexed
Fetch the sitemap and request every URL in it.
Pass when: Every listed URL answers 200, carries no noindex, and is its own canonical.
noindex appears only where it is meant to
Check the robots meta tag and X-Robots-Tag header on key pages and on pages you want hidden.
Pass when: No noindex on pages you want found, and every noindexed page can be crawled so Google sees the tag.
Canonical tags name the right address
Read the canonical link on each page template, then compare it with the canonical Google chose in URL Inspection.
Pass when: Each page names itself, or names a duplicate on purpose, and Google agrees.
Redirects take one hop
Request old addresses and follow each redirect to the end.
Pass when: One hop to a page that answers 200, and a permanent redirect for a permanent move.
A missing page returns a 404
Request an address that cannot exist, such as /this-page-does-not-exist.
Pass when: The status code is 404 or 410, not 200 with an error message on the page.
Page content
Every page has its own title
Export titles from a crawl and sort them.
Pass when: No two pages share a title, and each one says what the page is about early on.
Every page has its own meta description
Export descriptions from the same crawl.
Pass when: None missing, none duplicated, each one a fair summary of its page.
Headings are in order
List the headings on each template.
Pass when: One h1 that matches the topic, and no level skipped below it.
Images carry alt text and a size
Inspect the image tags on each template.
Pass when: Meaningful images have alt text, decorative ones have empty alt, and each has width and height.
Links
Internal links all work
Crawl the site and list every internal link that does not answer 200.
Pass when: Every internal link answers 200 without a redirect.
Every important page is linked from other pages
Count the internal links pointing at each key page in the crawl.
Pass when: No key page depends on the sitemap alone to be found.
Search Console
Queries with many impressions and few clicks are reviewed
Sort the Performance report Queries tab by impressions and read position and clicks beside each.
Pass when: Each one has a decision: rewrite the title, change the page, or leave it.
Pages report reasons are explained
Open each reason in the Pages report and sample the URLs under it.
Pass when: Every reason is either intended or has a fix with an owner.
AI feature visibility is recorded
Export the Generative AI performance report by page.
Pass when: You have a dated export to compare against next time.
Structured data and sharing
Structured data parses and matches the page
Run key templates through Google's Rich Results Test.
Pass when: No errors, and nothing marked up that a visitor cannot see on the page.
Each page has its own share card
Read the og: and twitter: tags on a few pages of each template.
Pass when: Title, description, URL and image belong to that page, not the home page.
International
hreflang annotations point both ways
Only for sites in more than one language or region. Check that each version lists the others and itself.
Pass when: Every alternate links back, and each address answers 200.
Speed and mobile
Pages load well on a phone
Read the Core Web Vitals report in Search Console, then test key templates in PageSpeed Insights on mobile.
Pass when: No template group is reported as poor, and any that need work are listed with a fix.
How to run the audit
Work top to bottom. The order matters: a page Google cannot crawl or will not index gains nothing from a better title, so the crawling and indexing rows come first.
Check templates before pages. Most sites have a handful of page types, and a fault in one template is a fault on every page built from it. Record one row per template, then sample a few real pages of each to confirm.
Write the date in every row you check. An audit is a reading of the site on one day, and the next one is only useful if you can tell what changed in between.
What a template cannot tell you
It cannot rank the fixes. A failed row on a page nobody visits matters less than a weak title on a page that already gets most of your impressions, and only your own Search Console figures say which is which.
It also cannot replace reading the pages. Rows like how many internal links a page should have or which duplicate should be canonical have no number to pass. They need somebody who knows what the site is for.