Technical SEO Audit Checklist
Crawl and Indexing Foundations
Confirm both the domain property and any www / non-www variants are verified in GSC. Without this the rest of the audit flies blind on indexing, queries, and crawl errors. Pull the last 16 months of Performance and Coverage data into the audit workspace.
Common gotcha: a staging-era Disallow: / that survived launch, or a Disallow on /blog/ that quietly nuked organic traffic. Run the GSC robots.txt Tester against a sampling of important URLs and confirm none return Blocked.
Sitemap should list only canonical, indexable, 200-status URLs — no redirects, no noindex pages, no parameter variants. Submit in GSC and confirm Discovered vs Indexed counts are within 5-10%.
Crawl with both desktop and Googlebot Smartphone user-agents. For larger sites, use Sitebulb or Botify and segment by directory. Export the full crawl, internal_html report, and response codes for the diagnostics phases.
Triage the Pages report: Soft 404s, Server errors, Redirect errors, and Excluded URLs. Anything in the Crawled - currently not indexed bucket needs a thin-content or duplicate-content review before the on-page phase.
Site Architecture and URL Hygiene
Money pages should sit within three clicks of the homepage. Use the Crawl Depth report in Screaming Frog to find orphaned or buried URLs and propose internal-link additions to surface them.
Pick one convention per property — lowercase, trailing-slash or no — and 301 the others. Mixed conventions split link equity and produce duplicate-content soft signals.
Self-referencing canonicals on every indexable page. Faceted-nav and parameter URLs (?sort=, ?utm_) should canonical to the clean version. Cross-domain canonicals only when syndicating to a partner.
From the crawl export, pull all 4xx responses and any redirect hops greater than one. Internal 404s and chained 301s waste crawl budget and dilute equity. Note any 302s on permanent moves — convert to 301s.
Create a redirect map (source URL → target URL) for every 4xx and chained redirect. Engineering implements at the edge or in the CMS; QA verifies via curl -I before merging. Avoid wildcard catch-alls that mask future link rot.
Core Web Vitals and Performance
Use the CrUX dashboard for 28-day field data and PageSpeed Insights for lab + field on top templates. Targets: LCP under 2.5s, INP under 200ms, CLS under 0.1, at the 75th percentile on mobile.
LCP images especially — serve via responsive srcset, lazy-load below-the-fold images, and preload the hero. AVIF cuts size another 20-30% over WebP where browser support allows.
Confirm production builds gzip or Brotli responses, defer non-critical JS, and inline critical CSS for the above-the-fold render path. Third-party tags (chat, analytics) are usually the worst INP offenders — gate them through GTM with the right firing triggers.
Static assets cache for at least 1 year with hashed filenames; HTML cache short with stale-while-revalidate. Verify Cache-Control headers via curl -I on a sampling of asset URLs and HTML responses.
Re-pull CrUX after fixes have had time to populate (28-day rolling window means full credit takes weeks; PSI field data updates faster). Mark Pass only if all three metrics are green at the 75th percentile on mobile.
Open a remediation ticket per failing metric with the offending element identified (LCP element, INP interaction trace, layout-shift culprit). Use Chrome DevTools Performance panel and the Web Vitals extension to capture reproducible traces.
On-Page Elements and Structured Data
Titles under ~60 characters with the target keyword early; descriptions under ~155 characters with a clear value prop and CTA. Prioritize high-impression / low-CTR pages from the GSC Performance report — those are the fastest CTR wins.
Crawl exports flag pages with zero or multiple H1s. Templates that hard-code H1 from page title usually fix the multi-H1 case at the component level. Heading order also affects screen-reader navigation — accessibility and SEO align here.
Alt text describes the image for users who can't see it — not a place to keyword-stuff. Decorative images get alt="". Helps both image search and ADA / WCAG 2.1 AA compliance.
JSON-LD in the head, not microdata in the body. Add Organization on the homepage, Breadcrumb sitewide, Article on blog/news, Product + Review on commerce, FAQPage where genuinely applicable (Google has tightened FAQ rich-result eligibility — don't paste it on every page).
Run sample URLs from each template through Google's Rich Results Test and Schema.org validator. Fix Errors before merging; Warnings are nice-to-have. Then check the Enhancements report in GSC for any sitewide issues post-deploy.
Mobile and International Coverage
Google indexes the mobile rendering. Use the URL Inspection tool's Live Test to view the rendered HTML as Googlebot Smartphone sees it. Confirm content, internal links, and structured data are present on mobile — not hidden behind tab toggles that fail to render.
Viewport meta set to width=device-width, initial-scale=1. Tap targets at least 48×48 CSS pixels with 8px spacing. The Mobile Usability data lives in the Enhancements section of GSC and in PSI's Lighthouse audit.
If the site serves more than one country or language (e.g., /en-us/, /en-gb/, /de-de/), hreflang annotations are required to prevent the wrong locale ranking in search. Single-locale sites can skip the next step.
Every locale must reference every other locale, including a self-reference and an x-default. Common gotchas: missing return tags, using en-UK instead of en-GB, and pointing hreflang at non-canonical or noindexed URLs. Run the Hreflang report in Ahrefs or Sitebulb to catch mismatches.
BrowserStack or real devices on the two combos that account for ~90% of mobile traffic. Confirm forms submit, navigation works without hover state, and CWV measurements track close to PSI predictions on a mid-tier device.
Audit Sign-Off and Reporting
One-page exec summary up top, then findings by section with screenshots, sample URLs, and current vs target metrics. The deck is the durable artifact — engineering tickets reference it for context six months out.
P0 = blocks indexing or breaks search visibility (robots.txt, noindex, canonical). P1 = measurable traffic upside (CWV failures on top-trafficked templates, title/meta on high-impression pages). P2 = hygiene. Hand the P0/P1 list to engineering with sample URLs and a target sprint.
SEO lead and engineering lead both sign. Capture the final report PDF and any qualifications (e.g., findings deferred to next sprint, items blocked on platform migration).
Use this template in Manifestly
- Blog Post Publishing Checklist
- Keyword Research Checklist
- Local SEO Checklist
- Mobile Optimization Checklist
- SEO Audit Checklist
- Blog Post Publishing Checklist
- Blog Post Promotion
- On-Page SEO Checklist
- Content Marketing Checklist
- Website and Content Checklist
- Content Marketing Checklist
- E-commerce SEO Monthly Audit
- SEO Audit Checklist
- Off-Page SEO Checklist
- Blog Post Review Before Publishing
Ready to take control of your recurring tasks?
Start Free 14-Day TrialUse Slack? Sign up with one click
