An SEO audit checklist
you can work through.
77 checks across crawling, technical set-up, content, links, schema, speed, local, eCommerce and AI search. Each says how to check it, how much it matters and who usually fixes it. Tick as you go, then export or print.
Free, no signup · Ticks stay in your browser
Checks done
0 / 77
- Crawl and indexing0/10
- Technical set-up0/8
- On-page basics0/8
- Content0/8
- Internal links0/7
- Structured data0/6
- Core Web Vitals and speed0/8
- Local search0/6
- eCommerce extras0/7
- AI search readiness0/9
A checklist, not a scanner: nothing here fetches your site, and your ticks never leave this browser.
Brands our teams have delivered for
A free SEO audit checklist: 77 checks in 10 areas, each rated for impact and owner. Tick checks as you go. Progress is saved in your browser, and you can export a CSV or print. Every check says how to verify it and what done looks like. Nothing is sent to us, and there's no signup.
Rated before you start,
not after.
Most checklists leave the ordering until the audit is over. Here every check already carries an impact rating. High means it can stop pages ranking or being indexed. Medium means it holds rankings back or wastes crawling. Low is worth fixing when you're in the code anyway.
Each check also names who usually fixes it: a developer, a writer or editor, or whoever owns SEO. Sorting the export by that column gives you three short lists instead of one long one.
Your ticks are saved in this browser only, so they're still here when you come back on the same device. Nothing is sent to PixelCrayons. To share progress, export the CSV and open it in Google Sheets or Excel.
SEO audit checklist (77 checks)
pixelcrayons.com/tools/seo-audit-checklist · last reviewed 13 October 2026
77 checks,
in the order they matter.
Work top to bottom: a site that can't be crawled won't be helped by better titles. Skip the local and eCommerce groups if they don't apply to you. Last reviewed (changelog).
Crawl and indexing
Can search engines reach, read and keep the pages you care about? Nothing further down matters until this group passes.
0 of 10 done
- High impactWho fixes: Developer
- What to look at
- Disallow rules in /robots.txt, especially any that cover a folder holding pages you want found.
- How to check
- Open yourdomain/robots.txt, then the robots.txt report in Search Console (Settings) for fetch errors.
- Done looks like
- No Disallow rule touches a folder with a page you want in search.
- High impactWho fixes: Developer
- What to look at
- The robots meta tag and the X-Robots-Tag header on every template.
- How to check
- Crawl the site with Screaming Frog, Sitebulb or a similar crawler and filter by indexability; confirm with URL Inspection.
- Done looks like
- Every noindex page is one you meant to keep out of search.
- High impactWho fixes: SEO
- What to look at
- Each reason Google gives for pages not indexed, and how many URLs sit under it.
- How to check
- Search Console, Indexing, Pages. Open each reason and sample its URLs.
- Done looks like
- Every 'not indexed' reason is either expected or has a fix on your list.
- Medium impactWho fixes: SEO
- What to look at
- Whether the sitemap was fetched recently and its URL count roughly matches your real page count.
- How to check
- Search Console, Indexing, Sitemaps; Bing Webmaster Tools, Sitemaps.
- Done looks like
- Status 'Success' and a discovered URL count you can explain.
- Medium impactWho fixes: Developer
- What to look at
- Redirects, 404s, noindex pages or non-canonical URLs inside the sitemap.
- How to check
- Load the sitemap into your crawler in list mode and check status, indexability and canonical for each URL.
- Done looks like
- Every sitemap URL returns 200, is indexable and is its own canonical.
- High impactWho fixes: Developer
- What to look at
- Self-referencing canonicals on unique pages, and variants (parameters, sorting, print) pointing to the main version.
- How to check
- Your crawler's canonical report; URL Inspection shows the Google-selected canonical next to yours.
- Done looks like
- Google's chosen canonical matches yours on your top pages.
- Medium impactWho fixes: Developer
- What to look at
- Pages that are gone but answer 200 (a soft 404), and moved pages that don't redirect.
- How to check
- Request a made-up URL with curl -I; check 'Soft 404' in the Page indexing report.
- Done looks like
- A made-up URL returns 404, and no soft 404 in Search Console surprises you.
- Medium impactWho fixes: Developer
- What to look at
- Redirects that hop more than once before reaching a page that returns 200.
- How to check
- Your crawler's redirect chains report; curl -IL on old URLs that still have backlinks.
- Done looks like
- Every redirect reaches its final page in one hop.
- High impactWho fixes: Developer
- What to look at
- Copy, links and headings that only appear after scripts run, or not at all.
- How to check
- URL Inspection, Test live URL, View tested page; compare the rendered HTML with what you see in a browser.
- Done looks like
- Main copy, links and headings appear in the rendered HTML of every template.
- Medium impactWho fixes: Developer
- What to look at
- Server errors, DNS or robots.txt fetch failures, and a rising average response time.
- How to check
- Search Console, Settings, Crawl stats, Host status.
- Done looks like
- No host problems in the last 90 days.
Technical set-up
Site-wide settings that decide which version of each page exists and whether it works on a phone.
0 of 8 done
- High impactWho fixes: Developer
- What to look at
- Whether http, https, www and the bare domain all end on one https address.
- How to check
- Run curl -I on all four variants; open the HTTPS report in Search Console.
- Done looks like
- Three variants redirect in one hop to the fourth.
- Low impactWho fixes: Developer
- What to look at
- Whether /page and /page/ (and upper-case versions) both answer 200.
- How to check
- Request both forms with curl -I.
- Done looks like
- One form returns 200 and the other redirects to it.
- High impactWho fixes: Developer
- What to look at
- The same content as desktop, readable text, usable tap targets and no sideways scrolling.
- How to check
- Chrome DevTools device mode at 375 px, plus Lighthouse. Google retired its Mobile-Friendly Test in 2023.
- Done looks like
- Same content as desktop and no horizontal scroll at 375 px.
- Medium impactWho fixes: Developer
- What to look at
- Filter, sort, tracking and session parameters producing indexable duplicates.
- How to check
- Filter your crawler's URL list by '?'; check 'Duplicate without user-selected canonical' in Page indexing.
- Done looks like
- Parameter URLs canonicalise to the clean version or stay out of the crawl.
- Medium impactWho fixes: Developer
- What to look at
- Return tags, valid language and region codes, and a self-reference on each version.
- How to check
- Your crawler's hreflang report. Skip this check if you publish one language for one market.
- Done looks like
- Every hreflang pair links back, and every code is valid.
- High impactWho fixes: Developer
- What to look at
- Hacked content, malware warnings, manual actions, and an HSTS header on https responses.
- How to check
- Search Console, Security and Manual Actions; curl -I for Strict-Transport-Security.
- Done looks like
- Both reports are empty and HSTS is present.
- Low impactWho fixes: Developer
- What to look at
- A not-found page that offers navigation or search and still returns the 404 status.
- How to check
- Open a made-up URL in a browser and read the status in DevTools, Network.
- Done looks like
- Real 404 status, with links back into the site.
- Medium impactWho fixes: Developer
- What to look at
- Menus, tabs or pagination built from buttons or script handlers that crawlers can't follow.
- How to check
- Check the rendered HTML of your menus and pagination for a elements with an href.
- Done looks like
- Every navigation link is an a element with an href.
On-page basics
What each page tells a searcher in the results and in its first screen.
0 of 8 done
- High impactWho fixes: SEO
- What to look at
- Missing, duplicated or boilerplate titles, and whether the main term and the promise come first.
- How to check
- Your crawler's page titles report; a site: search on a sample shows what Google displays.
- Done looks like
- No duplicates, and the first 50 or so characters say what the page is.
- Low impactWho fixes: Content
- What to look at
- Missing or duplicated descriptions on pages that earn impressions.
- How to check
- Your crawler's meta description report, sorted by Search Console impressions.
- Done looks like
- Your top 50 pages by impressions each have their own description.
- Medium impactWho fixes: Content
- What to look at
- Missing H1s, and H1s that don't say what the page is.
- How to check
- Your crawler's H1 report; read your top 20 pages yourself.
- Done looks like
- One H1 per page that a searcher would recognise as their query.
- Low impactWho fixes: Content
- What to look at
- H2 and H3 used for structure rather than styling, with questions as headings where readers ask them.
- How to check
- A heading outline from your crawler or a browser extension, on each template.
- Done looks like
- The heading outline reads like a table of contents.
- High impactWho fixes: SEO
- What to look at
- Two or more of your pages taking turns to rank for the same query.
- How to check
- Search Console, Performance: filter by the query and open the Pages tab. More than one URL is the sign.
- Done looks like
- Each priority query has one page you want to rank, and the others link to it.
- Low impactWho fixes: SEO
- What to look at
- IDs, dates, strings of stop words or capitals in the URLs of pages that matter.
- How to check
- Your crawler's URL report. Change a live URL only with a 301 and a reason.
- Done looks like
- New pages follow one readable pattern; old ones stay unless a redirect is worth it.
- Low impactWho fixes: Content
- What to look at
- Alt text on meaningful images, empty alt on decorative ones, and width and height set.
- How to check
- Your crawler's images report; the Lighthouse accessibility audit.
- Done looks like
- Meaningful images say what they show; decorative ones carry an empty alt.
Content
Whether each page deserves to rank against what already does.
0 of 8 done
- Medium impactWho fixes: Content
- What to look at
- Pages with little unique text: tag archives, empty categories, location pages with only the town name swapped.
- How to check
- Sort your crawler's word count column ascending; cross-check pages with impressions but no clicks.
- Done looks like
- Each thin page is expanded, merged or set to noindex, with a reason written down.
- Medium impactWho fixes: Content
- What to look at
- Pages that say much the same thing, often left over from a redesign or a content push.
- How to check
- Your crawler's near-duplicates report (Screaming Frog and Sitebulb both have one).
- Done looks like
- Each duplicate set is down to one page, and the rest redirect to it.
- High impactWho fixes: SEO
- What to look at
- Pages whose clicks fell over a year while demand for their query held.
- How to check
- Search Console, Performance: compare the last three months with the same months last year, Pages tab.
- Done looks like
- Each decaying page has a refresh, merge or retire decision.
- Medium impactWho fixes: Content
- What to look at
- Whether the first 100 words of each key page answer the query it ranks for.
- How to check
- Read the opening of your top 20 pages next to their top query in Search Console.
- Done looks like
- Each top page answers its main query before the first subheading.
- Medium impactWho fixes: Content
- What to look at
- Original data, worked examples, photos or cases that a competitor couldn't copy.
- How to check
- For each priority page, list what it has that the top five results don't.
- Done looks like
- Every priority page has at least one thing the others lack.
- Medium impactWho fixes: SEO
- What to look at
- Questions and subtopics the ranking pages cover and yours doesn't.
- How to check
- Compare your page with the top five results and the People Also Ask questions for its query.
- Done looks like
- A brief for each priority page listing what to add, not a keyword count.
- Low impactWho fixes: Developer
- What to look at
- A visible 'last updated' date and a dateModified in schema that move only when the content changes.
- How to check
- View source for dateModified and compare it with the visible date and your edit history.
- Done looks like
- The visible date and dateModified match and change only with real edits.
Internal links
How authority and crawlers move through your own site.
0 of 7 done
- Medium impactWho fixes: Developer
- What to look at
- Links from your pages to URLs that return 404 or 410.
- How to check
- Your crawler's client error (4xx) report, with the inlinks for each URL.
- Done looks like
- No internal link points to a 4xx page.
- Low impactWho fixes: Developer
- What to look at
- Links that pass through a redirect, including a missing trailing slash.
- How to check
- Your crawler's internal redirection (3xx) report.
- Done looks like
- Internal links land on a 200 page without a hop.
- Medium impactWho fixes: SEO
- What to look at
- Pages in the sitemap or in analytics that no internal link reaches.
- How to check
- Crawl with your sitemap and Search Console connected, then filter for orphan URLs.
- Done looks like
- Every page you want ranked has at least one link from the body of another page.
- Medium impactWho fixes: SEO
- What to look at
- How many clicks it takes to reach your money pages and best guides.
- How to check
- Your crawler's crawl depth report.
- Done looks like
- Priority pages are three clicks or fewer from the home page.
- Low impactWho fixes: Content
- What to look at
- 'Click here' and 'read more' links, and one anchor used for several different pages.
- How to check
- Your crawler's anchor text report for each priority page.
- Done looks like
- Links to each priority page use descriptive, consistent wording.
- Medium impactWho fixes: SEO
- What to look at
- Category or service hubs that skip some of their child pages, and children that don't link back up.
- How to check
- Compare each hub's links with the list of pages in its folder.
- Done looks like
- Each hub links to all its children, and each child links to its hub.
- Low impactWho fixes: Developer
- What to look at
- rel=nofollow on links from one of your pages to another.
- How to check
- Your crawler's internal nofollow outlinks report.
- Done looks like
- Internal links carry no nofollow.
Structured data
Schema markup that describes your pages to search and answer engines, and must match what the page shows.
0 of 6 done
- Medium impactWho fixes: Developer
- What to look at
- Errors and warnings in the JSON-LD on each template.
- How to check
- Schema Markup Validator (validator.schema.org) for syntax; Google's Rich Results Test for search features.
- Done looks like
- No errors on any template, and every warning reviewed.
- High impactWho fixes: SEO
- What to look at
- FAQ, review, rating or price markup for content a reader can't see on the page.
- How to check
- Compare each schema type with the visible page; check Manual Actions for structured data issues.
- Done looks like
- Every marked-up item is visible to a reader on the same page.
- Medium impactWho fixes: Developer
- What to look at
- Name, logo, URL, contact details and sameAs links to the profiles you actually run.
- How to check
- Rich Results Test on the home page, or view source.
- Done looks like
- One Organization node with the same name and profiles you use everywhere.
- Medium impactWho fixes: SEO
- What to look at
- Product on product pages, Article on posts, LocalBusiness for each location, and so on.
- How to check
- List your templates and the schema type each one outputs.
- Done looks like
- Each template uses the most specific type that fits it.
- Medium impactWho fixes: Developer
- What to look at
- Invalid items in the rich result reports Search Console shows for your site.
- How to check
- The rich result reports in Search Console's menu (Breadcrumbs, Product snippets, Review snippets and any others listed).
- Done looks like
- No invalid items, or a fix scheduled for each.
Core Web Vitals and speed
How fast pages load and respond for real visitors. Field data first; lab tests explain it.
0 of 8 done
- High impactWho fixes: Developer
- What to look at
- Real-user LCP, INP and CLS for mobile and desktop.
- How to check
- Search Console, Core Web Vitals report; the top section of PageSpeed Insights (Chrome UX Report data).
- Done looks like
- You know which URL groups are poor, from real users rather than a lab score.
- High impactWho fixes: Developer
- What to look at
- The largest element on each key template and what delays it: server time, load delay, load time or render delay.
- How to check
- The LCP breakdown in PageSpeed Insights or Lighthouse.
- Done looks like
- At least 75% of mobile visits show the main element within 2.5 seconds.
- Medium impactWho fixes: Developer
- What to look at
- Slow responses to taps and clicks, usually from heavy scripts. INP replaced FID in March 2024.
- How to check
- Core Web Vitals report; the DevTools Performance panel with CPU throttling on.
- Done looks like
- Interactions respond within 200 ms for at least 75% of visits.
- Medium impactWho fixes: Developer
- What to look at
- Images, embeds, banners and fonts that push content around as they load.
- How to check
- The layout shift culprits in Lighthouse; check width and height on media.
- Done looks like
- Nothing visibly jumps while the page loads.
- Medium impactWho fixes: Developer
- What to look at
- Time to first byte on HTML, and whether pages come from a cache or CDN.
- How to check
- curl with -w and time_starttransfer, or WebPageTest.
- Done looks like
- Time to first byte at or under 0.8 seconds, Google's 'good' line.
- Medium impactWho fixes: Developer
- What to look at
- Images larger than they display, and missing WebP or AVIF versions.
- How to check
- The image audits in Lighthouse; your crawler's list of images over 100 KB.
- Done looks like
- Images served at display size in WebP or AVIF.
- Medium impactWho fixes: Developer
- What to look at
- Tag manager, chat, heatmap and ad tags: their size and when they load.
- How to check
- The third parties section in Lighthouse; DevTools Network, grouped by domain.
- Done looks like
- Each tag has an owner and a reason, and none delays the first paint.
- Low impactWho fixes: Developer
- What to look at
- The Cache-Control header on CSS, JavaScript, fonts and images.
- How to check
- curl -I on one file of each kind.
- Done looks like
- Versioned static files are cached for a year.
Local search
Only for businesses that serve customers in a place. Skip this group otherwise.
0 of 6 done
- High impactWho fixes: SEO
- What to look at
- Primary category, hours, address or service area, photos and the website link.
- How to check
- Your Google Business Profile, edited from Search or Maps while signed in.
- Done looks like
- A verified profile with the right primary category and current hours.
- Medium impactWho fixes: SEO
- What to look at
- The same business name, address and phone on your site, your profile and the main directories.
- How to check
- Search your phone number and business name, and compare what comes back.
- Done looks like
- One version of each in every place you control.
- Medium impactWho fixes: Content
- What to look at
- Location pages with local detail, not the same text with the town name swapped.
- How to check
- Read each location page side by side with another.
- Done looks like
- Each location page has something only that location has.
- Low impactWho fixes: Developer
- What to look at
- Address, opening hours, geo coordinates and the most specific business subtype.
- How to check
- Rich Results Test on each location page.
- Done looks like
- Each location page carries its own valid LocalBusiness node.
- Medium impactWho fixes: SEO
- What to look at
- How many new reviews arrive each month, and whether each one gets a reply.
- How to check
- The reviews tab in Google Business Profile.
- Done looks like
- New reviews every month, and a reply on each.
- Low impactWho fixes: SEO
- What to look at
- The profile's website link, which should point at the matching location page.
- How to check
- Open the profile's website link and check where it lands.
- Done looks like
- Each profile sends visitors to its own location page.
eCommerce extras
Only for online shops, where filters, variants and stock changes multiply URLs.
0 of 7 done
- High impactWho fixes: Developer
- What to look at
- Filter combinations creating thousands of crawlable URLs.
- How to check
- Compare your crawler's URL count with your product count; Crawl stats by file type and purpose.
- Done looks like
- Only filters people search for are indexable; the rest stay out of the crawl.
- Medium impactWho fixes: Developer
- What to look at
- Products that 404 the moment they sell out, or stay live for ever with no alternative.
- How to check
- Filter your crawler's 4xx report to product URLs; open a product you know has sold out.
- Done looks like
- Temporarily sold-out products stay live; discontinued ones redirect to the nearest match or return 410.
- High impactWho fixes: Developer
- What to look at
- Price, availability, brand, GTIN where you have one, and review data only where reviews show.
- How to check
- Rich Results Test; the Merchant listings and Product snippets reports in Search Console.
- Done looks like
- No invalid items in the Merchant listings report.
- Medium impactWho fixes: Content
- What to look at
- Category pages with only a product grid and no words explaining the range.
- How to check
- Read your top categories by revenue.
- Done looks like
- Top categories carry a short, useful introduction and buying advice.
- Medium impactWho fixes: Developer
- What to look at
- Colour and size variants on separate indexable URLs with the same content.
- How to check
- Filter your crawler's near-duplicates report to product URLs.
- Done looks like
- Variants canonicalise to one product page, or each earns its own content.
- Medium impactWho fixes: Developer
- What to look at
- Page 2 onwards reachable by plain links, not only by infinite scroll or a load-more button.
- How to check
- Turn JavaScript off and try to reach page 3 of a category.
- Done looks like
- Every product can be reached through linked category pages.
- Medium impactWho fixes: SEO
- What to look at
- Price and availability that differ between your product feed and your product pages.
- How to check
- Google Merchant Center, Diagnostics.
- Done looks like
- No price or availability mismatch warnings.
AI search readiness
Answer engines (Google AI Overviews, ChatGPT, Perplexity, Claude) read the same pages, with a few extra needs.
0 of 9 done
- High impactWho fixes: SEO
- What to look at
- Rules for GPTBot, ClaudeBot, PerplexityBot and Google-Extended, and any blanket rule that catches them. Search crawlers can differ from training ones: OpenAI's OAI-SearchBot isn't GPTBot.
- How to check
- Read robots.txt for each user agent and decide per bot what you allow.
- Done looks like
- Each AI crawler has the access you chose on purpose.
- High impactWho fixes: Developer
- What to look at
- Bot protection or AI-blocking settings at your CDN or host that overrule robots.txt.
- How to check
- Check the bot settings and firewall events at your CDN for those user agents.
- Done looks like
- Firewall logs show AI crawlers receiving 200 responses.
- Medium impactWho fixes: Content
- What to look at
- A 40 to 60 word direct answer under the heading of each page that targets a question.
- How to check
- Read the first screen of each priority page: could one passage be quoted on its own?
- Done looks like
- Each priority page opens with an answer that makes sense out of context.
- Medium impactWho fixes: SEO
- What to look at
- Your name, one-line description, founding year and location across the site, schema, llms.txt and main profiles.
- How to check
- Put the home page meta description, Organization schema, llms.txt, LinkedIn and Google Business Profile side by side.
- Done looks like
- The same name and one-line description in every place you control.
- Low impactWho fixes: Developer
- What to look at
- sameAs links in your Organization markup to the profiles you actually run.
- How to check
- View source on the home page and open each sameAs link.
- Done looks like
- Every sameAs link opens a live profile of yours.
- Medium impactWho fixes: Content
- What to look at
- Prices, numbers, locations and service lists that only appear in images, PDFs or scripts.
- How to check
- Turn off JavaScript and images, then read the page.
- Done looks like
- Every fact you want quoted is in the HTML as text.
- Medium impactWho fixes: Developer
- What to look at
- nosnippet, max-snippet or data-nosnippet, which also stop text appearing in AI Overviews.
- How to check
- Search the source of each template for those directives.
- Done looks like
- Snippet limits exist only where someone chose them.
- Low impactWho fixes: SEO
- What to look at
- A plain-text summary at /llms.txt with your key facts and main pages. It's a proposed convention, and support among answer engines is unconfirmed.
- How to check
- Open yourdomain/llms.txt and check that every link in it returns 200.
- Done looks like
- A short, accurate file whose links all work, or a decision not to publish one.
- Medium impactWho fixes: SEO
- What to look at
- Whether you appear, and how you're described, for 10 to 20 questions your buyers ask.
- How to check
- Run the same prompts each month in ChatGPT, Perplexity, Gemini and Google's AI Mode, and log the answers.
- Done looks like
- A dated log of answers you can compare month to month.
Not every red line
is a problem.
Audit tools flag everything at equal weight. These come up on almost every crawl and rarely change rankings. Each one has a case where it does matter.
- “Title too long”
- Google rewrites or truncates long titles, and a long title still ranks.
- It matters when the cut falls before the words that carry the query or the reason to click.
- “Meta description missing or too short”
- Google often writes its own snippet from the page anyway.
- It matters on pages that earn impressions where Google's chosen snippet reads badly.
- “Multiple H1 tags”
- Google has said several H1s are fine when the page structure is clear.
- It matters when the H1s say different things, or the main one is missing.
- “Low word count”
- Contact, pricing, tool and product pages are short by design.
- It matters on pages meant to answer an informational query in depth.
- “Duplicate content”
- Legal text, shared footers and specs shared by variants repeat on every site.
- It matters when two of your pages compete for the same query.
- “Page is noindex”
- Thank-you pages, internal search and filter pages are meant to stay out of search.
- It matters only when the page is one you want found.
- “Missing alt text on decorative images”
- Icons and background art should carry an empty alt, which some tools flag.
- It matters when the image carries meaning or sits inside a link.
- “Low text-to-HTML ratio”
- It isn't a ranking factor; modern frameworks simply produce a lot of markup.
- It matters only as a hint that content may be loading through scripts, so check the rendered HTML instead.
We ran it on
our own site.
pixelcrayons.com, checked on 13 October 2026. Only what we measured is here; anything we couldn't measure from outside, such as Search Console field data, is left out.
- Crawl and indexing
robots.txt
Returned 200. GPTBot, ClaudeBot, PerplexityBot and Google-Extended are allowed everywhere except /mockups/; all other crawlers everywhere except /admin/ and /mockups/. The file names the sitemap.
Pass - Crawl and indexing
Sitemap
366 URLs, each with a lastmod date. We requested all 366: every one returned 200, none carried noindex, and every canonical pointed to its own URL.
Pass - Technical set-up
One version of the site
The three other versions (http with and without www, and https without www) each redirect (301) in one hop to https://www. A URL without its trailing slash redirects to the slash form, and a made-up URL returns 404.
Pass - Technical set-up
Response headers
The home page sends HSTS with preload, X-Content-Type-Options, X-Frame-Options, Referrer-Policy and Permissions-Policy, gzip-compressed through Cloudflare. Static scripts and images are cached for a year.
Pass - Technical set-up
Small oddities
Static files send two Cache-Control headers that agree with each other, and the 404 page carries two robots tags that both say noindex. Neither changes how the site is crawled.
Leave - On-page basics
Titles, descriptions and H1s
Across the 366 sitemap pages: no duplicate titles or descriptions, and exactly one H1 on every page. 44 titles run past 60 characters and 25 descriptions fall outside 120 to 160 characters.
Leave - Internal links
Broken and redirected links
The 366 pages link to 687 different internal URLs. 684 returned 200, two redirected (a missing trailing slash and a renamed case study) and one returned 404.
Fix - Structured data
Home page schema
Six JSON-LD blocks: Organization (founding year, address and six sameAs profiles), WebSite, ProfessionalService, FAQPage, and a WebPage with speakable sections and its modified date.
Pass - Core Web Vitals and speed
Lighthouse, home page
Three runs of Lighthouse 13.5.0 (mobile, simulated slow 4G) on the live page: performance 66 to 79, accessibility 100, SEO 100, CLS 0. LCP was 4.0 to 4.5 seconds, the hero background image, most of it render delay. Best practices scored 100 once and 77 twice, docked for third-party cookies from marketing tags.
Fix - AI search readiness
AI crawlers at the edge
Requests for /marketing/seo/ sending the GPTBot, ClaudeBot and PerplexityBot user-agent strings all returned 200. A borrowed user agent can't prove the real bots get through; firewall logs can.
Pass - AI search readiness
llms.txt
Returned 200: 61 lines with 57 links, and every link returned 200.
Pass - AI search readiness
One name and description
The meta description, the Organization schema and llms.txt all describe one team for marketing, development, design and AI. The schema version drops the word 'senior' that the other two use.
Fix
Method: curl for robots.txt, llms.txt, headers and redirects; a script that requested every sitemap URL and every internal link on those pages; Lighthouse from the command line. Lab results, not field data.
Last reviewed
- 13 October 2026
First edition. Replaces our older checklist post: INP instead of FID, the Rich Results Test and Schema Markup Validator instead of retired Google tools, and a new AI search group.
- The SEO audit we run for clients The full audit, with the fix list ranked for you.
- Website self-audit Nine questions, two minutes, if this list is more than you need today.
- Technical SEO When the crawl, speed or schema fixes need a developer who knows search.
- What an SEO audit should cover How to judge an audit someone else hands you.
- Best SEO companies, scored If you'd rather hire it out, compare firms on published evidence.
Frequently
asked.
Crawling and indexing, technical set-up, on-page basics, content, internal links, structured data, Core Web Vitals and AI search readiness, plus local and eCommerce checks where they apply. Each check needs a way to verify it and a rating for how much it matters. Without the rating, you get a long list and no order.
Yes. Download the blank CSV, or tick checks here and export them with your progress, then open the file in Google Sheets or Excel. Every row keeps the impact, who usually fixes it and what done looks like.
Run the full list once a year, and again after a redesign, migration or platform change. Look at the Page indexing and Core Web Vitals reports in Search Console every month, since most problems show there first.
No. It means the common blockers are cleared. Rankings still depend on your content and the competition for each query. If you want someone to look at a real URL, the free website review does that.
Prefer someone else
ran it?
A senior strategist records five minutes on your actual site and tells you what to fix first. Free, and yours to keep.
Free review · No retainer required · Yours to keep
Last updated















