Technical SEO checklist: what to check and how to test it
·4 min read
This technical SEO checklist covers the plumbing that decides whether search engines can fetch, render and index your pages. It runs through crawling, status codes, indexing signals, canonicals, redirects, sitemaps, rendering, speed, structured data and hreflang. Each item comes with a one-line way to check it, so you can work down the list with a browser, curl and Search Console.
Titles, headings and copy are left out on purpose. Those live in the on-page SEO checklist. The SEO audit guide ties both into one process.
Technical SEO checklist for crawling and status codes
- robots.txt loads. Open
/robots.txt. It should return 200 or 404, and a 5xx can make Google stop crawling the site. - No important path is disallowed. Paste key URLs into a robots.txt tester and confirm Googlebot is allowed.
- Pages return 200. Run
curl -I https://example.com/pageand read the first line. - Missing pages return 404 or 410. Request a made-up URL. A 200 with "page not found" text is a soft 404.
- No server errors under load. Filter Search Console's Crawl stats report by response and look for 5xx spikes. The HTTP status codes guide explains each one.
- Every page you care about has an internal link. Compare your sitemap URLs against a crawl. Pages with no inbound links are orphan pages.
Indexing and canonical checklist
- No stray noindex. Search the source for
noindex, and runcurl -Ito look for anX-Robots-Tagheader. See what noindex does. - Each indexable page names itself as canonical. View source and find
rel="canonical". It should match the URL you want ranked, protocol and trailing slash included. The canonical tag guide covers the edge cases. - Canonical targets are indexable. Open the canonical URL. It should return 200 with no noindex and no redirect.
- Google agrees with you. Run URL Inspection in Search Console and compare "User-declared canonical" with "Google-selected canonical".
- Parameter and filter URLs don't multiply. Try
?sort=priceon a category page. It should canonicalize to the clean URL.
If pages still don't show up, how to get Google to index your site walks through the fixes.
Redirects and host versions
- One host wins. Request
http://example.com,http://www.example.com,https://example.comandhttps://www.example.com. All four should land on the same URL. See www vs non-www. - Permanent moves use 301 or 308.
curl -IL old-urlprints every hop with its code. The difference matters, as 301 vs 302 redirects explains. - No chains or loops. Each hop costs a fetch, and Google says Googlebot follows up to 10 hops. Fix anything over one. See redirect chains.
- Internal links point at final URLs. Crawl your own site and list links that return 3xx. Update them at the source.
Sitemaps, rendering and speed
- The sitemap is valid XML. Open it in a browser. A parse error shows at once.
- It stays within limits. Google's sitemap guidelines cap one file at 50,000 URLs or 50 MB uncompressed. Split larger sets with a sitemap index.
- It lists only canonical, 200, indexable URLs. Spot-check 20 entries with
curl -I. More in the XML sitemap guide. - robots.txt points to it. Add a
Sitemap:line, as in adding your sitemap to robots.txt. - Main content is in the raw HTML. Run
curl https://example.com/pageand search the output for a sentence from the page body. If it's missing, read JavaScript SEO. - Mobile shows the same content. Google indexes the mobile version, so compare text and links on a phone viewport. See mobile-first indexing.
- Core Web Vitals pass. Check the Core Web Vitals report in Search Console. The "good" thresholds on web.dev are LCP of 2.5 seconds or less, INP of 200 ms or less and CLS of 0.1 or less. Start with improving LCP if it fails.
Structured data and hreflang
Both are optional, and both cause trouble when they are wrong.
- JSON-LD parses. Paste the page URL into Google's Rich Results Test. Any error stops that block from being read. See the rich results test guide.
- Markup matches visible content. Prices, ratings and dates in the schema must appear on the page.
- hreflang tags link both ways. On a translated page, every alternate should link back. Missing return tags make Google ignore the pair. See hreflang.
- An x-default exists for global pages. View source and check for
hreflang="x-default"pointing at your language picker or default page.
Skip hreflang entirely if you publish one language for one market.
Run the technical SEO checks on your own site
Our SEO tools cover the indexing, redirect and sitemap items on this list, one URL per run, each priced on its own. The Indexing and Canonical Checker reads the status code, robots.txt rules for Google and Bing, meta robots, X-Robots-Tag, the canonical and whether its target is indexable, and snippet controls. It names the signal that blocks the page and the tag or header to change, for 8 credits a run. It cannot confirm that Google has indexed the URL, and it does not render JavaScript.
The Redirects, Headers and Host Checker follows the redirect chain hop by hop, checks that the http, https, www and bare hosts end at one URL, and flags response headers that hurt crawling or indexing, with the server rule to fix. It costs 10 credits. The XML Sitemap Validator, also 10 credits, checks well-formed XML, the namespace, size, entry count, out-of-scope URLs and lastmod dates. It does not fetch child sitemaps from an index.