The SEO audit checklist for a small site, in 60 minutes

2026-08-29·Technical SEO for indie SaaS·4 min read·by Sourabh Singh

The SEO audit checklist for a small site, in 60 minutes

A concrete, ordered SEO audit for a site with under 50 pages - what to check, what a failure looks like, and what to fix first when everything is broken.

The SEO audit checklist for a small site, in 60 minutes

Audit in this order: crawlability, canonical uniqueness, on-page clarity, cannibalisation, internal links, structured data, social tags, speed. Each check only matters if the one above it passed. Fix anything blocking indexing before touching anything else.

Most SEO audits produce a 40-page PDF with 200 issues sorted by nothing in particular. For a site with fewer than 50 pages, you need about eight checks, in an order where each one only matters if the previous one passed.

Work top to bottom. Stop and fix anything that fails before continuing, because a broken item near the top makes everything below it meaningless.

1. Can Google reach the page at all?

Nothing else matters if the answer is no.

  • robots.txt - fetch yoursite.com/robots.txt. A stray Disallow: / from a staging config blocks the entire site. It happens more than you would think.
  • noindex - check the rendered HTML, not the source template. A noindex in a shared layout removes every page.
  • HTTP status - the page must return 200. Soft 404s (a "not found" message returned with a 200 status) are treated as errors and dropped.
  • Server-rendered content - view source and search for a sentence from your page body. If it is not there, the content only exists after JavaScript runs, and while Google can render JS, it does so on a delayed second pass and often incompletely.

Failure looks like: a page with content in the browser but an empty <body> in view-source.

2. Is there exactly one URL for this content?

  • Self-referencing absolute canonical on every page.
  • http:// redirects to https://, and one of www / non-www redirects to the other. Both should be a single 301, not a chain.
  • Trailing slash handled consistently - /about and /about/ must not both return 200.
  • Query parameters (?utm_source=, ?page=) either canonicalised or self-canonical deliberately.

Failure looks like: four URLs serving identical content, each with a fraction of the link signal.

3. Does the page say what it is about?

  • Title under 60 characters, leading with the target phrase, unique across the site.
  • One H1, broadly matching the title.
  • Heading structure descends without skipping - H2s under the H1, H3s under H2s.
  • The target phrase appears in the first 100 words, naturally.

Failure looks like: three pages with the title "Home | Acme", or an H1 that says "Welcome".

Free toolMeta Tags CheckerCheck any page's title, meta description, canonical, robots and heading structure, and see the exact issues that hurt its rankings.

4. Is anything competing with itself?

List every page and its target phrase in a spreadsheet. Sort by phrase. Any phrase appearing twice is cannibalisation.

The fix is always to merge, never to differentiate. Two pages about "time tracking software" become one page about it; the weaker URL 301s to the stronger.

Failure looks like: rankings that flip between two of your own URLs week to week.

  • Every important page reachable within three clicks of the homepage.
  • Anchor text describes the destination - "meta tags checker", not "click here".
  • No orphan pages: a page in the sitemap that nothing links to gets crawled rarely and ranks poorly.
  • No internal links to redirects. Update the href, do not rely on the 301.

Failure looks like: a blog post that only your sitemap knows about.

6. Is the structured data valid?

  • BreadcrumbList on every non-homepage page. Cheap, and it changes how the URL displays in results.
  • Article on blog posts, with datePublished and dateModified.
  • FAQPage only where a real FAQ is visible on the page - marking up invisible content is a manual-action risk.
  • Validate with Google's Rich Results Test, not just a JSON linter. Valid JSON can still be invalid schema.

Failure looks like: JSON-LD that parses fine and is silently ignored because a required property is missing.

  • og:image at 1200 × 630, absolute HTTPS URL.
  • twitter:card set to summary_large_image.
  • og:title and og:description present.

This does not affect rankings, but a launch link that shares without a card gets meaningfully fewer clicks.

8. Is the page fast enough on a phone?

Core Web Vitals are a real but small ranking factor - they break ties, they do not overcome a content or link deficit. Do not spend a week here while your titles are still wrong.

  • LCP under 2.5s - almost always a hero image that is not preloaded, or a font blocking render.
  • CLS under 0.1 - almost always images without width and height, or content injected above the fold after load.
  • INP under 200ms - almost always a heavy third-party script.

Failure looks like: a 4MB uncompressed hero PNG.

What to fix first when everything fails

In strict order of return:

  1. Anything blocking indexing (checks 1 and 2). Nothing else counts until this passes.
  2. Cannibalisation (check 4). Merging two pages is often the single biggest ranking jump available.
  3. Titles (check 3). An afternoon of work, measurable in weeks.
  4. Internal links (check 5). Free, and it redistributes whatever authority you already have.
  5. Structured data (check 6).
  6. Everything else.

If you get through this list and rankings still do not move after three months, the problem is not on-page. It is links or content depth, and no amount of further auditing will find it.

Launch it where the numbers are checked

RankCert ranks products on domain control we verify ourselves. Listing is free and the link stays dofollow whether or not you display the badge.

Submit a product - free

Tools from this guide