Run a technical SEO audit in four passes: compare the raw HTML against the rendered DOM, verify indexing and canonical logic, check status codes and redirects, then look at architecture and speed. Do it in that order, because a page whose content only exists after JavaScript runs makes every later finding meaningless. Group the results by cause, not by symptom.
Most technical SEO audits arrive as a spreadsheet with two hundred rows and no priority. That document does not get acted on, because nobody can tell which three rows matter. The fix is to audit in dependency order and to report causes rather than findings, since thirty findings usually trace back to three.
Start with what a non-rendering crawler sees
Fetch each page template twice: once as raw HTML, once as the rendered DOM after JavaScript. Then diff them. This single check surfaces the issue that silently caps everything else, and almost nothing else in an audit outranks it.
Google runs crawl, then render, then index, and rendering sits in a queue. Google is explicit that a page may stay on that queue for longer than a few seconds. Everything else that consumes your HTML, including AI answer engines and the unfurlers behind Slack, X, and WhatsApp, does not render at all. A title, canonical, or block of body copy that only exists after hydration is delayed for Google and permanently invisible to the rest.
If you find a delta, the fix is server-side or static rendering. Google calls dynamic rendering a workaround and not a recommended solution, so do not reach for it first.
Then check indexing and canonicals
A wrong canonical is worse than no canonical. Google treats rel=canonical as a strong signal and a sitemap entry as a weak one, so a shared template that hardcodes the canonical to the homepage tells Google every route is a duplicate of the homepage, and it outvotes your sitemap.
- Confirm every page self-canonicalises to its own absolute URL, character for character identical to the URL in your sitemap.
- Check that canonical tags are in the raw HTML. Google's own guidance is that if you cannot set it in the source, leave it out rather than set it with JavaScript.
- Separate disallow from noindex. robots.txt is not a mechanism for keeping a page out of Google, and a page you disallow cannot be seen to carry your noindex.
- Never disallow your JavaScript or CSS. Google will not render from blocked files.
- List only canonical URLs in the sitemap, and include lastmod only where it is truthfully accurate. Google ignores priority and changefreq entirely.
Then status codes and redirects
- Find redirect chains and collapse them to a single hop. Chains are most common after a site migration, which is exactly when they cost the most.
- Check that removed pages return 404 or 410 rather than a soft 404: a 200 response carrying a not-found message is worse than an honest error, because Google has to guess.
- Confirm the http to https and the www to apex decisions are made once, in one place, and that the two do not chain into each other.
- Spot-check old URLs from any previous version of the site. A migration that left them 404ing is usually the single largest recoverable loss in an audit.
Only then, architecture and speed
Internal linking decides which pages accumulate authority. Look for orphan pages nothing links to, for money pages sitting five clicks from the homepage, and for two pages targeting the same intent and splitting the links between them.
Treat Core Web Vitals as engineering work with a measurable before and after rather than a score to chase. Layout shift and slow largest contentful paint are usually caused by a small number of specific things: images without dimensions, fonts that swap late, and render-blocking scripts.
Write it so somebody acts on it
- Group findings by root cause. One unrendered shell, one template, one rewrite rule usually explains most of the list.
- Give every group an owner, an effort estimate, and the effect you expect. A finding without those three is trivia.
- Mark which items you can implement and which need a developer.
- Say what you checked and found healthy. An audit that lists only problems gives no sense of proportion.
- Re-run after the fixes ship, verifying against the built artefact and the live URL rather than the source. Stop when two consecutive runs are clean.
This is the order we work in on every engagement, and it is the first half of our SEO services. The content half only starts once the site can actually be read, and it is covered in content marketing services.
SEO services
SEO splits into three jobs that are usually done by three different people badly: making the site crawlable and indexable, making pages that answer a real query better than the ones currently ranking, and proving which of the two moved the number. We do all three, in that order, because publishing into a site search engines cannot read is expensive and slow.
Read about SEO services