SEO audit template, with a pass condition for every row
A free 32-row SEO audit spreadsheet covering indexation, canonicals, architecture, on-page, speed, tracking and local, with a pass condition for each row.
An SEO audit template is a spreadsheet with one check per row, and it only produces decisions if every row says what passing looks like. This one has 32 rows in nine sections, each with a pass condition, a priority and an owner column. You can download the SEO audit template as a CSV without giving an email address.
Where a pass condition comes from Google, the source is named below. The speed rows, for example, use the Core Web Vitals thresholds of 2.5 seconds for LCP, 200 milliseconds for INP and 0.1 for CLS (web.dev). Where a row is our own rule of thumb from client work, this page says so.
The short version
- The template is a 32-row CSV covering indexation, canonicals, architecture, on-page, content, speed, tracking, local and authority, free to download with no email gate.
- Every row has a “What good looks like” column. That pass condition is what turns a list of things somebody looked at into a list of things that are wrong.
- Status takes three values only: pass, fail or not applicable. A row you cannot confirm is marked fail until you have evidence.
- Fill the tracking rows first, then indexation. If enquiries are counted wrongly, every priority you set afterwards rests on bad numbers.
- Sort by priority at the end and hand over the top five. The two Critical rows in the file are both tracking rows.
- The SEO audit checklist is the page to read and work through. This is the sheet you fill in. The technical SEO audit guide explains what a full audit covers.
Download the file
Download the SEO audit template (CSV). No email address, no gate. Open it in Google Sheets, Excel, Numbers or any text editor. It takes two to four hours to fill in for a small site. It is written for a small business site rather than an enterprise estate, so it skips checks that only matter above a few thousand URLs.
What is in the SEO audit template?
Seven columns. Four of them you fill in as you work.
| Column | What it records |
|---|---|
| Section | Groups the rows into indexation, canonicals, architecture, on-page, content, speed, tracking, local and authority, so the sheet can be worked through by theme rather than jumping around. |
| Check | The specific thing being examined, phrased so there is one obvious way to look at it. |
| What good looks like | The pass condition. Without it an audit produces a list of things somebody looked at rather than a list of things that are wrong. |
| Status | Pass, fail or not applicable. Keep it to three values. A five-point scale turns into an argument. |
| Priority | Critical, high, medium or low, already filled in. Critical is used for two tracking rows, because every other number in the audit depends on them. |
| Owner | Who fixes it. An audit with no owner column becomes a document rather than a plan. |
| Notes | Evidence. A URL, a screenshot reference, a number. Enough that somebody reading it in a month knows what you saw. |
Which rows are in the sheet, and where do the pass conditions come from?
The nine sections and their row counts are below, with one example pass condition from each and where that condition comes from. Google publishes no limit on title length and truncates titles to fit the device width (Google Search Central). That makes the 65-character title row and the 165-character description row practical limits of ours, not Google rules.
| Section | Rows | Example pass condition from the file | Where the condition comes from |
|---|---|---|---|
| Indexation | 4 | No commercial page in “Crawled - currently not indexed” | Google’s Page indexing report definitions |
| Canonicals | 3 | Every indexable page has a self-referencing canonical | Google’s canonical guidance |
| Architecture | 4 | Money pages within three clicks of home | Our rule |
| On-page | 5 | Title under 65 characters and unique | Uniqueness is Google’s, the length is ours |
| Content | 3 | No near-duplicate commercial pages | Our rule, backed by Google’s spam policies on doorway pages |
| Speed | 4 | LCP under 2.5 seconds | Google’s Core Web Vitals thresholds |
| Tracking | 4 | Conversion actions fire on submitted enquiries, not page views | Our rule |
| Local | 3 | Google Business Profile categories, hours and services complete | Google Business Profile guidance |
| Authority | 2 | No toxic or paid links | Google’s link spam policy |
The sources behind those rows, for when you need to show a developer or a client why a row fails:
- Google does not expect every URL to be indexed, only canonical pages, and “Crawled - currently not indexed” means Google crawled the page and chose not to index it (Google Search Console Help).
- Google recommends a self-referencing canonical on the canonical page itself (Google Search Central).
- Google’s spam policies name pages “targeted at specific regions or cities that funnel users to one page” as doorway abuse, and buying or selling links for ranking purposes as link spam (Google Search Central). That is why the location pages row asks for one page per genuinely served area.
- Google asks businesses to enter complete information, including hours and what kind of business they are, and ranks local results on relevance, distance and prominence (Google Business Profile Help).
One caution on the speed rows. The file says “on a throttled connection” for LCP because that is what you can test on a site with no traffic yet. Google’s thresholds are assessed on real visits at the 75th percentile, so once Search Console’s Core Web Vitals report shows field data, judge the row on that (Google Search Console Help).
What does a filled-in row look like?
These three rows are taken straight from the file, with its own wording.
| Section | Check | What good looks like | Priority |
|---|---|---|---|
| Tracking | Conversion actions | Fire on submitted enquiries, not page views | Critical |
| Indexation | Pages indexed vs pages expected | Within 10% of the pages you intend to rank | High |
| Architecture | Orphan pages | No commercial page with zero internal links | High |
The 10% margin on the indexation row is our rule of thumb. It exists so a few stray tag pages do not trigger a fail, while a missing service section does.

Photo: Mikhail Nilov on Pexels.
How do you fill in the template?
Work it in this order. It is the order that stops you setting priorities on bad data.
- Tracking first. If conversion actions are counting page views, every number in the audit describes a site you are measuring incorrectly. In GA4 the events that count as enquiries are called key events, which Google defines as events that measure an action particularly important to your business (Google Analytics Help).
- Indexation next. There is no point optimising a page that is excluded, and Search Console’s Page indexing report shows which ones are in a few minutes.
- Fill the Notes column as you go with the actual URL or number you saw. An audit you cannot re-check in a month is a memory rather than a document.
- Sort by Priority when you are done and take the top five. In our experience, an audit that produces thirty tasks gets none of them done.
- Re-run it quarterly. Many of these rows regress: canonicals break on a template change, orphans appear when navigation is edited, and tracking stops when a form is rebuilt.
When should you use the template rather than the checklist?
Use the template when you want a record you can hand over, sort and re-check. Use the SEO audit checklist when you want the full 42 checks explained, with where to look for each one. The two share their thinking, and the template is the shorter, fill-in version.
| Situation | Use | Why |
|---|---|---|
| Auditing your own site before hiring anyone | Template | You get a sorted list you can judge an agency’s advice against |
| Taking over a site from a previous agency | Template | The Owner and Notes columns show what nobody was billing for |
| Learning what each check means | Checklist | Each check is explained, with where to find the answer |
| A quarterly health check | Template | Rows that regress show up as a changed status |
| Scoping a full technical audit | Technical SEO audit guide | It covers what a full audit includes and what it should cost |

Photo: Mikhail Nilov on Pexels.
The bottom line
A template is only as useful as its pass conditions. Write down what good looks like before you look, mark anything unproven as a fail, and hand over five fixes rather than thirty. The sheet does the rest.
Questions people ask about this
Do I need paid tools to complete this?
Search Console and a browser cover most of it. A crawler helps for the architecture and canonical rows on anything over a hundred pages, and the free tiers of the usual crawlers are enough for a small site. Screaming Frog’s free version, for example, crawls up to 500 URLs.
How is this different from your SEO audit checklist?
The checklist is a page you read to understand what matters, with 42 checks and where to find each answer. This is a file you open and fill in, with 32 rows. Same underlying thinking, different job.
Can I use this on a client site?
Yes, including commercially. No attribution required and no licence to read.
What should I do if most rows fail?
Do not try to fix them all. Sort by the Priority column and take the Critical rows first, which are the two tracking rows, then the indexation rows. Fix those, wait for Search Console to reflect the change, then move to the other High rows. A site with thirty failing rows often has three or four root causes, such as a template problem or a plugin. Look for the shared cause before working row by row.
How do I fill in the Status column when I am not sure?
Mark it as fail and write what you saw in the Notes column. The sheet only allows pass, fail or not applicable on purpose. A row you cannot confirm is a row you cannot rely on, so treat it as a fail until you have evidence. If the check does not apply to your site, for example the local rows on a national online shop, mark it not applicable rather than leaving it blank.
Can I add my own rows to the sheet?
Yes, and you should if your site has a recurring problem the file does not cover. Keep the same discipline: every new row needs a pass condition written in the What good looks like column before you use it. A row without one turns back into an opinion. Put new rows under an existing section so the sheet still reads by theme, and keep the three-value status.
What if I do not have Search Console access?
Get it before you start, because the indexation and tracking rows depend on it. If a previous agency owns the property, ask them to add you as an owner, or verify ownership yourself so your access does not depend on theirs. Google notes that if every verified owner is removed, delegated owners and users lose access after a grace period (Search Console Help). If there is no property at all, add a domain property and verify it through your DNS provider. Google starts collecting data for a property as soon as it is added (Search Console Help).
Does the audit tell me why traffic dropped?
Not on its own. It tells you whether something is broken now, which is a different question from what changed and when. Pair the sheet with the Search Console performance report, filtered to the period before and after the drop. If a critical or high row fails and the failure date lines up with the drop, you have a likely cause. If everything passes, look at demand, the results page, competitors and content, in the order set out in what to check when organic traffic drops.
Should I share the finished audit with my developer?
Yes, and fill the Owner column first so they can filter to their rows. Developers work best from evidence, so the Notes column should hold the exact URL, the response code or the screenshot reference for each failing row. Send the top five by priority rather than the whole sheet. A list of thirty items goes into a backlog. A list of five gets done this week.
How do I know which pages I intend to rank?
Make the list before you open the sheet. It is every page that describes something you sell, plus any guide that brings in enquiries. That number is what the indexation row compares against. If you cannot write the list, the audit will surface that gap too. A site with no clear commercial pages has no target for the architecture rows to check, and that is the first thing to fix.
Can I use this on a brand new site with no traffic?
Yes, and it is the best time to use it. On a new site the tracking, indexation and canonical rows can be set right from launch, which is far cheaper than repairing them after a year of bad data. Skip the authority rows for now, since there is nothing to measure. Re-run the sheet after the first quarter, when Search Console has something to show.
Free review
Want this looked at on your own site?
Send the address. A person reads it and writes back with the two or three things that would move your enquiry number first. Free, and yours to keep whether you hire us or not.