A technical SEO audit checks whether search engines can find, crawl, understand and rank your pages — and identifies what is stopping them. It covers indexing, site structure, duplicate content, page speed, structured data and content quality.

That is the definition. It is not very useful on its own, because the interesting part of any audit is what it actually turns up. So this article walks through real findings — anonymised, from sites we have audited — and what each one costs in practice.

The last example is a site where every page took over ten seconds to respond and the cause was not what anyone expected.

What an audit covers

Area What is checked Typical findings
Indexing robots.txt, noindex tags, sitemap, canonicals Pages blocked by accident; drafts indexed
Duplication Identical or near-identical pages Same content at two URLs; thin template pages
Cannibalisation Multiple pages targeting one term Two service pages competing
Structure Internal links, orphan pages, hierarchy Commercial pages with no links to them
Speed TTFB, Core Web Vitals, asset weight Slow server response; oversized images
On-page Titles, descriptions, headings, alt text Missing or duplicated metadata
Structured data Schema validity and coverage Missing or malformed JSON-LD
Security Malware, injected content, cloaking Hidden links; content shown only to bots

Finding: the same content at two URLs

What we found. A site publishing every case study twice — once under a “projects” section and once under “case studies”. Identical titles, byte-for-byte identical content, both indexable, both in the sitemap, neither pointing at the other as canonical.

Why it matters. Google has to choose. It may pick the URL you do not promote, split signals between them, or discount both. Any links earned get divided across two addresses instead of accumulating on one.

The fix. Choose the canonical version, 301-redirect the duplicate, update internal links, and remove the duplicate from the sitemap. Straightforward once identified, and essentially invisible until someone compares the two.

Finding: pages competing with each other

What we found. Two pages with byte-identical title tags — the same service, described twice, at two URLs. Elsewhere on the same site, six service pages duplicated six others in different words.

Why it matters. This is keyword cannibalisation. Both pages are eligible for the same query, so relevance signals split. Instead of one page that could rank, you have two that cannot.

The fix. Merge the useful content into the stronger URL and redirect the weaker one. In this case there was a complication worth mentioning: the weaker pages were feeding a component on the homepage, so deleting them would have changed what visitors saw. The pages were kept as data sources while every link and every crawler was pointed at the canonical version — the same SEO outcome without touching the design.

Finding: published pages with no content

What we found. Three blog posts, live and indexable, with titles, categories and featured images — and zero words of body content. Half of that site’s blog was empty.

Why it matters. Empty and thin pages tell Google the site is low quality, and that judgement is not confined to the offending pages. Sites that are mostly thin get crawled less and trusted less.

The fix. Revert to draft immediately. Publish when written. There is nothing to gain from an indexed page with no content on it.

Finding: your best page has nothing pointing at it

What we found. A pricing page — real figures, clear packages, genuine commercial intent — linked from nowhere. Not in the navigation, not in the footer, not from any article. It existed only in the sitemap.

Why it matters. Internal links are how you tell search engines which pages matter, and how visitors find them. A page with no internal links is telling Google it is unimportant, whatever its actual value.

The fix. Link it from wherever it is genuinely relevant — related service pages, articles on the same topic, the footer if it belongs there. Contextual links inside content are worth more than a link in a list.

Finding: six pages that were all the same page

What we found. A category system generating six archive pages — one per category — each of which listed every item on the site rather than the items in that category. Six URLs, near-identical content, all indexable. One of them rendered the wrong page heading entirely.

Why it matters. Six near-duplicates competing with the main listing page they were duplicating, diluting a section that should have had one clear canonical page.

The fix. Noindex the term archives while keeping them crawlable, so the crawl path to the individual pages stays intact, and remove them from the sitemap. This is a good example of a finding nobody would report as a symptom — the site “worked” fine.

When the problem is not SEO at all

The most instructive audit we have run started as a normal engagement. The brief was ordinary: rankings were poor, nothing seemed to be indexed properly.

The first measurement was time to first byte. Every page — homepage, service pages, blog posts — took between 10.3 and 10.6 seconds to respond. Suspiciously consistent, which is itself a clue: real performance problems vary with page complexity.

We isolated the layers. The database connected in one millisecond. A simple query returned in under a millisecond. Static assets served in 25 milliseconds, so hosting and network were fine. But WordPress itself took 10.7 seconds to boot while consuming less than a second of CPU time — meaning it was not working, it was waiting.

The cause was on line 1 of the active theme’s functions file. Someone had prefixed the opening PHP tag with a long run of tab characters followed by a hidden include statement, so the line still appeared to begin normally in an editor while the actual code sat far off the right edge of the screen.

The included file declared a class named after a sitemap utility. It built no sitemap. It checked the visitor’s IP against Google, Bing, Yandex and DuckDuckGo ranges, reverse-resolved the hostname, and reported the visitor to an external server — then acted on whatever came back: redirect the visitor, replace the page, or inject hidden links positioned 7,000 pixels off-screen. It disabled itself for logged-in users, which is why the site owner never saw anything wrong.

It also set a ten-second socket timeout. The external server was not responding, so every page load waited out the full timeout before WordPress rendered a byte.

Removing that one line took response times to under half a second — a 96% reduction, from a single edit. No hosting upgrade, no caching plugin, no image optimisation.

The lesson generalises beyond malware: measure before you optimise. That site could have bought faster hosting and a premium caching plugin and stayed exactly as slow, because neither addresses a process sitting idle on a socket.

It is also worth knowing how this kind of compromise presents. There was no defacement, no visible spam, nothing wrong when the owner browsed their own site. The only symptom was slowness — and slowness gets blamed on hosting.

What an audit costs

A basic automated scan costs little and tells you what a crawler can detect: broken links, missing metadata, obvious speed issues. Useful, and it will not find any of the items above.

A manual technical audit involves someone examining your actual configuration, comparing what search engines receive against what visitors receive, and checking your content architecture against what you are trying to rank for. It is more expensive because it is a person’s time, and it finds the things that matter.

Our SEO packages include a free 40-point audit before you commit to anything, and if the audit shows you do not need ongoing work, we will say so. Market rates for SEO in Nepal are covered in how much SEO costs in Nepal.

Frequently asked questions

What is included in a technical SEO audit?

Indexing and crawlability, duplicate content and cannibalisation, site structure and internal linking, page speed and Core Web Vitals, on-page metadata, structured data validity, mobile usability, and a security check for injected content or cloaking.

How long does an audit take?

A thorough manual audit of a small to medium site takes a few days. Automated scans return in minutes but only surface what a crawler can detect from the outside.

How often should I audit my site?

Annually for a stable site, and always after a migration, redesign, CMS change or unexplained ranking drop. Ongoing SEO work includes continuous monitoring, which reduces the need for periodic deep audits.

Can I audit my own website?

Partly, and it is worth doing. Search site:yourdomain.com to check indexing, run PageSpeed Insights, read the Pages report in Search Console, and check your robots.txt and sitemap. That catches the common causes — see why isn’t my website showing on Google. Cannibalisation, cloaking and structural duplication generally need someone who knows what to look for.

Will an audit tell me my rankings will improve?

No, and be sceptical of one that promises it. An audit identifies what is holding the site back. Fixing those things removes obstacles; how much ranking follows depends on your competition and your content.

What if the audit finds malware?

Deal with it before any other SEO work, because nothing else will produce results while it is running. The sequence matters: back up for forensics, close the entry route and rotate credentials, then remove the malicious code, restore clean core files, and verify with integrity checks. Removing the files without closing the entry route simply invites re-infection. The full sequence is in what to do when your WordPress site is hacked.

Getting your own site checked

Most sites have two or three specific problems holding them back, and they are rarely the ones the owner suspects. Slowness gets blamed on hosting. Poor rankings get blamed on competitors. The actual causes are usually more mundane and more fixable.

If you want to know what is on your list, our SEO services start with the audit, and it costs nothing to find out. Ask for one here.

Share this article