SEO Audit Tools: What a Real Audit Must Check
A real SEO audit tool checks four layers: crawlability and indexation, on-page structure, performance measured with both lab and field data, and the machine-readable signals that search engines and AI answer engines use to understand a page. Anything that returns a colored score without naming the exact URL, the exact element, and the exact change to make is a dashboard, not an audit.
That distinction matters because the market is full of scanners that grade a homepage in eight seconds and hand back a number. A number is not actionable. A finding is actionable when it contains four things: what failed, where it failed, why it matters for ranking or rendering, and what the corrected state looks like. This article walks through the thirty checks that belong in a serious audit, how those checks should roll into a 0 to 100 score, and how to order the fix list so you spend your first week on the things that actually move indexation and rankings.
What does an SEO audit tool actually check?
Search engines process a page in four stages, and a competent audit mirrors that sequence rather than jumping straight to keyword density.
Stage one is discovery. Can the crawler find the URL at all? This is robots.txt, XML sitemaps, internal linking, and whether the page is orphaned. A page nobody links to and no sitemap declares is invisible regardless of how good the copy is.
Stage two is access. Once found, does the URL return a 200, or does it chain through three redirects to a 404? Does a stray X-Robots-Tag: noindex header sit on the response even though the HTML looks clean? Header-level directives are the single most common cause of "the page is perfect but it will not index," and a scanner that only parses the HTML body will never see them.
Stage three is understanding. The crawler has the document. Now it needs to parse a title, a single unambiguous H1, a heading hierarchy that does not skip levels, a canonical that points somewhere sane, and structured data that says what type of thing this page is. This is where most on-page scoring lives.
Stage four is evaluation. Speed, layout stability, mobile usability, and the freshness and depth of the content itself. Google publishes explicit thresholds here, so a good audit compares against those thresholds rather than inventing its own bar.
A useful mental model: the first two stages are pass or fail, the second two are graded. An audit that averages a catastrophic indexation failure into a broad content score is hiding the only thing you needed to know. Our companion piece on what a full website audit covers walks the same territory from a manual checklist angle if you want to run the first pass by hand before automating it.
The 30 checks a real audit must run
Below is the working anatomy. Severity here is not cosmetic: it drives the scoring model in the next section, and it drives the order of the fix list.
| # | Check | Layer | Failure signal | Severity |
|---|---|---|---|---|
| 1 | robots.txt reachable and parseable | Discovery | 404, 5xx, or a blanket Disallow: / | Blocking |
| 2 | XML sitemap present and referenced in robots.txt | Discovery | No sitemap, or one that returns non-200 | Blocking |
| 3 | Sitemap URLs resolve to 200 and match canonicals | Discovery | Sitemap lists redirects, 404s, or noindexed URLs | High |
| 4 | No unintended noindex in meta or HTTP header | Access | noindex present on a page you want ranked | Blocking |
| 5 | Canonical tag present and correctly targeted | Access | Missing, cross-domain, or pointing at a 404 | High |
| 6 | No redirect chains longer than one hop | Access | Two or more hops before a 200 | Medium |
| 7 | No redirect loops | Access | Infinite hop cycle | Blocking |
| 8 | Internal links return 200 | Access | 4xx or 5xx on linked URLs | High |
| 9 | No orphan pages in the sitemap | Discovery | URL in sitemap with zero internal links | Medium |
| 10 | Title tag present and unique | Understanding | Missing, duplicated across templates | High |
| 11 | Title length inside the display budget | Understanding | Truncation in the SERP snippet | Low |
| 12 | Meta description present and unique | Understanding | Missing or copy-pasted sitewide | Medium |
| 13 | Exactly one H1 per page | Understanding | Zero H1s, or several competing ones | Medium |
| 14 | Heading hierarchy without skipped levels | Understanding | H2 followed directly by H4 | Low |
| 15 | Image alt attribute coverage | Understanding | Content images with empty or absent alt | Medium |
| 16 | Content depth above a thin-content floor | Understanding | Near-empty pages indexed as standalone URLs | Medium |
| 17 | Descriptive internal anchor text | Understanding | Repeated "click here" and bare URLs | Low |
| 18 | Structured data present and schema-valid | Understanding | No JSON-LD, or invalid required properties | High |
| 19 | Open Graph and Twitter card tags | Understanding | Broken previews on shared links | Low |
| 20 | Largest Contentful Paint | Evaluation | Above the 2.5 second good threshold | High |
| 21 | Interaction to Next Paint | Evaluation | Above the 200 millisecond good threshold | High |
| 22 | Cumulative Layout Shift | Evaluation | Above 0.1 | High |
| 23 | Total Blocking Time | Evaluation | Long main-thread tasks during load | Medium |
| 24 | Render-blocking CSS and JS | Evaluation | Stylesheets and scripts delaying first paint | Medium |
| 25 | Image formats, compression, explicit dimensions | Evaluation | Oversized bitmaps, no width and height set | Medium |
| 26 | Field data present in CrUX | Evaluation | No real-user sample for the origin or URL | Informational |
| 27 | HTTPS with no mixed content | Access | Assets loaded over plain HTTP | High |
| 28 | Single canonical hostname | Access | www and non-www both serving 200 | High |
| 29 | Mobile viewport and tap target sizing | Evaluation | Missing viewport meta, cramped controls | Medium |
| 30 | hreflang correctness and reciprocity | Understanding | One-way or self-missing hreflang clusters | Medium |
Thirty is not a magic number. It is roughly the point where you have covered every failure mode that can independently keep a page out of the index or out of the top of a results page, without padding the list with checks whose fix has no observable effect. If a tool advertises two hundred checks, look at what the extra hundred and seventy actually are. Usually they are one real check split into many rows, or trivia like whether you have a favicon.
Two entries in that table deserve special attention because they are the ones most often skipped. Check 4 requires reading the HTTP response headers, not just the DOM. Check 26 is informational rather than graded, because the absence of field data is a fact about traffic volume, not a defect in your site.
How should an audit tool score a site from 0 to 100?
Scores are useful for one thing: watching a trend line after you ship fixes. They are useless as an absolute judgment, because every vendor weights differently and no two hundreds mean the same thing.
A defensible model works like this. Start at 100. Every failed check deducts a fixed penalty tied to its severity. Blocking failures deduct enough to make the score unrecoverable by cosmetic wins, so a site with an accidental sitewide noindex cannot score 80 because its alt text is excellent. Percentage-based checks, such as "what share of images have alt text," deduct proportionally rather than as a binary pass or fail.
| Severity | Meaning | Typical deduction | Example |
|---|---|---|---|
| Blocking | Page cannot be indexed or crawled | Very large, single-handedly caps the score | noindex header, robots disallow |
| High | Ranking or rendering is materially impaired | Large | Missing titles, LCP over threshold |
| Medium | Measurable but recoverable degradation | Moderate | Redirect chains, thin content |
| Low | Polish, snippet quality, tidiness | Small | Title truncation, heading skips |
| Informational | Reported, never deducted | None | No CrUX sample available |
Three properties separate an honest score from a vanity score.
It is reproducible. Run the same audit twice on an unchanged site and the score should be identical, apart from performance metrics that legitimately vary. If a tool returns 71 and then 84 an hour later on a site nobody touched, its performance sampling is leaking into the structural score.
It is decomposable. You should be able to see exactly which checks cost you which points. A single opaque number gives you nothing to act on and no way to verify the tool is measuring what it claims.
It refuses to round up. Some scanners have a floor around 60 so the report feels encouraging. A site with a broken sitemap and no canonical tags should score badly. We go deeper into the mechanics of weighting and trend reading in how an SEO health score is calculated.
How do you prioritize the fix list?
The output of an audit is a queue, and the order of that queue is where most of the value sits. Sort by severity alone and you will spend three days on Core Web Vitals for pages that are not indexed. Sort by effort alone and you will fix forty alt attributes while a redirect loop eats your crawl budget.
The order that works in practice runs in four passes.
Pass one: restore indexability. Anything in the blocking tier, plus redirect loops and 5xx responses. These are usually configuration changes rather than engineering work, which means they are both the highest impact and the cheapest items in the queue. Nothing else in the report matters until these clear.
Pass two: fix what is broken at scale. A missing title tag on one blog post is a low priority. A missing title tag on a template that renders four hundred blog posts is a single code change that repairs four hundred pages. Group findings by the template or component that produced them and count the affected URLs. Template-level fixes almost always outrank page-level fixes on return per hour spent.
Pass three: performance on the pages that earn traffic. Pull your actual landing pages from Search Console, intersect them with your performance failures, and work that intersection first. Optimizing a page with no impressions is a hobby. This is also the pass where lab and field data diverge most sharply, which is covered in the next section and in more depth in monitoring Core Web Vitals over time.
Pass four: content and structured data. Thin pages, missing schema, weak internal linking, heading hierarchy. These compound slowly and are the right work once the mechanical layer is clean.
A practical rule for triage inside each pass: multiply the number of affected URLs by the severity weight, then divide by an honest estimate of engineering hours. Sort descending. The list that falls out is usually uncomfortable, because the highest-scoring items are rarely the interesting ones. That is the point.
Where lab data ends and field data begins
Every SEO audit tool that reports performance is reporting one of two fundamentally different things, and conflating them causes a specific and very common failure: you optimize the lab score, ship, and nothing changes in Search Console.
Lab data comes from Lighthouse running a single simulated load on a throttled connection from a datacenter. It is synthetic, repeatable, and diagnostic. It tells you which resources block rendering, which images are oversized, and where main-thread work piles up. It is the right instrument for finding a cause.
Field data comes from the Chrome User Experience Report, aggregated from real Chrome users over a rolling window. It reflects actual devices, actual networks, and actual geography. It is the right instrument for knowing whether a problem is real, and it is what Google's page experience signals draw on.
The two disagree constantly, and the disagreement is informative rather than a bug. A lab LCP of 1.2 seconds with a field LCP of 4.1 seconds usually means your audience is on slower devices or further from your edge than the test environment assumes. The reverse pattern, a poor lab score with healthy field data, often means your test URL is heavier than the pages people actually land on.
The correct posture is to use field data to decide what to fix and lab data to figure out how. If you are wiring these sources up yourself, our walkthroughs of the PageSpeed Insights API and the Search Console API cover the request shapes, quota behavior, and the aggregation windows that trip people up on the first integration.
What most audit tools miss: the AI answer layer
Classic audits were designed for a world where the outcome of a crawl was a blue link. A growing share of buyer research now ends inside an AI answer, where a model reads a handful of sources and names two or three brands. Your page can be perfectly optimized by every check in the table above and still never be one of those named sources.
This is a genuinely different measurement problem. Rank tracking asks "where does my URL sit for this query." Answer-engine visibility asks "when a buyer describes their problem in natural language, does the model mention us, and if not, who does it mention instead." The second question has no position number and no fixed result set, so it has to be measured by running representative prompts and reading the citations that come back.
It is also a different optimization problem. Models favor content with clean extractable structure, direct answers stated near the top of a section, specific verifiable claims, and consistent entity descriptions across the sites they are trained and grounded on. Several of the thirty checks help here as a side effect, particularly structured data and heading hierarchy, but the gap analysis itself is separate work. Start with the guide to generative engine optimization for the strategy, and how to measure AI visibility for the measurement method.
How often should you re-run the audit?
Continuously for the mechanical layer, quarterly for the strategic layer.
Indexation and access checks should run on a schedule, because they break silently and from causes outside the content team. A CDN configuration change adds a noindex header. A CMS upgrade rewrites canonical logic. A staging robots.txt gets promoted to production. None of these produce a visible symptom on the page, and all of them surface as a traffic decline weeks later if nobody is watching.
Performance data should be sampled on a rolling basis for the same reason, with the added nuance that field data updates on its own cadence, so a fix shipped today will not be fully reflected in CrUX immediately. Judge performance fixes against lab data for confirmation the change landed, then against field data for confirmation it mattered.
Content depth, internal linking strategy, and structured data coverage are worth a deliberate quarterly review rather than a daily alert. They change slowly and they benefit from human judgment about what the site is trying to say. If you want the mechanics of putting the recurring parts on autopilot, automating technical SEO checks covers the scheduling and alerting patterns.
How Skopx runs Site Health
Skopx includes Site Health as part of the platform rather than as a separate subscription, and it assembles the picture from four sources so the score is not built on a single vantage point.
Lighthouse scores come from Google PageSpeed Insights, which supplies the lab diagnostics: render-blocking resources, image weight, main-thread work. Real-user Core Web Vitals come from CrUX, which supplies the field reality for LCP, INP, and CLS. Search Console performance data supplies the queries, impressions, and pages that tell you which URLs are worth optimizing. On top of those three, an in-house on-page SEO audit runs the structural checks and produces a 0 to 100 score with an itemized fix list, so every deduction is traceable to a named finding rather than an opaque grade.
AI Visibility runs alongside it for the answer-engine layer. It generates buyer-intent prompts from your own site, runs them through search-grounded AI, and reports share of voice plus the citation gaps where a competitor is named instead of you. It also tracks competitor pulse through sitemap and pricing-page diffs, and surfaces community openings from live Reddit and Hacker News threads where your category is being discussed.
Because Skopx connects nearly 1,000 business tools, the audit output does not have to stay in the audit. You can route findings into whatever system your team actually works from, or build a chat-defined automation that re-runs the check on a schedule and posts the delta. Skopx also covers document generation with in-house branded PDFs if the audit needs to leave the building as a client report, autonomous agents for longer-running work, and a daily morning briefing that can carry the score trend.
Pricing is Solo at $5 per month and Team at $16 per seat per month, with an included AI allowance, or you can bring your own key with zero markup. On security, Skopx operates with SOC 2 controls in place. You can see the full surface on the platform page or compare the tiers on pricing.
Frequently Asked Questions
What is the difference between an SEO audit tool and a crawler?
A crawler enumerates URLs and records their status codes, headers, and HTML. An audit tool takes that raw crawl and evaluates it against a rule set, producing findings with severity and remediation guidance. Most serious audit products contain a crawler, but the crawl is the input, not the product. If you are handed a spreadsheet of every URL on the site with no interpretation, you have a crawl. If you are handed a ranked list of thirty findings with affected URL counts, you have an audit.
Can an SEO audit tool tell me why my traffic dropped?
Partly. An audit can rule in or rule out the mechanical causes: a new noindex directive, a canonical pointing at the wrong URL, a redirect that broke during a migration, a robots.txt change, a performance regression. Those account for a large share of sudden site-specific drops. What an audit cannot tell you is whether an algorithm update changed how your category is evaluated, or whether a competitor published something better. For that you need query-level Search Console data over time, and for AI-driven discovery you need answer-engine visibility measurement, which no crawl-based tool captures.
How many of the thirty checks should a small site expect to fail?
There is no honest benchmark to quote here, and any tool that tells you the "average site fails eleven checks" is inventing a number. What is predictable is the pattern rather than the count. Small sites on modern hosted platforms usually pass the access and HTTPS checks by default and fail on structured data, meta descriptions, internal linking, and image weight. Larger sites with custom stacks tend to invert that: strong content operations, and failures concentrated in redirect chains, canonical logic, and hreflang.
Should I fix every finding an audit reports?
No. A finding is worth fixing when the affected URL count times the severity justifies the engineering time, and some low-severity findings will never clear that bar. Title truncation on an archive page that receives no organic traffic is a legitimate finding and a legitimate thing to ignore. The failure mode to avoid is chasing a perfect 100, which encourages fixing cheap cosmetic items while a template-level problem affecting hundreds of pages sits in the queue. Use the score as a direction indicator, not a target.
Does optimizing for a high audit score also help with AI search visibility?
It helps at the margin and is not sufficient on its own. Clean structured data, a coherent heading hierarchy, fast rendering, and unambiguous canonicals all make a page easier for a model to parse and quote, so the overlap is real. But answer engines select sources based on how directly a passage answers the question asked, how specific and verifiable the claims are, and how consistently your brand is described across the wider web. Those are content and positioning decisions that a technical audit does not evaluate. Treat the audit as the foundation and the visibility work as a separate discipline built on top of it.
Skopx Team
The Skopx engineering and product team