Technical SEO

SEO checklist for a website: 80+ items to audit

SEO checklist for a website: complete audit list

A complete SEO checklist: technical settings, on-page optimisation, content, structured data, off-page factors and analytics. Every section lists concrete items to check — not generic advice.

SEO is not a single action — it's a system. One configured sitemap won't push a project to the top, and a well-written title tag won't compensate for a slow server. This checklist covers all key areas: from the technical foundation to content and analytics. Use it when launching a new site, before an audit, or as a recurring review map.

Don't try to close everything at once. Divide the checklist into blocks and work through them sequentially: technical issues first, then on-page, then content. Unresolved technical problems devalue everything else.
80+

Checklist items

Full coverage: technical, on-page, content, structured data, analytics

7

Checklist blocks

Each block is a standalone section that can be checked independently

53%

Traffic is organic

Median organic traffic share for B2B websites, BrightEdge 2024 data

Top 3

Positions = 60% of clicks

The first three search results capture around 60% of all clicks on a query

How to use this checklist

Each section is structured by importance. Items flagged as critical are basic hygiene — without them, everything else is irrelevant. The rest are second- and third-tier improvements. For a new site, work through the checklist top to bottom. For an existing site, start with the sections where you suspect a problem, then close the rest.

Create a spreadsheet in Google Sheets or Notion with three columns: item, status (OK / issue / not applicable), comment. This turns the checklist into a living document you can hand to your team and update at every audit.

Technical SEO checklist

Technical SEO is the foundation. If Google can't find, read, or index your pages, no content or links will help. Check this section first.

Indexing and crawling

  1. robots.txt exists and is accessible at /robots.txt — no commercial or product page is blocked by a Disallow directive
  2. XML sitemap is created, contains all public pages, and has been submitted to Google Search Console via the Sitemaps section
  3. No page that should be indexed carries a <meta name="robots" content="noindex"> tag
  4. Googlebot can load CSS and JavaScript — these paths are not blocked in robots.txt (a common mistake when moving from staging to production)
  5. URL parameters are configured in Google Search Console so session tokens and UTM parameters don't create page duplicates
  6. Crawl budget is not wasted: no infinite URLs from unbounded pagination, no faceted navigation generating thousands of uncanonicalized variants
  7. All pages are accessible at a single canonical URL — no parallel versions without a redirect or canonical tag

URL structure and redirects

  1. URLs use readable words separated by hyphens, not IDs or numbers: /blog/seo-checklist instead of /p?id=4821
  2. Word separator is a hyphen (-), not an underscore (_): Google treats underscores as word joiners
  3. URLs are fully lowercase: /Blog/Article creates a technical duplicate of /blog/article
  4. 301 redirect from HTTP to HTTPS is configured and working
  5. 301 redirect from www to non-www (or vice versa) is set up — a single canonical domain is chosen
  6. No redirect chains longer than one hop: A → B → C should be collapsed to A → C
  7. All deleted pages either return 410 (Gone) or have a 301 redirect to a live page — don't leave 404s on pages that carry backlinks
  8. The 404 page returns an actual 404 status code (not 200!), contains useful links, and doesn't create a frustrating dead end

HTTPS and security

  1. SSL certificate is valid and not expiring within 30 days — set up auto-renewal (Let's Encrypt + Certbot)
  2. No mixed content: all resources on the page (CSS, JS, images, fonts) load over HTTPS, not HTTP
  3. HSTS (Strict-Transport-Security) header is set in the server response
  4. Content-Security-Policy header is configured, restricting resource load origins
  5. X-Frame-Options or CSP frame-ancestors prevents embedding the site in an iframe without permission

Mobile optimisation

  1. <meta name="viewport" content="width=device-width, initial-scale=1"> is present on every page
  2. Text is readable without zooming: base font size at least 16px for body content
  3. Buttons and links are at least 44×44px for comfortable tap targets
  4. No horizontal scroll on screens from 320px wide
  5. Google Mobile-Friendly Test passes without critical errors
  6. No separate mobile subdomain m.site.com — if one exists, canonical and hreflang are correctly configured, or a full migration to responsive design is complete

Page speed and Core Web Vitals

MetricGoodNeeds improvementPoor
LCP (Largest Contentful Paint)≤ 2.5 s2.5–4.0 s> 4.0 s
INP (Interaction to Next Paint)≤ 200 ms200–500 ms> 500 ms
CLS (Cumulative Layout Shift)≤ 0.10.1–0.25> 0.25
TTFB (Time to First Byte)< 200 ms200–500 ms> 500 ms

  1. LCP element (usually the hero image) is optimised: WebP format, no larger than needed, fetchpriority="high" attribute added
  2. Render-blocking resources are eliminated: critical CSS is inlined, non-critical scripts use defer or async
  3. Images below the fold have loading="lazy" attribute
  4. All images have explicit width and height attributes — prevents CLS
  5. JavaScript bundle is minimised: no unused libraries, heavy dependencies replaced with lighter alternatives
  6. TTFB < 200 ms: static caching is configured, CDN is used for media assets, database queries are optimised
  7. HTTP/2 or HTTP/3 is in use — verify in Chrome DevTools → Network → Protocol column
Core Web Vitals are measured on real user data (CrUX), not just in lab tests. Google Search Console → Core Web Vitals shows the real state. PageSpeed Insights lab data is a debugging guide, not the final score.

On-page checklist

On-page covers everything you place on the page directly. This is where most day-to-day SEO work happens: tags, headings, content, images, internal links.

Title tag

  1. Title is unique for every page on the site — no two pages share the same title
  2. Length 50–60 characters: Google truncates titles at roughly 580px width
  3. Primary keyword is placed closer to the start — the first words carry more weight
  4. No keyword stuffing: "SEO optimisation SEO services SEO London" is a red flag for the algorithm
  5. Title is written in sentence case: "SEO checklist for a website", not "SEO Checklist For A Website"
  6. The homepage is not titled simply "Home" — that wastes a prime opportunity to rank for branded queries

Meta description

  1. Meta description is unique for every page — duplicates reduce site-wide CTR
  2. Length 140–160 characters — within this range it displays without truncation in most cases
  3. Primary keyword is included — Google bolds matches with the user's search query
  4. A specific call to action is present: "Read the full checklist", "Audit your site in 15 minutes"
  5. No special characters " < > — they may be stripped or escaped on display

Heading structure H1–H6

  1. Every page has exactly one H1 tag — not zero and not two
  2. H1 contains the primary keyword and aligns with the title topic
  3. H1 is correctly marked up in HTML, not a visually large div or span
  4. Heading hierarchy is unbroken: H2 → H3, no jump from H2 to H4
  5. H2 headings include semantically related queries and synonyms — broadening topical coverage
  6. Headings describe the section content, not serve as marketing slogans with no SEO value

Canonical tags and duplicates

  1. A canonical tag is present on every page — self-referencing or pointing to the preferred version
  2. No conflicting canonicals: e.g. canonical points to A while the sitemap submits it as B
  3. Pagination pages (/category?page=2) have a self-referencing canonical — not pointing to page 1, which is an outdated practice Google deprecated in 2019
  4. Trailing-slash and non-trailing-slash versions behave consistently: one redirects to the other
  5. Print versions and AMP pages (if present) are correctly related to the canonical version

Image optimisation

  1. All images have a descriptive alt attribute — not empty and not the same text repeated across every image
  2. Decorative images (dividers, backgrounds) have alt="" (empty) — correct for accessibility
  3. File names describe the content: seo-checklist-example.webp, not IMG_4821.webp
  4. WebP (or AVIF) format for photos and complex illustrations — 25–35% lighter than JPEG at equivalent quality
  5. Width and height attributes are set on all images — prevents Layout Shift (CLS)
  6. loading="lazy" on images below the fold
  7. The hero image (above the fold) has fetchpriority="high" and does NOT have loading="lazy"
  1. Every new page receives at least one internal link from existing content — no orphan pages
  2. Anchors are descriptive: "complete robots.txt checklist" instead of "here", "read", "link"
  3. Key pages (services, categories) receive more internal links than supporting content
  4. No broken internal links (404s) — check with Screaming Frog, Sitebulb, or Ahrefs
  5. No links pointing to noindex pages — an internal link to a hidden page wastes crawl budget
Internal linking is one of the most cost-effective SEO tools: zero placement cost and a direct effect on PageRank distribution. A page with three quality internal links from topically related pages significantly outperforms an orphan page.

Structured data

Structured markup helps Google understand the type of page and unlocks access to Rich Results in search. For most sites, this is an additional lever for CTR growth without changing positions.

Schema.org markup

  1. Markup type matches the page type: Article or BlogPosting for articles, Product for products, LocalBusiness for local businesses, FAQPage for FAQ content
  2. Markup is implemented in JSON-LD format (Google's recommended format), not Microdata
  3. Markup is validated in Rich Results Test and Google Search Console → Enhancements — no critical errors
  4. Required fields are populated: for Article — headline, author, datePublished; for Product — name, description, offers
  5. FAQPage markup is only used on pages where FAQ is the primary content — don't add it arbitrarily
  6. For local businesses, name, address, and phone (NAP) in the markup exactly match Google Business Profile

Open Graph and social tags

  1. Tags og:title, og:description, og:image, og:url are set on every page
  2. og:image is at least 1200×630px — the optimal size for previews on Facebook and LinkedIn
  3. og:type is correct: website for the homepage, article for blog posts
  4. Twitter Card tags are configured: twitter:card, twitter:title, twitter:image
  5. Previews are tested via Facebook Sharing Debugger and Twitter Cards Validator

Content and E-E-A-T

Since 2022–2023, Google has consistently amplified the importance of E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) in page evaluation. This isn't a direct algorithmic signal, but E-E-A-T signals correlate with rankings in competitive niches.

Content quality

  1. Content is written for people, not robots: the page exists because it provides real value to the user, not just to capture traffic
  2. The primary keyword and its variants appear in the H1, first paragraph, one or two H2s, and naturally throughout the text
  3. No keyword stuffing: the same query isn't repeated in every sentence
  4. The topic is covered completely: the page answers all related user questions — check what competitors in the top 5 cover
  5. Specific numbers, dates, and examples are used — not generic statements like "SEO is very important for business"
  6. The author is named with at least a brief biography — anonymous content is weaker from an E-E-A-T perspective
  7. Publication and update dates are visible — Google factors in content freshness for certain topics

Regular content audit

  1. Pages with no organic traffic for 12+ months have been analysed: decision — improve, merge with another page, or remove with a 301 redirect
  2. Outdated data (statistics, tools, links) has been updated — especially important for SEO, marketing, and tech content
  3. No duplicated content between pages on the site: use Siteliner or Screaming Frog to detect it
  4. Thin content (pages under 200–300 words with low value) has been merged into longer pages or expanded
  5. Check for cannibalization: multiple pages aren't competing for the same query — visible in Search Console's query report
Pareto rule for content audits: 20% of pages generate 80% of organic traffic. Start improving your top 20 traffic pages from Search Console — the return on optimising those is highest.

Off-page checklist

Off-page SEO extends beyond your site — it covers your backlink profile, mentions, and local presence. These factors are harder to influence, but they determine domain authority in Google's eyes.

  1. Backlink profile reviewed in Ahrefs, Semrush, or Google Search Console (Links report): no mass spam links from PBNs or link farms
  2. Disavow file in Google Search Console is configured where clearly manipulative or spam links are present
  3. Active link building is underway: guest posts, HARO/Connectively, partnerships, digital PR
  4. Anchor profile is diverse: no over-representation of exact-match commercial anchors that would look unnatural
  5. External links pointing to your site lead to live pages — no link equity lost to 404s

Local SEO (for local businesses)

  1. Google Business Profile is created, verified, and fully filled in: category, description, hours, photos
  2. NAP (Name, Address, Phone) is identical on the website, in GBP, and in all directories — any discrepancy confuses the algorithm
  3. Site is registered in relevant industry and local directories (Yelp, industry aggregators)
  4. Google reviews receive regular responses — both positive and negative
  5. LocalBusiness Schema markup on location pages is correctly configured

Analytics and monitoring

SEO without analytics is working blind. Analytics doesn't just show results — it tells you exactly where the problem is: a traffic drop, a rankings loss, a high bounce rate on a specific page.

Google Search Console

  1. Site is verified in Google Search Console via DNS or page tag
  2. XML sitemap is submitted and shows no errors
  3. Index Coverage / Pages report is checked monthly: no new Excluded or Crawled-not-indexed errors
  4. Core Web Vitals report in GSC shows LCP, INP, CLS status based on real user data
  5. Links report is checked quarterly: monitoring external backlink profile
  6. Email alerts for errors are enabled — Google sends notifications when it detects crawl or indexing issues

Google Analytics 4

  1. GA4 is installed and data is flowing correctly — verify via the real-time report
  2. Key conversion events are configured: form submission, call click, add to cart, registration
  3. Internal traffic filter is set up so employee visits don't skew data
  4. GA4 linked to Google Search Console — enables query analysis alongside on-site behaviour data
  5. Traffic channel report is set up: clear separation of Organic Search / Direct / Referral / Paid

Regular monitoring schedule

Weekly

Keyword rankings (Rank Tracker or Search Console). Organic traffic for the last 7 days vs the previous period. Uptime alerts (Uptime Robot, Better Uptime).

Monthly

Indexing errors in GSC. Core Web Vitals report. On-page checklist review for newly published pages. Backlink profile check for new links and losses.

Quarterly

Full technical audit (Screaming Frog). Content audit by traffic. Update of stale content. Competitor analysis on key queries — rankings, content, links.

After every update

Core Web Vitals and PageSpeed Insights check. Mobile-friendliness test. GSC error report review. Structured data validation.

Responding to major Google algorithm updates (Core Update, Helpful Content Update) requires at least 28 days of data before and after. Short-term fluctuations are normal. If the drop is sustained four weeks after the update, that's a signal for a thorough audit.

Frequently asked questions about SEO checklists

Technical items: monthly or after any significant site change (engine update, redesign, migration). On-page and content items: when publishing new material and during quarterly content audits. Analytics: weekly. A full run through the entire checklist: every six months or after major Google algorithm updates.
For a new site, order matters: start with the technical block (HTTPS, Googlebot accessibility, robots.txt, sitemap), then on-page before each publication (title, H1, meta description), then structured data. Connect analytics (GSC, GA4) on day one — without it you're blind. Off-page factors come after the foundation is ready.
No. Prioritise by risk-to-effort ratio. Critical technical issues (noindex on live pages, missing HTTPS, no GSC) are fixed first. Fine-tuning (Open Graph, Schema for all pages, HSTS) fills the gaps later. For a live site with traffic, start with sections where you already suspect a problem.
Fast results come from improving CTR through title and meta description rewrites (visible within 1–2 weeks in Search Console), fixing indexing errors (Google typically reindexes corrected pages within 1–4 weeks), and adding internal links to important pages (PageRank redistribution). Backlinks and content authority are long-term investments with results in 3–6 months.
Export the checklist into a spreadsheet. For the technical block, use Screaming Frog (crawl) and Google Search Console (real index state). For on-page: tag parsing via Screaming Frog or Sitebulb. PageSpeed Insights for speed. Start with the top 50 pages by organic traffic — that's where optimisation delivers the highest return.