An SEO audit is a structured check of everything that decides whether your pages get crawled, indexed and ranked: crawlability, indexation, on-page signals, what search engines actually see versus what users see, performance and links. Here is a six-step process you can run today, plus the checklist and the API version.
What an SEO audit actually checks
Every audit, whatever the tool, examines three layers. The technical layer asks whether search engines can reach and index your pages at all: robots.txt, sitemaps, canonicals, redirects, status codes, and whether critical content requires JavaScript to appear. The on-page layer asks whether each page tells a coherent story: one h1, a unique title and meta description, heading hierarchy, internal links, structured data. The authority layer looks outward at backlinks and brand signals.
Suite tools bundle these into a single score — crawler-based site audits commonly test for 170+ individual issues — but a score is not a plan. The value of an audit is a short, ordered fix list, which is why the process below ends with prioritization rather than a report.
How to perform an SEO audit in six steps
- Crawl the site like a search engine. Start from the homepage, follow internal links, and record every URL, status code, title, meta description and canonical. Compare what the crawl finds against your sitemap: pages in the sitemap but not reachable by links are orphans; pages reachable but not in the sitemap are unaccounted inventory. A crawl and map API gives you both lists in minutes for even large sites.
- Check indexation against reality. In Google Search Console, compare submitted versus indexed pages, and read the exclusion reasons. "Crawled — currently not indexed" clusters usually point to thin or duplicated templates; "Discovered — currently not indexed" at scale points to crawl-budget or internal-linking problems.
- Diff the bot view against the rendered view. Fetch each important URL twice — once as a plain HTTP client with no JavaScript, once fully rendered — and compare titles, meta descriptions, canonicals and main content. Anything that exists only in the rendered view is invisible to every crawler that does not execute your JavaScript, and that includes most AI crawlers today. This is the single most-skipped audit step, and the most common source of "my content is fine but nothing ranks" mysteries.
- Audit on-page signals where they matter. Do not fix titles alphabetically. Pull your top pages by impressions, then check each for keyword-aligned titles under 60 characters, one h1, a meta description that earns the click, and internal links from at least two other pages with descriptive anchors.
- Measure performance on real templates. Run Core Web Vitals checks on one URL per template (home, category, detail, article) rather than every page. LCP problems are template problems: fix the template, fix thousands of pages.
- Prioritize by impact, not by count. An audit that ends with "1,400 issues found" ends nowhere. Order fixes: indexation blockers first (noindex, canonical errors, robots mistakes), then content visibility (JS-only content, missing titles), then speed and polish. Three fixes that restore indexation beat three hundred alt-text edits.
The SEO audit checklist
| Area | What to check | Red flag |
|---|---|---|
| Crawlability | robots.txt, sitemap coverage, orphan pages, redirect chains | Sitemap URLs returning 3xx/4xx; chains longer than one hop |
| Indexation | Indexed vs submitted in Search Console, exclusion reasons | Large "crawled — not indexed" clusters on one template |
| Rendering | No-JS view vs rendered view of key pages | Title, canonical or body content that only exists after JS runs |
| On-page | Unique titles ≤60 chars, one h1, meta descriptions, heading order | Template-generated duplicate titles across hundreds of URLs |
| Structured data | JSON-LD parses, matches visible content | Schema describing content the page does not visibly contain |
| Performance | Core Web Vitals per template | LCP over 2.5s on the money template |
| Internal links | Every important page linked from ≥2 pages, descriptive anchors | Money pages only reachable from the sitemap |
| Backlinks | Referring domains trend, toxic-link spikes, lost links | A sudden drop tracking a site migration |
What crawlers see vs what users see: the diff most audits skip
Modern sites assemble pages in the browser, and every audit tool that renders JavaScript quietly hides the problem: you see the rendered page, but many crawlers never will. The only honest test is a side-by-side diff of the two views.
You can do it manually — curl the URL, then compare against the DOM in your browser's inspector — or make it one API call. The SEO Audit API fetches any URL twice, as a pure HTTP bot and as a fully rendered browser, and returns both views plus the diff: content that only exists with JavaScript, titles or descriptions that change, canonicals missing from the no-JS view.
curl -X POST https://api.quanticdata.io/v1/seo-audit \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/pricing"}'
# → data.diff: js_only_content, title_changed,
# canonical_missing_nojs, meta_changed …At $0.0012 per URL, auditing a 500-page site's rendering gap costs well under a dollar — run it per release, not per quarter. To cover the whole site, feed the URL list from a map call straight into the audit, or wire both up as MCP tools so your AI assistant runs the loop; the API quickstart shows both paths.
Free and paid tools: what each is good for
Free checkers give you a one-page snapshot: meta tags, obvious speed issues, mobile-friendliness. They are fine for a first look at a small site. Crawler suites such as Semrush or Ahrefs add scheduled full-site crawls, issue tracking over time and backlink data — we walked through one in detail in our Semrush site-audit guide. API-level audits are the third category: they trade dashboards for composability, which matters once you want audits inside CI, on a schedule, or driven by an agent.
The honest rule: dashboards are for humans reviewing monthly; APIs are for pipelines that gate deploys or feed alerts. Most teams past a certain size end up with both.
Turning findings into a report and a fix order
A useful audit report fits on one page: what blocks indexation today, what hides content from crawlers, what slows the money templates, and who owns each fix. Attach the evidence — the diff output, the crawl export — as appendices, not as the report. Re-run the same checks after each fix ships; an audit whose findings are never re-tested is a snapshot, not a process.
If you publish frequently, automate the regression check: a weekly job that maps the site, audits changed URLs and alerts on new diffs catches the "someone shipped a client-side title tag" class of bug before rankings move. Failed calls cost nothing on a pay-per-success model, so the safety net is effectively free to keep running.