A technical SEO audit checks whether Google can find, crawl, render and index your important pages, and whether anything on the site gets in the way. On a small business website, eight groups of checks catch almost every problem that actually costs you traffic.
Most audit tools flag hundreds of issues. Very few of them matter on a 50 to 500 page site.
Below is the checklist I work through, in the order I work through it, with the reports I open and a priority table you can copy.
I've also included what happened when I applied these checks to sites I manage, so you can see what "fixed" looks like in numbers.
Key takeaways
- Start with Search Console's Page indexing report, not a crawler. It shows what Google actually did with your pages.
- Rank every issue by two things: how important the affected pages are, and whether one template fix clears it.
- Indexing blockers and broken internal links come first. Missing alt text and long titles come last.
- Orphan pages are one of the most common, and most fixable, problems on small sites.
- Re-crawl after every batch of fixes and compare against your baseline.
What you need before you start
You don't need an enterprise stack. For a small site I use four free or low-cost tools and a spreadsheet to log what I find.
- Google Search Console: the Page indexing, URL Inspection, Sitemaps, Core Web Vitals and Links reports. This is Google's own view of your site, so it outranks any third-party tool.
- A crawler: Ahrefs Site Audit, Semrush Site Audit or Screaming Frog. It shows what a bot sees when it follows your links.
- PageSpeed Insights: real-user speed data for your key templates, plus a lab test to diagnose problems.
- Rich Results Test: to confirm your structured data is valid and eligible for rich results.
Before running anything, write down the 10 to 30 pages that make you money: the homepage, core service or collection pages, top products, and the blog posts that bring in enquiries. Every decision in the audit refers back to that list.
Every site has its own challenges, so that list changes the priorities. A local plumber with 40 pages and a Shopify store with 3,000 products won't share the same top issue, which is why I treat the audit as the diagnosis and let the fix order come from the wider SEO strategy and content plan.
The priority table: what to fix first

I score each issue on impact (does it stop important pages ranking?) and effort (is it one template change or 200 manual edits?). Here's the default order I start from before adjusting it to the site in front of me.
| Check | What goes wrong | Priority | Typical fix | Where to find it |
|---|---|---|---|---|
| Important pages not indexed | They can't rank at all | Critical | Remove noindex, fix canonicals, add internal links | Search Console: Page indexing, URL Inspection |
| robots.txt blocking key sections | Google can't crawl them | Critical | Remove or narrow the Disallow rule | yoursite.com/robots.txt, URL Inspection |
| Broken internal links (4xx) | Dead ends for visitors and crawlers | High | Update the link or redirect the old URL | Crawler: internal 4xx report |
| Orphan pages | Pages hard to discover and weakly supported | High | Link from relevant pages, or redirect or noindex | Crawler: orphan page report |
| Redirect chains and links to redirects | Wasted crawling, slower pages | Medium | Point links straight at the final URL | Crawler: redirects report |
| Duplicates without a clear canonical | Google picks the wrong version | Medium | Canonical tags, consolidate pages | Search Console: Page indexing |
| Sitemap listing non-indexable URLs | Mixed signals and noisy reports | Medium | Remove redirects, 404s and noindexed URLs | Search Console: Sitemaps, crawler |
| Missing or duplicate titles and descriptions | Weak snippets, fewer clicks | Medium | Fix the template, then key pages | Crawler: on-page reports |
| Poor Core Web Vitals on key templates | Worse experience, a small ranking signal | Medium | Image, script and layout fixes | Search Console: Core Web Vitals, PageSpeed Insights |
| Invalid structured data | Lost rich result eligibility | Low to medium | Fix required properties | Rich Results Test |
| Missing alt text, multiple H1s | Accessibility and minor relevance gaps | Low | Template or bulk edit | Crawler: on-page reports |
Two rules override the table. If an issue touches a money page, move it up one level. If one template change clears it across hundreds of URLs, do it early even when it's rated Medium, because the effort is tiny.
Step 1: Check indexing in Search Console

Indexing comes first because nothing else matters if your key pages aren't in Google's index. In Search Console, open Indexing, then Pages.
Read the Page indexing report
The report splits URLs into indexed and not indexed, with a reason for each group. Google is clear that you shouldn't expect every URL to be indexed, so the real question is whether the right pages are indexed.
These are the reasons I look at closely:
- Pages marked noindex: fine for thank-you pages and filters, serious if a service page or collection is on the list. Theme settings and SEO plugins are the usual cause.
- Duplicate without user-selected canonical: Google found near-identical pages and picked one itself. Step 4 covers the fix.
- Crawled, currently not indexed: Google saw the page and chose to leave it out. On small sites this usually points to thin or overlapping content rather than a technical fault.
- Discovered, currently not indexed: Google knows the URL but hasn't crawled it yet. Weak internal linking is a common reason.
- Not found (404) and soft 404: deleted pages, or pages that say "not found" while still returning a 200 status.
Spot-check your money pages
- Paste each URL from your priority list into the URL Inspection bar at the top of Search Console.
- Confirm it says the URL is on Google, then compare the user-declared canonical with the Google-selected canonical.
- If they differ, note both. That mismatch is often the first clue to a duplicate content problem.
- Use Test live URL to confirm the page loads for Googlebot and isn't blocked by robots.txt.
If a money page isn't indexed, I stop and fix it before anything else.
Step 2: Check crawlability, status codes and redirects
Next, make sure a bot can reach your pages and that every internal link returns a clean response.
robots.txt and noindex
Open yoursite.com/robots.txt and look for Disallow rules covering sections you want ranked, such as /services/ or /blog/. Leftover rules from a staging site are a classic small-business mistake.
Be clear on what robots.txt does. Google says it isn't a mechanism for keeping a page out of Google, and a blocked URL can still be indexed if other sites link to it.
Use noindex for pages you want out of search, and don't block those same pages in robots.txt. If Google can't crawl the page, it never sees the noindex.
# Fine: keeps bots out of the cart and internal search
User-agent: *
Disallow: /cart
Disallow: /search
# Problem: this line would block the whole blog
Disallow: /blog
Broken links and status codes
In your crawler, filter internal URLs by status code. Fix every internal link pointing to a 4xx page: update it to the correct live URL, or redirect the dead URL if it has backlinks or traffic.
Server errors (5xx) are rarer but more urgent. If they show up in more than one crawl, raise it with your host.
Redirects and redirect chains
Use a permanent redirect (301 or 308) when a page has moved for good. Google treats a permanent redirect as a signal that the redirect target should be canonical, while a temporary 302 or 307 doesn't send that signal.
Then look for chains, where A redirects to B and B redirects to C. Point the original link straight at C, and update internal links so they hit the final URL without touching a redirect at all.
A common mistake is redirecting every deleted page to the homepage. Send each one to the closest relevant live page, or let it return a 404 if nothing relevant exists.
Step 3: Fix site structure, internal links and orphan pages

Internal links are how Google discovers pages and works out which ones matter. Google's guidance is that every page you care about should have a link from at least one other page, using standard <a href> links a crawler can follow.
Find orphan pages
An orphan page has no internal links pointing to it. A crawler can only spot orphans if it has a second source of URLs, such as your XML sitemap, analytics or Search Console.
Ahrefs Site Audit compares its crawl with your sitemap and crawl seeds. Screaming Frog finds orphans through sitemaps, Google Analytics and Search Console once you run crawl analysis after the crawl.
For each orphan, decide on one of three outcomes: link it from relevant pages, redirect it to a better page, or noindex it if it only exists for ads or internal use.
Check click depth
Sort your crawl by depth. My rule of thumb on small sites is that important pages should sit within three clicks of the homepage.
If a key service page is five clicks deep behind pagination, add it to the main menu or link it from a hub page. Depth is often the hidden reason behind "Discovered, currently not indexed".
What this looked like on a Shopify store
On Cost Cut Meats, an Australian online meat retailer, orphan pages went from 45 to 0. Internal links went from 621 to 750, and each anchor phrase points to one page only, so Google never sees the same words pointing at two competing URLs.
Nine empty collections were also redirected (301) to the closest live page instead of being left as dead ends. Shopify has its own quirks with duplicate product paths and redirects, which I walk through in fixing orphan pages on Shopify.
Step 4: Check duplicates, canonicals and your XML sitemap
Duplicate URLs are normal on almost every site. The goal is to make sure Google knows which version you want indexed.
Canonical tags
Common sources of duplicates are tracking parameters, filtered category pages, http and https versions, trailing slashes, and platform paths such as collection-based product URLs. Each group should point to one preferred version, and that version should carry a self-referencing canonical tag.
<link rel="canonical" href="https://example.com.au/services/blocked-drains/">
The checks I run on canonicals:
- Every indexable page has a canonical tag, and it points to itself unless the page is a deliberate duplicate.
- Canonicals point to live 200 pages, never to redirects or 404s.
- The http, www and trailing-slash variants all redirect to one version.
- In URL Inspection, the Google-selected canonical matches yours on the money pages.
XML sitemap
Your sitemap should list the pages you want in search results and nothing else. Google's documentation says to include the canonical URLs you want shown in search, with a limit of 50,000 URLs or 50MB uncompressed per sitemap file.
Crawl the sitemap and remove anything that redirects, returns a 404, is noindexed or canonicalises to another URL. Then submit it in Search Console under Indexing, then Sitemaps, and check the status reads Success.
Don't spend time tuning priority and changefreq tags. The same Google documentation states that both values are ignored.
Step 5: Check titles, headings and on-page basics
These are mostly template-level checks. A crawler will list every page with a missing, duplicate or overlong title, a missing meta description, no H1 or several H1s, and images without alt text.
- Titles: unique on every indexable page, with the main keyword near the start. I aim for roughly 50 to 60 characters so most of it shows in results.
- Meta descriptions: unique and written to earn the click. Google sometimes shows other text from the page instead, but a good description still gets used for many searches.
- H1: one clear H1 that states the page's purpose. Repeated H1s across a site are usually a theme problem.
- Alt text: a plain description of the image. Product and how-to images matter most.
Here's a typical rewrite on a local service site (the business is an example):
- Before: Home | Smith Plumbing
- After: Emergency Plumber in Geelong, 24/7 Callouts | Smith Plumbing
You can test drafts in my free title and meta description checker before changing them in your CMS.
Step 6: Check speed, mobile and structured data
Speed and structured data rarely stop a page ranking outright, so they sit below indexing and links.
Core Web Vitals
Open the Core Web Vitals report in Search Console under Experience. It uses field data from real Chrome users and groups similar URLs together.
A URL group is Good when LCP is 2.5 seconds or less, INP is 200 milliseconds or less and CLS is 0.1 or less, as set out in the Search Console Core Web Vitals report documentation. On small sites the usual culprits are oversized hero images, sliders, chat widgets and stacked third-party scripts.
I explain each metric and its fixes in what matters in Core Web Vitals. My decision rule: if a group is Poor on mobile and contains money pages, it moves to High. If it's Needs improvement on a blog template, it waits until the indexing and linking work is done.
Mobile
Google mainly uses the mobile version of your pages for indexing, so content missing on mobile is effectively missing. Load your top pages on a real phone.
Check that menus open, buttons aren't crammed together, pop-ups don't cover the content, and nothing important is hidden on mobile that shows on desktop.
Structured data
Run your main templates through Google's Rich Results Test: the homepage (Organization or LocalBusiness), a product or service page, and a blog post. Fix errors on required properties first; warnings on optional properties can wait.
If you're planning markup from scratch, start with the types covered in schema markup for AI search, since the same markup supports both rich results and AI answers.
Step 7: Use Site Health scores properly

A crawler's health score is a progress tracker, not a goal. Ahrefs calculates Health Score as the share of crawled internal URLs without Error-level issues, so warnings and notices don't move it.
So a score of 100 means no URL has an Error-level issue, not that the site is perfect. And switching an issue off in the project settings raises the score without fixing anything.
Here's what moving from errors to clean looked like on four sites I work on, all measured in Ahrefs Site Audit:
| Site | Type | Before | After | Notes |
|---|---|---|---|---|
| Cost Cut Meats | Australian online meat retailer on Shopify | 79 | 100 | 16 to 22 Oct 2026 |
| Pups4Sale | UK and Australian puppy marketplace | 50 | 100 | 3,214 URLs, Jun to Nov 2026 |
| Carnivore Society | Australian bulk meat retailer | 60 | 99 | AI tools cite the site about 1,400 times |
| Xotic Mushrooms | Australian Lion's Mane grower | 78 | 100 | 391 URLs |
The larger the site, the less practical page-by-page fixes become. On a marketplace the size of Pups4Sale, with 3,214 URLs, grouping issues by root cause is the only realistic way to reach a clean crawl.
Step 8: Turn findings into a fix list and measure it
The output of an audit isn't a 40-page PDF. It's a short, ordered list of fixes, each tied to a root cause and an owner.
Group issues by root cause
Crawlers report symptoms page by page. If 180 product pages have duplicate titles, that's one problem (the title template), not 180.
Group every issue by the template or setting that causes it, then count the affected pages. This is the format I use for each line of the fix log:
Issue: Duplicate title tags
Root cause: Product template outputs the product name only
Pages affected: 180 (all products)
Priority: Medium, done early because it is one template change
Fix: {Product name} | {Category} | {Brand}
Owner: Developer
Verify: Re-crawl, duplicate titles = 0
Status: Done
Measure whether it worked
- Save a baseline before you change anything: crawler issue counts, Site Health, indexed pages in Search Console, and clicks and impressions for your priority pages.
- Fix in batches, then re-crawl after each batch to confirm the issue count dropped and nothing new broke.
- For indexing fixes, request indexing for the key URLs in URL Inspection and watch the Page indexing report over the following weeks.
- For Core Web Vitals, click Validate fix in the report. It tracks real-user data over a 28-day window, so don't expect an instant pass.
- Compare clicks and impressions for the fixed pages over a month or more, not days.
Technical fixes remove blockers; they don't create demand. On Cost Cut Meats the clean-up ran alongside a content programme, and Google clicks went from 117 a month in June 2026 to 3,788 in October 2026.
I don't credit that growth to the audit alone, and you shouldn't expect any single fix to move rankings on a set timeline.
The bottom line
A useful technical audit answers one question: can Google find, crawl and index the pages that make you money? Start there, then work down the priority table.
Group issues by root cause, fix templates before individual pages, and re-crawl after every batch.
If you'd rather have it done for you, a one-off SEO audit and roadmap gives you the prioritised fix list, with every item tied to a page that matters.
FAQs
1. What is included in a technical SEO audit?
A technical audit covers indexing, crawlability, status codes and redirects, internal links and orphan pages, duplicates and canonicals, XML sitemaps, on-page template basics, page speed and structured data. The output should be a prioritised fix list, not a raw export of every warning.
2. Can I do a technical SEO audit myself for free?
Yes, for the basics. Google Search Console, PageSpeed Insights and the Rich Results Test are free, and Screaming Frog has a free version with a crawl limit. Paid crawlers such as Ahrefs and Semrush add scheduling, history and easier reporting.
3. Do I need to fix every warning in an audit tool?
No. Fix errors and anything affecting important pages first. Many warnings and notices are informational, and some don't apply to your site at all.
4. What is a good Site Health score?
Ahrefs rates 91 to 100 as Excellent, but the number only reflects Error-level issues. I aim for a clean crawl on the pages that matter, and I'd rather have 95 with every money page indexed than 100 with a key collection missing from Google.
5. What is the difference between a technical SEO audit and a content audit?
A technical audit asks whether Google can find, crawl and index your pages. A content audit asks whether those pages deserve to rank: whether they match search intent, overlap with each other or need updating. Most sites need both, technical first.
6. How often should I run a technical SEO audit?
Run a crawl monthly and a deeper review every quarter. Re-audit straight after any migration, redesign or theme change.
