Overview

An SEO audit is a structured pass over the site that surfaces every issue blocking ranking or click-through. Run the quick version before every launch and the full version every quarter. Treat each row as pass-fail; do not move to the next category until the current one is green. The deep-dive pages in this folder explain the why; this page is the operational checklist.

Crawl and index

Verify that Google can find, fetch, and index every page that should rank.

CheckPass ifTool
robots.txt at site rootReturns 200; no Disallow: / linecurl -I
sitemap.xml at site rootReturns 200; lists every canonical URL with <lastmod>Browser, GSC Sitemaps
Sitemap submittedGSC shows “Success” with discovered URLs > 0GSC Sitemaps
Indexed count vs sitemapWithin 10% of sitemap URL countGSC Pages report
No orphan pagesEvery URL has at least one internal inbound linkScreaming Frog
No noindex on indexable pagesProduction <head> has no <meta name="robots" content="noindex">View source
Canonical present and self-referentialEvery page declares its own URL as canonicalView source

See technical for the canonical and robots rules in detail.

Performance

Field metrics from real users decide ranking eligibility; lab metrics do not.

CheckPass ifTool
LCP 75th percentileUnder 2.5 secondsGSC Core Web Vitals, PageSpeed
INP 75th percentileUnder 200 millisecondsGSC Core Web Vitals
CLS 75th percentileUnder 0.1GSC Core Web Vitals
TTFB 75th percentileUnder 800 millisecondsPageSpeed Insights
Total JS shippedUnder 200 KB compressed for content pagesChrome DevTools Coverage
LCP image preloaded<link rel="preload" as="image" fetchpriority="high"> setView source

See core-web-vitals and audit-site-for-core-web-vitals for the fix loop.

On-page

The per-page elements that decide whether a page can rank for its target query.

CheckPass ifTool
One <h1> per pageExactly one; matches page intentView source
Heading orderH2 to H3 to H4 with no skipsaxe DevTools
Title tag length50-60 characters; primary keyword includedView source
Meta description130-160 characters; unique per pageView source
Image alt attributesEvery content image has descriptive alt textaxe DevTools
Internal anchor textDescriptive, not “click here” or “read more”Screaming Frog

See title-tags and internal-linking.

Structured data

JSON-LD that powers rich results and clarifies the page entity to Google.

CheckPass ifTool
Valid JSON-LD on every page typePasses Rich Results TestRich Results Test
BreadcrumbList on every page below rootPresent and labels match visible crumbsRich Results Test
Schema matches bodyNo FAQPage schema for pages without an FAQ sectionManual review
No structured data errors in GSCEnhancements reports show Error: 0GSC Enhancements

See structured-data and schema-markup-deep.

Discoverability files

The root-served text files that crawlers and AI agents read first.

CheckPass ifTool
/llms.txtReturns 200; lists primary pages with summariescurl
/ai.txtReturns 200; states crawl preferencescurl
/humans.txtOptional; present if the site is editorialcurl
/favicon.icoReturns 200; not a redirectcurl -I

See discoverability-files for the full list and format.

Content quality

The signals that drive the Helpful Content classifier and human raters.

CheckPass ifTool
Original information per editorial pageAt least one number, screenshot, or command outputManual review
Intent matchH1 answers the target query verbatimSERP comparison
Site-wide topical focusEach section has 5 or more pages on one topicFolder count
last_updated reflects real editsDate matches the latest meaningful body changeGit log
AI-assisted drafts editedEvery paragraph has been rewritten with specificsManual review

See helpful-content-update and e-e-a-t.

Internal linking

The link graph that distributes equity and tells Google what each page is about.

CheckPass ifTool
Every page reachable in 3 clicks from homeCrawler depth report shows max depth = 3Screaming Frog
No orphan pagesInbound internal links > 0 for every URLScreaming Frog
Anchor text descriptive and variedNo bulk identical anchors to one URLScreaming Frog
MOC pages link to every childEach folder index lists every page in the folderManual review

See internal-linking and site-architecture.

Mobile

Google indexes the mobile version of every page.

CheckPass ifTool
Mobile-friendlyNo horizontal scroll, tap targets >= 48 pxGSC, PageSpeed
Viewport meta tag<meta name="viewport" content="width=device-width, initial-scale=1">View source
Mobile and desktop content paritySame content, same structured data, same linksMobile-Friendly Test

See technical for the mobile-first rule set.

Security

HTTPS is a ranking signal and a trust signal.

CheckPass ifTool
HTTPS on every URLEvery http:// 301 redirects to https://curl -I
Valid certificateNo browser warning; expiry > 30 daysopenssl s_client
No mixed contentPage and all subresources served over HTTPSDevTools Console
HSTS headerStrict-Transport-Security: max-age=31536000curl -I

Analytics

Confirm the measurement plane is intact before judging any other signal.

CheckPass ifTool
GSC Domain property verifiedProperty switcher shows the domainGSC
Bing Webmaster Tools verifiedSitemap submitted, no verification warningsBWT
Web analytics installedTag fires on every page; bounce rate plausiblePlausible, GA4, etc.
Server logs retained 90+ daysBot traffic by user-agent extractableHosting dashboard

30-minute quick audit

Use before every deploy. Skip rows that did not change in this release.

  1. Crawl and index: confirm sitemap.xml and robots.txt return 200.
  2. Performance: PageSpeed Insights on the home page and one content page; both Good.
  3. On-page: spot-check one new page for one H1, valid title length, descriptive alt attributes.
  4. Structured data: Rich Results Test on one new page; no errors.
  5. Discoverability: curl /llms.txt and curl /ai.txt both return 200.
  6. Analytics: GSC URL Inspection on one new page shows “URL is on Google” or “Submitted and indexed” on next crawl.

Full quarterly audit

Use every 90 days. Every row, every category.

  1. Run a full-site crawl with Screaming Frog or Sitebulb.
  2. Export the depth, orphan, and broken-link reports.
  3. Pull 90 days of GSC Performance, Coverage, Core Web Vitals, and Enhancements data.
  4. Walk every category table top to bottom; mark pass or fail in a shared sheet.
  5. Open one ticket per fail. Assign by category.
  6. Schedule the next audit before closing the current one.