---
title: "Technical SEO Audit Checklist: Every Check, in Order"
description: "A technical SEO audit checklist in the order to run it: crawlability, indexability, structure, metadata, Core Web Vitals, mobile, security and international."
image: "https://www.blackseoanalyzer.com/static/images/black-seo-analyzer-og-image.png"
canonical: "https://www.blackseoanalyzer.com/en/blog/technical-seo-audit-checklist"
language: "en"
---

# Technical SEO Audit Checklist

By [Seth Black](https://www.blackseoanalyzer.com/en/about) · Published September 17, 2026

This is the checklist I work through on a technical SEO audit, in the order I run it. The order matters: there’s no point tuning Core Web Vitals on pages Google can’t crawl, and no point fixing title tags on pages that are canonicalized away. Each section starts with the checks that block everything after them.

For each check, I’ve noted how to test it. Some links go to free single-page tools; for a whole site you’ll want a crawler.

## Before you start

- **Get access.** Google Search Console (and Bing Webmaster Tools if you can), analytics, the CMS, and ideally server logs.
- **Write down the scope.** Domains, subdomains, protocols and languages. A surprising number of audits miss the blog on a subdomain.
- **Crawl the site.** Most checks below come from one full crawl. Use JavaScript rendering if the site builds its content or navigation client-side. With bseoa: `black-seo-analyzer --url-to-begin-crawl https://example.com --output-type html-folder --output-file ./audit` (add `--spa` for JavaScript sites).
- **Record a baseline.** Indexed pages, organic clicks and impressions, and Core Web Vitals status from Search Console, so you can measure the effect of fixes.

## 1. Crawlability

Can search engines reach the pages?

- **robots.txt exists, returns 200, and doesn’t block important paths, CSS or JavaScript.** A leftover `Disallow: /` from staging is the classic disaster. Test paths with the [robots.txt tester](https://www.blackseoanalyzer.com/en/tools/robots-txt-tester).
- **XML sitemap exists, is referenced in robots.txt, and is valid.** It should list only canonical, indexable URLs that return 200. Check it with the [XML sitemap checker](https://www.blackseoanalyzer.com/en/tools/xml-sitemap-checker).
- **Pages return the right status codes.** Real pages return 200, removed pages return 404 or 410, and nothing returns 200 for an error page (“soft 404”).
- **No redirect chains or loops.** Each redirect should go straight to the final URL in one hop.
- **No broken internal links.** Every 4xx or 5xx link target wastes crawl time and user trust. bseoa’s `--output-type broken-links` export lists each one with the page it’s on.
- **Important content is in the HTML or rendered reliably.** Compare a crawl with and without JavaScript rendering. If navigation or body copy only appears after rendering, make sure Googlebot sees it. See [why JavaScript crawls break](https://www.blackseoanalyzer.com/en/blog/why-your-javascript-crawl-is-broken-and-how-to-fix-it).
- **Server responds quickly and consistently.** Frequent timeouts or 5xx errors make Google slow down its crawling. Check the Crawl Stats report in Search Console.
- **No orphan pages.** Pages you want indexed need internal links. See [how to find orphan pages](https://www.blackseoanalyzer.com/en/blog/how-to-find-orphan-pages).

## 2. Indexability

Of the pages Google can reach, are the right ones indexed?

- **Search Console’s Pages report is reviewed reason by reason.** “Crawled – currently not indexed” and “Discovered – currently not indexed” in large numbers usually point to quality or crawl budget problems.
- **No accidental noindex.** Check both the meta robots tag and the X-Robots-Tag header on key templates. See [the X-Robots-Tag guide](https://www.blackseoanalyzer.com/en/blog/x-robots-tag).
- **No conflicting robots directives** such as `index` and `noindex` on the same page.
- **Every indexable page has a self-referencing canonical**, built from the route rather than the request URL. Check a page with the [canonical tag checker](https://www.blackseoanalyzer.com/en/tools/canonical-tag-checker).
- **Canonicals point at URLs that return 200, aren’t redirected, and aren’t noindexed.**
- **One version of the site resolves.** HTTP redirects to HTTPS, and either www or non-www redirects to the other.
- **Duplicate URL variants are handled.** Trailing slashes, case, parameters and `index.html` either redirect or canonicalize. See [what a non-canonical URL is](https://www.blackseoanalyzer.com/en/blog/what-is-a-non-canonical-url).
- **Paginated pages canonicalize to themselves**, not to page 1.
- **Faceted navigation doesn’t generate endless crawlable URLs.** See [auditing faceted navigation](https://www.blackseoanalyzer.com/en/blog/auditing-faceted-navigation-find-and-fix-your-crawl-budget-sinkhole).

## 3. Site architecture and internal links

- **Important pages are within a few clicks of the home page.**
- **Internal links point at canonical, final URLs**, not redirects or parameter variants.
- **Anchor text is descriptive.** Flag empty anchors, “click here”, and raw URLs as link text.
- **URLs are readable and consistent.** Lowercase, hyphens, no session IDs, no excessive parameters or path depth.
- **Breadcrumbs match the site structure** and use BreadcrumbList markup where it helps.

## 4. On-page metadata

- **Every indexable page has a unique title tag** that fits in the search result. Check lengths with the [title and meta description length checker](https://www.blackseoanalyzer.com/en/tools/meta-description-length-checker).
- **Every indexable page has a meta description** that summarizes the page and isn’t reused across templates.
- **Each page has one clear H1**, and headings don’t skip levels.
- **Images have useful alt text**, and decorative images have empty alt attributes.
- **Structured data is valid and matches visible content.** Test with the [schema markup validator](https://www.blackseoanalyzer.com/en/tools/schema-markup-validator), and don’t add review or FAQ markup for content that isn’t on the page.
- **Open Graph and Twitter Card tags exist** on pages people share.

## 5. Performance and Core Web Vitals

Start with Search Console’s Core Web Vitals report (field data from real Chrome users), then diagnose page templates in a lab tool.

- **Largest Contentful Paint (LCP) under 2.5 seconds.** Common causes: slow server response, unoptimized hero images, render-blocking CSS and JavaScript, late-loading web fonts.
- **Interaction to Next Paint (INP) under 200 milliseconds.** Usually heavy JavaScript and long tasks on the main thread.
- **Cumulative Layout Shift (CLS) under 0.1.** Images and embeds without dimensions, injected banners, and font swaps.
- **Images** use modern formats, responsive `srcset`, explicit dimensions, and lazy loading below the fold (never on the LCP image).
- **Fonts** are WOFF2, preloaded when critical, and use `font-display`. See [font not WOFF2](https://www.blackseoanalyzer.com/en/technical-seo/web-vitals-analyzer/font-not-woff2) and [font-display: swap](https://www.blackseoanalyzer.com/en/technical-seo/performance-analyzer/font-font-display).
- **Scripts** are deferred or async where possible, and third-party tags are audited.
- **Text resources are compressed** (Brotli or gzip) and static assets have long `Cache-Control` lifetimes with versioned file names.

For a page-level diagnosis process, see [how to diagnose Core Web Vitals failures at the page level](https://www.blackseoanalyzer.com/en/blog/how-to-diagnose-core-web-vitals-failures-at-the-page-level).

## 6. Mobile

- **Viewport meta tag** is present and doesn’t disable zooming.
- **Content is the same on mobile and desktop.** Google indexes the mobile version, so anything hidden on mobile may not count.
- **Tap targets are large enough and not crowded.**
- **Text is readable** without zooming.

## 7. Security

- **HTTPS everywhere**, with a valid certificate and HSTS where appropriate.
- **No mixed content**: pages served over HTTPS don’t load scripts, styles or images over HTTP.
- **Third-party scripts from CDNs** use Subresource Integrity where practical.

## 8. International sites

Skip this section for single-language sites.

- **hreflang annotations** use valid language and region codes, include a self-reference, and are reciprocal on every version. Test with the [hreflang checker](https://www.blackseoanalyzer.com/en/tools/hreflang-checker).
- **hreflang points at canonical URLs** that return 200.
- **x-default** is set for the fallback version. See [missing x-default hreflang](https://www.blackseoanalyzer.com/en/technical-seo/internationalization-analyzer/missing-x-default-hreflang).
- **The `lang` attribute** on `<html>` matches the page language.
- **No automatic redirects based on IP or browser language** that stop Googlebot reaching other versions.

The detail behind all of these is in [hreflang: why it breaks, how to audit it, and how to fix it](https://www.blackseoanalyzer.com/en/blog/hreflang-why-it-breaks-how-to-audit-it-and-how-to-fix-it).

## 9. Logs and search data

- **Googlebot’s activity in server logs** matches your priorities: important sections get crawled often, and parameter or filter URLs don’t eat most requests.
- **Pages with impressions but low CTR** in Search Console get title and description rewrites.
- **Pages ranking in positions 8–20** get content and internal link improvements first. They’re the closest to meaningful traffic.

## Prioritizing the fixes

An audit that lists 400 issues with equal weight doesn’t get fixed. I sort findings into three groups:

1. **Blocking:** anything that stops important pages being crawled or indexed (robots.txt blocks, noindex, broken canonicals, server errors). Fix first.
2. **Template-level:** issues repeated across a template, where one code change fixes thousands of pages (missing canonicals, duplicate titles, render-blocking scripts).
3. **Page-level:** individual broken links, long titles, missing alt text. Batch them.

Tie each group to the metrics from your baseline, and recrawl after each release to confirm the fix shipped and nothing new broke. If you run audits from the command line, the [pre-deployment SEO checklist for developers](https://www.blackseoanalyzer.com/en/blog/the-pre-deployment-seo-checklist-for-developers) covers catching these before they reach production.

## Running this checklist on a whole site

Most of these checks come straight out of a crawl. bseoa runs 16 analysis modules on every page it crawls (metadata, links, URLs, internationalization, performance, Web Vitals, mobile, security, JavaScript, CSS, structured data and more) and reports every issue it finds. It runs on your own machine, with a GUI or CLI, and costs $279 once. [Try it free for 14 days](https://www.blackseoanalyzer.com/en/free-trial).

-Sethers

About the author

[Seth Black](https://www.blackseoanalyzer.com/en/about)

Seth is a software engineer and engineering leader who builds bseoa, a Rust-based technical SEO crawler with a GUI and CLI. He writes about the crawling, rendering and indexing problems he runs into on real sites.

[LinkedIn](https://www.linkedin.com/in/seth-black-tx/) · [GitHub](https://github.com/sethblack) · [YouTube](https://www.youtube.com/@SethBlack)

[Back to Blog](https://www.blackseoanalyzer.com/en/blog)

## Discover hundreds of SEO Issues in Seconds

Without Monthly Subscriptions

Comprehensive technical SEO analysis powered by ML and 16 specialized modules. Optional AI-powered insights from Claude, GPT-4, or Gemini. Get actionable insights in seconds, and never pay monthly fees again.

[Download Free Trial](https://www.blackseoanalyzer.com/en/free-trial)

I use AI to generate images for my posts and for general editing, updates, and ironically SEO purposes. I used to draw all of the images for my personal blog (taleas) myself, but as the volume of content I produce has increased, I've turned to AI tools to help create visuals that complement my writing. I go out of my way to generate images that look strange, and don't represent real people. If you ever want to chat about my use of AI, please reach out.

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.blackseoanalyzer.com/#organization","name":"Fiscus Technology, LLC","url":"https://www.blackseoanalyzer.com/","logo":{"@type":"ImageObject","url":"https://www.blackseoanalyzer.com/static/images/black-seo-analyzer.png"},"sameAs":["https://sethserver.com/","https://github.com/sethblack"],"founder":{"@id":"https://www.blackseoanalyzer.com/#seth"}},{"@type":"WebSite","@id":"https://www.blackseoanalyzer.com/#website","name":"bseoa","url":"https://www.blackseoanalyzer.com/","publisher":{"@id":"https://www.blackseoanalyzer.com/#organization"}},{"@type":"Person","@id":"https://www.blackseoanalyzer.com/#seth","name":"Seth Black","url":"https://www.blackseoanalyzer.com/about","jobTitle":"Creator of bseoa","sameAs":["https://www.linkedin.com/in/seth-black-tx/","https://github.com/sethblack","https://www.youtube.com/@SethBlack","https://sethserver.com/"]},{"@type":"BlogPosting","@id":"https://www.blackseoanalyzer.com/en/blog/technical-seo-audit-checklist#article","headline":"Technical SEO Audit Checklist","name":"Technical SEO Audit Checklist","description":"A technical SEO audit checklist in the order to run it: crawlability, indexability, structure, metadata, Core Web Vitals, mobile, security and international.","url":"https://www.blackseoanalyzer.com/en/blog/technical-seo-audit-checklist","datePublished":"2026-09-17T03:21:07","dateModified":"2026-09-17T03:21:07","author":{"@id":"https://www.blackseoanalyzer.com/#seth"},"publisher":{"@id":"https://www.blackseoanalyzer.com/#organization"},"image":{"@type":"ImageObject","url":"https://www.blackseoanalyzer.com/static/images/black-seo-analyzer-og-image.png","width":1200,"height":630},"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.blackseoanalyzer.com/en/blog/technical-seo-audit-checklist"},"isPartOf":{"@id":"https://www.blackseoanalyzer.com/#website"},"inLanguage":"en-US","isAccessibleForFree":true,"wordCount":1399},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://www.blackseoanalyzer.com/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https://www.blackseoanalyzer.com/en/blog"},{"@type":"ListItem","position":3,"name":"Technical SEO Audit Checklist","item":"https://www.blackseoanalyzer.com/en/blog/technical-seo-audit-checklist"}]}]}
```
