Expert analysisSEO & AI visibility →

Technical SEO audit: what is checked and in what order

A technical audit clarifies which pages Google can reach, understand and include, and ranks the findings by impact and effort.

This is a concept study, not a report on a client project. The processes and sample values described are assumptions worked through on paper, not proven results.

PageLeo editorial team · · 11 min read

Starting point
A company website has grown over the years: service pages, blog posts, filters, old campaign pages. Nobody has an overview any more of which addresses Google actually holds in its index.
Challenge
In Search Console, notices such as “Discovered – currently not indexed” pile up. The causes are spread across canonicals, parameters, sitemap, linking and delivery.
Approach
The audit follows a fixed order of checks from accessibility to rendering and rates each finding by impact and effort.
Benefit
You receive a reasoned list of measures instead of an error export. The benefit can be measured by indexing status and crawl stats; a ranking cannot be promised.

A website that nobody fully oversees any more

Imagine a mid-sized company whose website has been growing for ten years. There are service pages, a blog, an archive of press releases, two retired campaigns and a product catalogue with filters. Several service providers have worked on it, each with their own habits. The CMS was changed twice, and at neither change was every old address redirected cleanly.

This starting point is typical, not an isolated case. Under “Pages” in Search Console there is a long list of non-indexed addresses whose reasons are hard to interpret. At the same time, important service pages are missing from the search results, while insignificant filter combinations show up. The team suspects a content problem, because content is what is visible.

A technical SEO audit begins with a sober question: what does Google know about this website, and does it match what the company wants to offer? Only once you know this difference can you decide whether technology, structure or content is the bottleneck. This is exactly the separation the audit achieves, and it is the real value of the exercise.

An audit does not measure the quality of the website but the difference between what Google sees and what you want to show.

When “Discovered – currently not indexed” becomes a permanent message

The status “Discovered – currently not indexed” means that Google knows the address, for example from the sitemap or a link, but has not yet fetched it. Often a prioritisation is behind it: Google considers fetching on this website not worthwhile and postpones it. With “Crawled – currently not indexed”, by contrast, Google has read the page and decided against including it.

Both messages look similar and have different causes. In the first case the problem often lies in structure and signals, such as a deeply buried page or a flood of addresses with no value of their own. In the second case it is more about the page itself: very thin content, duplicates or a canonical that points to another address.

On top of that come error patterns that overlap. A noindex tag set by mistake during development, a robots.txt that blocks a directory, redirect chains, soft 404 pages that report status 200 although there is nothing on them. If you fix them one by one without respecting the order, you often correct symptoms and leave the cause in place.

  • Which addresses should be in the index, and which explicitly should not? Without this target list, every finding is a matter of interpretation.
  • Where does the indexing status in Search Console deviate from the target list, and in which direction?
  • Which patterns repeat, such as a directory, a template or a parameter?

First read what Google actually sees

Before you plan measures, you need three data sources that check each other. The first is Search Console with the page indexing report, the crawl stats and the sitemap reports. The second is your own crawl, for example with Screaming Frog, which shows what a crawler finds when following the links. The third is the server logs, where available, because they document what Googlebot actually fetched.

Every source has blind spots. The crawl only finds what is linked, Search Console provides samples and delayed states, and logs are missing at many hosting providers or not easily accessible. When two sources contradict each other, that is often the most revealing finding. A page that is in the sitemap but does not show up in the crawl is orphaned.

Crawl budget needs some context: for small websites with a few hundred pages it is rarely a bottleneck. It becomes relevant with large inventories, many automatically generated addresses or slow server responses. Then it helps determine how quickly new and changed pages are picked up. Whether this applies to your website is shown by the crawl stats, not by a rule of thumb.

Figure · How strongly causes typically weigh in

  • Blocks and noindex errorsrelative priority
  • Canonical and redirect logicrelative priority
  • Parameter URLs and duplicatesrelative priority
  • Internal linking, click depthrelative priority
  • Sitemap maintenancerelative priority
Illustrative chart, not measured values. It shows a rough weighting by impact on indexing in a hypothetical audit. Illustrative depiction, not measured values.

Checking from the outside in, not by where findings turn up

The obvious method would be to work through the crawl export from top to bottom. That leads you astray, because the error list is sorted by frequency, not by impact. A hundred images without alt text weigh less than a single line in robots.txt that blocks the services directory. The order of checks should therefore follow the chain Google goes through: reach, fetch, understand, include.

We would proceed in this sequence: first accessibility and status codes, then control via robots.txt and meta tags, then canonicals and duplicates, then sitemap and internal linking, and finally rendering and presentation. Each stage presupposes the previous one. A clean canonical is useless if the page may not be fetched at all because of robots.txt.

An alternative is auditing by page type: first all service pages, then the blog, then the catalogue. This is worthwhile for very heterogeneous websites, because every template produces its own errors. We combine both by using the chain as a grid and grouping by template within each stage. After all, an error in a template affects every page that uses it.

Fully automated audit tools are a third way, and they have their place: they quickly deliver an inventory. Their weakness is weighting, because they do not know your target list and report warnings with equal urgency. We use them as a data source, not as a verdict, and interpret the results in the context of the website.

Figure · The audit check chain

  1. Reachable

    Status codes, redirects, server response

  2. Permitted

    robots.txt, noindex, X-Robots-Tag

  3. Unambiguous

    Canonicals, parameters, duplicates

  4. Discoverable

    Sitemap, internal links, click depth

  5. Readable

    Rendering, content in the delivered HTML

Each stage presupposes the previous one. Findings are only finally prioritised after stage five.

The grid: checkpoints that influence each other

The check chain yields a grid of topic areas that is worked through per template. It prevents individual findings from being discussed in isolation in conversation with the development team. At the same time, it helps answer the question of what was not checked. An audit that names its limits is more reliable than one that claims completeness.

The grid deliberately stays technical and does not assess text. Content questions, such as whether two pages serve the same search intent, appear in the audit as a note but are explored in a separate content analysis. This distinction keeps the audit readable and responsibilities clear, because technology and editorial work are often in different hands.

What matters is the order within the grid, not just its completeness. A finding in the status codes changes what is still worth assessing for canonicals and sitemap at all. That is why the grid is run through twice per template: once for the inventory, once after the first corrections, to rule out follow-up errors that only become visible once the fix is made.

  • Status codes: 200, 301, 302, 404 and 410 used correctly, no chains, no soft 404 pages.
  • Control: robots.txt, meta robots and X-Robots-Tag do not contradict each other.
  • Canonicals: self-referencing, absolute, consistent with sitemap and internal linking.
  • Parameters: sorting, filters, session IDs and tracking do not create independent index candidates.
  • Sitemap: contains only indexable, canonical addresses with status 200.
  • Structure: important pages are reachable in a few clicks and internally linked.
  • Rendering: core content and links are in the delivered or reliably rendered HTML.

How the check works in practice

It starts with a crawl of the live website with a mobile user agent, supplemented by a comparison with the sitemap and the Search Console export. The raw data is grouped by directory and template. This makes it visible that 40 addresses of the same error class often trace back to a single cause, such as a filter function that creates a new URL after every click on a value.

We check the control files with the robots tester and in the source code. Typical errors are a Disallow carried over from the staging system, a noindex in the template that only applies to some page types, or an X-Robots-Tag that the server sets for PDFs and that accidentally covers entire directories. For canonicals we check whether the target address is actually reachable, indexable and identical to the one in the sitemap.

For rendering, we compare the raw source code with the rendered DOM and use the Search Console URL Inspection tool to see what Google rendered. If navigation or main text are missing in the raw source and only appear through JavaScript, that is not automatically an error, but it is a risk that we assess. What matters is whether links exist as real references with href, because Googlebot does not follow click handlers.

We look at internal linking as a graph. How many clicks lie between the home page and a service page, which pages have no incoming internal links, and where does internal weight flow? A rule of thumb that important content should be reachable in three to four clicks works as a guide, but it is not a limit set by Google.

Special cases: when standard rules aren't enough

Parameter URLs are the most common special case. A catalogue with sorting, colour, size and page number can turn a hundred products into thousands of addresses. Choosing the tool is a trade-off: a canonical to the base page allows crawling but consolidates the signals. A block via robots.txt saves crawl effort but prevents Google from reading the canonical at all. A noindex should not be combined with a block, otherwise it is never seen.

A second special case is multiple paths after CMS changes: the same page under http and https, with and without www, with and without a trailing slash. What counts here is a single canonical form enforced on the server side and a redirect that leads to the target in one step. Chains of three hops waste fetches, and with many hops crawlers abandon the trail.

Third, the pages you deliberately keep thin: thank-you pages, internal search results, print versions. They do not belong in the sitemap and are usually given noindex, but are not blocked in robots.txt if Google is to read the noindex. For multilingual sites, hreflang relationships come into play, which must be confirmed reciprocally. Such special cases are why an automated report alone is not enough.

A fourth case concerns pages behind logins, cookie prompts or country switches. If the website redirects crawlers to a single version based on IP address or language, other variants remain invisible. We therefore check what a fetch without cookies and without a language setting returns, because that is exactly how Googlebot sees the page.

Figure · Parameter URLs before and after clean-up

  • Every filter combination creates its own, internally linked URL.
  • Sitemap contains addresses with parameters and redirects.
  • Canonicals are missing or point to each page's own variant.
  • Search Console shows many addresses as discovered, not indexed.
Description of the state of a hypothetical catalogue, not measured values.

What you can realistically expect and what you can't

A technical audit improves the preconditions, not the result. If Google has so far not included important pages because a block or a wrong canonical was in the way, the correction can lead to those pages being indexed. Whether they then rank well depends on content, competition and authority. The audit ensures that these factors can come into play at all.

The benefit can be measured with indicators close to the cause. These include the number of indexed pages compared with the target list, the ratio of valid to excluded pages in the indexing report, the crawl stats with response times and status codes, and the share of sitemap addresses that are actually indexed. Impressions, clicks and positions for the affected page groups come only after that.

Expect weeks, not days. Google processes corrections with a delay, and for deeply buried pages it can take several weeks until a new status appears. There is no guarantee for particular positions or gains, and anyone who promises one is selling something other than an audit. What is realistic is the aim of removing obstacles and documenting the development traceably.

An example of interpretation: if the number of indexed pages rises while the number of sitemap addresses falls, that is a good sign, provided the target list explains the difference. If the number of indexed pages falls after a clean-up, that can also be intended, for example when filter pages without search value drop out of the index. Numbers alone say little as long as they are not read against the target list.

Weighing impact against effort and monitoring permanently

An audit does not end with the list of findings but with a sequence. We rank each finding by two questions: how many important pages does it affect, and how great is the effort to fix it? A wrong noindex in the template affects many pages and costs one line of code, so it goes right to the top. A complete restructuring of the navigation has a strong effect but ties up weeks and belongs in a project of its own.

It is important to make dependencies visible. Cleaned-up canonicals and a clean sitemap should be delivered together, otherwise the signals temporarily contradict each other. Redirects belong before internal relinking, so that no links point to chains. The measures are therefore bundled into packages, each of which results in a consistent state on its own.

Deliberately doing nothing is part of it too. Some findings, such as missing alt text on decorative images or non-indexed archive pages, are not a defect but a defensible decision. Documenting them saves the team future discussions. A new crawl is worthwhile only after the first wave of measures, because then you can check whether the corrections work as intended.

Technical errors rarely arise from negligence, but from change. A release sets the noindex again, a new plugin creates archive pages, a relaunch changes paths. An audit is therefore a snapshot. It makes sense to derive a few checks from its findings that run with every major change: a crawl of the most important templates and a look at the indexing report.

Two insights go furthest. First, the target list and the sitemap are the same document, just in different forms, and should come from the same source. Second, Search Console is more of an early warning system than a verdict. A slowly growing block of excluded pages often shows a structural problem weeks before rankings react.

The audit has limits. It says nothing about the quality of the texts, the strength of the brand or the competition, and it replaces neither content work nor link building. Checking the technology removes obstacles. Anyone who wants visibility must then deliver content that justifies inclusion. The two belong together, and the order is rarely reversible.

  • Maintain a fixed target list of indexable pages and reconcile it with the sitemap.
  • After every release, spot-check robots.txt, meta robots and canonicals of the core templates.
  • Look at the Search Console indexing report monthly for new patterns.
A good action plan is shorter than the error list it came from.

Figure · A possible process over several weeks

  1. 1

    Week 1

    Access, target list, crawl, Search Console export.

  2. 2

    Week 2

    Check along the chain, findings grouped by template.

  3. 3

    Week 3

    Assessment by impact and effort, building packages.

  4. 4

    Week 4 to 6

    Implementing the packages, then a new crawl.

  5. 5

    From week 8

    Observing indexing and crawl stats.

Example schedule that varies with the size of the website and access to systems.

Conclusion: clarify the cause first, then act

A technical SEO audit is worthwhile if your website has grown and you are no longer sure what Google includes from it. It provides no guarantee for positions, but a reliable picture: which pages are indexed, which should be, and which technical reasons lie in between. This spares you measures that start in the wrong place.

The next step is small. In Search Console, open the page indexing report and compare the number of indexed pages with the number of pages you really want to see in the index. If the difference is large or unclear, a closer check is worthwhile. We are happy to look at it together, with a first crawl and an honest assessment of whether a full audit pays off.

An honest estimate of effort is part of the picture. For a website with a few hundred pages, the analysis is doable in a few working days; for catalogues with tens of thousands of addresses and several systems it is considerably more work. We give the range after the first crawl, not before.

Frequently asked questions

What is checked in a technical SEO audit?

The audit checks whether search engines can reach, fetch, assign unambiguously and include your pages. This covers status codes and redirects, robots.txt and noindex, canonicals and parameter URLs, XML sitemap, internal linking including click depth, and the rendering of content and links. Content assessment and link profile are separate analyses.

How does a technical SEO audit work?

First, access is clarified and a target list of the desired index pages is drawn up. Then come the crawl, a comparison with the sitemap and Search Console, and the check along the chain from accessibility to rendering. At the end there is a list of measures ordered by impact and effort, which is implemented in packages and checked again after a few weeks.

What does “Discovered – currently not indexed” mean?

Google knows the address but has not yet fetched or included it. This can be due to prioritisation, for example when there are very many similar addresses or the page lies deep in the structure. There is no blanket fix; what matters are the patterns in the affected addresses and the website's signals.

Is crawl budget a problem for my website?

For small websites with a few hundred pages, usually not. It becomes relevant with very many addresses, automatically generated filter pages or slow server responses. The Search Console crawl stats show how many fetches take place per day and how long the server takes to respond. From that you can judge whether action is needed.

How long does it take for corrections to take effect?

Expect several weeks. Google processes changes with a delay, and rarely fetched pages are reassessed later. You see progress first in the indexing report and the crawl stats, and only afterwards in impressions and clicks. Particular rankings or timeframes cannot be promised.

Can I start a technical audit myself?

Yes. Check the page indexing report, the sitemap reports and robots.txt, and crawl the website with a tool such as Screaming Frog. It gets difficult when interpreting contradictory signals and when prioritising. That is where a second perspective helps, especially when several systems are involved.

Know what Google sees of your website

Send us your domain and the Search Console indexing report. We will give you a short, clear assessment of whether an audit makes sense and where it would start.

Send an enquiry