Prepared by Yuliia Shvetsova
Use this as you invest in quality content and especially if you want to rank in LLMs.
A technical SEO audit answers a simple question: “Can search engines access, understand, and trust my website enough to show it to people?”
Because Google doesn’t “see” your site like a human does. It sends bots. And those bots are picky.
Go through each section. For every item, mark it:
Anything marked ❌ goes into your priority backlog immediately. 🟡 items go into a second-pass list. ✅ items you can leave alone.
Run this audit before any significant investment in SEO, content, or paid traffic. A 404 on a key landing page wastes every pound you spend driving traffic to it.
| Item | What to check | Status |
|---|---|---|
| robots.txt | File exists, directives are correct, nothing important is blocked | ✅🟡❌ |
| sitemap.xml | File exists, up to date, matches your actual site structure | ✅🟡❌ |
| www vs non-www | One canonical version, proper redirect from the other | ✅🟡❌ |
| SSL/HTTPS | Certificate active, all HTTP traffic redirects to HTTPS | ✅🟡❌ |
| Redirect chains | No 301→301→301 chains — each redirect should resolve in one hop | ✅🟡❌ |
| 404 errors | No broken internal links, proper custom 404 page exists | ✅🟡❌ |
| Canonical tags | rel="canonical" used correctly on duplicate or similar pages | ✅🟡❌ |
| hreflang | Correct setup if site has multiple language versions | ✅🟡❌ |
| Noindex | Only pages that should be excluded from search are noindexed | ✅🟡❌ |
| URL parameters | UTM and session parameters not creating duplicate indexed pages | ✅🟡❌ |
| Mobile | Site renders correctly on mobile, passes Google's mobile-friendly test | ✅🟡❌ |
| Core Web Vitals | LCP under 2.5s, FID under 100ms, CLS under 0.1 — check Search Console | ✅🟡❌ |
| Page speed | PageSpeed Insights score above 70 on mobile. Images optimised, CSS/JS minified, caching set | ✅🟡❌ |
| JavaScript rendering | Content rendered by JS is actually being indexed — test with Google's URL inspection tool | ✅🟡❌ |
| Structured data | Schema.org markup present where relevant (Organisation, Article, FAQ, Product) | ✅🟡❌ |
What to prioritise: SSL, 404s, and Core Web Vitals are non-negotiable. Everything else is important but won't kill you this week.
| Item | What to check | Status |
|---|---|---|
| Title tags | Unique per page, primary keyword included, under 60 characters | ✅🟡❌ |
| Meta descriptions | Unique, readable, compelling enough to earn the click, under 155 characters | ✅🟡❌ |
| H1 headings | One H1 per page, contains the primary keyword, not a duplicate of the title tag | ✅🟡❌ |
| Heading hierarchy | H2s and H3s follow logical order, secondary keywords in H2s | ✅🟡❌ |
| Content quality | Original, useful, no thin pages under 300 words that add no value | ✅🟡❌ |
| Keyword in first 100 words | Primary keyword appears near the top of the page body | ✅🟡❌ |
| Internal linking | Key pages linked from other relevant pages, no orphan pages | ✅🟡❌ |
| Anchor text | Internal link anchors are descriptive, not "click here" | ✅🟡❌ |
| Breadcrumbs | Navigation trail shown on relevant pages, BreadcrumbList schema present | ✅🟡❌ |
| Image alt text | Every image has a unique, descriptive alt attribute | ✅🟡❌ |
| Image optimisation | Images compressed, WebP format used where possible, no files over 200kb | ✅🟡❌ |
| URL structure | Clean, readable URLs — words separated by hyphens, no session IDs or unnecessary parameters | ✅🟡❌ |
| Site structure | Clear navigation, no important pages more than 3 clicks from the homepage | ✅🟡❌ |
| Pagination | Blog/catalogue pagination handled correctly — no duplicate content issues | ✅🟡❌ |