How to run a technical SEO audit: an 11-step checklist with free tools
What to check, in what order and with which free tools: indexing, robots.txt, sitemap, canonicals, redirects, speed, mobile, titles, structured data, hreflang and AI readiness. With real examples from our own site.
A technical SEO audit checks whether Google can find, read and correctly index your pages. It does not look at how well you write, but at the foundation: whether the door is open, whether the path is clear and whether the page loads fast enough to matter.
Below are the 11 checks we run on every audit, in the order they matter. All of them can be done with free tools. Where we had problems ourselves on manilla-services.ro, we tell you exactly what we found.
What you need
- Google Search Console: Google's data about your site (free, you just verify your domain)
- PageSpeed Insights: speed and Core Web Vitals
- Rich Results Test: structured data validation
- Chrome DevTools / Lighthouse: already in your browser, press F12
1. Indexing: what Google actually sees
Open Search Console → Pages. The report tells you how many pages are indexed and, more importantly, why the others are not. The most common messages:
| Message | What it means | What to do |
|---|---|---|
| Crawled – currently not indexed | Google read the page but did not find it useful enough | Strengthen the content, link to it from other pages, request indexing |
| Discovered – currently not indexed | Google knows about it but has not read it yet | Usually resolves itself; internal links help |
| Excluded by "noindex" tag | The page itself asks not to be indexed | Check whether that is intentional |
| Duplicate without user-selected canonical | Google sees several copies | Set the right canonical (step 4) |
A real example: the English version of our PHP2Shell page sat on "Crawled – currently not indexed" for a few days. After an indexing request from URL Inspection, it got indexed.
2. robots.txt and noindex
Open your-site.com/robots.txt. Look at the Disallow lines: none should block pages you want to see in Google. The most expensive mistake we see is a Disallow: / left over from the staging site after launch.
Then check the noindex tag: in URL Inspection, "Indexing allowed?" must say Yes on important pages.
3. The XML sitemap
Three conditions:
- It exists (usually at
/sitemap.xml) and is submitted in Search Console → Sitemaps. - It lists only pages that return 200 and are canonical: no redirects, 404s or noindex pages.
- It updates itself when you add pages.
A sitemap full of dead addresses tells Google you do not take much care of the site.
4. One site version and the right canonical
Your site has four possible addresses: http://, https://, with www and without. All of them must lead, through a single 301 redirect, to the same version. A quick check in the terminal:
curl -sI http://your-site.com | grep -i location
Then, on every page, the <link rel="canonical"> tag must point to the page's exact final address. A wrong canonical means Google indexes a different page than the one you want.
5. Redirect chains and 404 errors
A redirect chain (A → B → C) loses time at every step and dilutes signals. A loop (A → B → A) never loads. Internal links must lead straight to the final page.
For 404 errors there is the Pages report in Search Console ("Not found (404)"). Not all of them are serious: a 404 on a page you deleted on purpose is normal. A 404 on a page you still link to is the real problem.
6. Speed: Core Web Vitals
In PageSpeed Insights, the top section with real data from visitors matters more than the lab score. Google's thresholds for "good":
| Metric | What it measures | "Good" threshold |
|---|---|---|
| LCP | How long until the main content appears | under 2.5 s |
| INP | How fast the page responds to a click | under 200 ms |
| CLS | How much the page "jumps" while loading | under 0.1 |
The most common causes: large unoptimized images, fonts that block rendering, JavaScript loaded needlessly. We wrote about them in detail in Core Web Vitals in plain language and in a case study with numbers.
7. Mobile and accessibility
Google indexes the mobile version of your site. Run Lighthouse (F12 → Lighthouse → Mobile) and look at the Accessibility section: low contrast, tap targets too small, skipped headings.
A real example: on manilla-services.ro, Lighthouse gave us 94 for accessibility. Three causes: two texts with 4.3 contrast (the minimum is 4.5), footer column titles marked H4 right after an H2, and a language button whose accessible name did not start with its visible text. After the fixes: 100.
8. Titles, descriptions and H1
On every page:
- The title (
<title>) is unique and describes the page; anything past ~60 characters risks being cut off in results. - The description is unique, around 150–160 characters, and says why the click is worth it.
- There is a single H1, and H2/H3 headings follow a logical order.
Duplicate titles across dozens of pages ("Product – Shop") tell Google the pages are interchangeable.
9. Structured data
Structured data (JSON-LD) tells Google explicitly what is on the page: a company, a service, a product, an article, FAQs. You validate it with the Rich Results Test and track it in Search Console → Enhancements.
A real example, found during an audit of our own site: a client review was linked to the company in both directions (company → review and review → company). Google flagged a "directional conflict" on every page. The fix was one line of code: the review placed directly inside the company. "Optional" warnings such as "Missing field" block nothing; errors do.
10. Hreflang, if you have several languages
Every page must point to all its language versions, including itself, and the relationship must be reciprocal: if RO points to EN, EN must point back to RO. Add an x-default too. Wrong hreflang means visitors from Romania get the English page, or the other way round.
11. Readiness for AI search
Google AI Overviews, ChatGPT and Perplexity cite pages that:
- answer the question directly in the first sentences;
- have clear structured data;
- show who is behind the content (author, About page, contact details).
An llms.txt file is a cheap extra that some AI tools read, but it is not a Google standard and does not replace the points above.
What to do with the list
Do not fix everything at once. Put every problem you find on two axes, impact and effort, and start with high impact and low effort: a forgotten noindex, a wrong sitemap, a canonical pointing to another page. These take minutes to fix and can unlock entire pages.
Speed optimizations and restructuring come after. They take longer, but the foundation has to be right first.
When an outside audit is worth it
The list above shows you what is wrong. The hard part is usually the fix: knowing where in the code the problem lives and solving it without breaking something else. If you went through the 11 steps and have a list you cannot fix yourself, that is where we come in: we run the audit and apply the fixes directly in code.
Want the audit done and the problems fixed in code?See the technical SEO audit A quick free check (3–5 points) before any quote.