Blog / Technical SEO

Technical SEO Audit Checklist for Small Business Websites

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.

Technical SEO audit priority matrix for small business websites
CheckWhat goes wrongPriorityTypical fixWhere to find it
Important pages not indexedThey can't rank at allCriticalRemove noindex, fix canonicals, add internal linksSearch Console: Page indexing, URL Inspection
robots.txt blocking key sectionsGoogle can't crawl themCriticalRemove or narrow the Disallow ruleyoursite.com/robots.txt, URL Inspection
Broken internal links (4xx)Dead ends for visitors and crawlersHighUpdate the link or redirect the old URLCrawler: internal 4xx report
Orphan pagesPages hard to discover and weakly supportedHighLink from relevant pages, or redirect or noindexCrawler: orphan page report
Redirect chains and links to redirectsWasted crawling, slower pagesMediumPoint links straight at the final URLCrawler: redirects report
Duplicates without a clear canonicalGoogle picks the wrong versionMediumCanonical tags, consolidate pagesSearch Console: Page indexing
Sitemap listing non-indexable URLsMixed signals and noisy reportsMediumRemove redirects, 404s and noindexed URLsSearch Console: Sitemaps, crawler
Missing or duplicate titles and descriptionsWeak snippets, fewer clicksMediumFix the template, then key pagesCrawler: on-page reports
Poor Core Web Vitals on key templatesWorse experience, a small ranking signalMediumImage, script and layout fixesSearch Console: Core Web Vitals, PageSpeed Insights
Invalid structured dataLost rich result eligibilityLow to mediumFix required propertiesRich Results Test
Missing alt text, multiple H1sAccessibility and minor relevance gapsLowTemplate or bulk editCrawler: 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

  1. Paste each URL from your priority list into the URL Inspection bar at the top of Search Console.
  2. Confirm it says the URL is on Google, then compare the user-declared canonical with the Google-selected canonical.
  3. If they differ, note both. That mismatch is often the first clue to a duplicate content problem.
  4. 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.

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:

Ahrefs Site Health before and after technical fixes
SiteTypeBeforeAfterNotes
Cost Cut MeatsAustralian online meat retailer on Shopify7910016 to 22 Oct 2026
Pups4SaleUK and Australian puppy marketplace501003,214 URLs, Jun to Nov 2026
Carnivore SocietyAustralian bulk meat retailer6099AI tools cite the site about 1,400 times
Xotic MushroomsAustralian Lion's Mane grower78100391 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

  1. 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.
  2. Fix in batches, then re-crawl after each batch to confirm the issue count dropped and nothing new broke.
  3. For indexing fixes, request indexing for the key URLs in URL Inspection and watch the Page indexing report over the following weeks.
  4. 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.
  5. 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.

James

SEO Content Manager & Strategist working with eCommerce, SaaS, service and local businesses, and many more, on SEO, content, conversion and AI search.

More about James

Before you publish

Everything here is set in config.js. Items still open: