SiteAuditLint checklist library
What this checklist covers
A technical SEO checklist helps you find the crawlability, indexability, redirect, canonical, status code, XML sitemap, robots.txt, structured data, and JavaScript rendering problems that stop search engines and AI crawlers from discovering and ranking your pages.
It is organized into 14 sections: Crawlability, Status Codes, Redirects, Indexability, Robots.txt, XML Sitemaps, HTTPS and Security, Duplicate URLs, Internal Linking, JavaScript Rendering, Structured Data, Images, International and AI Crawler Accessibility. Each check lists exactly what to verify and a priority, so you can work through the highest impact items first.
For background on the concepts behind these checks, see Technical SEO course, Technical SEO checklist for search and AI, Technical SEO audit.
Who it is for:
Download the technical seo checklist
Use the interactive version below, or download it to share with your team, attach to tickets, or work through offline.
Technical SEO Checklist
Work through each check
0 of 28 checks complete
Crawlability
Status Codes
Redirects
Indexability
Robots.txt
XML Sitemaps
HTTPS and Security
Duplicate URLs
Internal Linking
JavaScript Rendering
Structured Data
Images
International
AI Crawler Accessibility
Progress is saved in this browser only.
Detailed explanations
Each section below explains what to check, why it matters, the problems you will usually find, how to fix them, and how to confirm the fix.
Crawlability
What to check:
- Crawl the full site. Run a full crawl and confirm all important URLs are discovered.
- Check crawl depth. Key pages are reachable within 3 clicks of the homepage.
- Check crawlable links. Navigation uses <a href> links, not JS click handlers.
Why it matters: Search engines can only rank what they can discover. If crawlers cannot follow links to a URL, that page will rarely be indexed, no matter how good its content is. Crawl depth also signals importance: pages buried many clicks deep get crawled less often.
Common problems:
- Navigation built with JavaScript click handlers instead of anchor links
- Important pages only reachable through internal search or forms
- Pagination or filters creating near infinite URL spaces that waste crawl budget
- Key pages sitting five or more clicks from the homepage
How to fix it: Use standard <a href> links for all navigation, add contextual links from high authority pages to deep content, and constrain parameter and filter URLs so crawlers spend time on pages that matter.
How to verify: Run a full crawl, compare discovered URLs with your sitemap and analytics landing pages, and review the crawl depth report for any important URL deeper than three clicks.
Learn more: Crawling explained, What is a website crawler, Crawlability vs indexability, Deep page issue.
How SiteAuditLint helps: it checks crawlability across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
Status Codes
What to check:
- Check HTTP status codes. Important URLs return 200; no unexpected 3xx, 4xx or 5xx.
- Find soft 404s. Thin or empty pages do not return 200 as fake content.
- Check server errors. No 5xx responses on templates or sitemap URLs.
Why it matters: HTTP status codes tell crawlers whether a URL is live, moved, missing, or broken. A 200 response is required for indexing. Unexpected 4xx and 5xx responses remove pages from search results and waste crawl budget, while soft 404s confuse search engines about which pages hold real content.
Common problems:
- Internal links pointing to 404 pages after content is deleted
- Soft 404s, where empty or error pages return 200
- Intermittent 5xx errors on heavy templates or under load
- Single page apps returning 200 for routes that do not exist
How to fix it: Restore or redirect removed URLs that still receive links, return a true 404 or 410 for content that is gone, and investigate server logs for the cause of any 5xx responses.
How to verify: Crawl the site and filter by status code. Every URL in the sitemap and main navigation should return 200. Recheck flagged URLs individually with a header checker.
Learn more: Status codes lesson, HTTP status codes and SEO, HTTP 4xx issue, HTTP 5xx issue.
How SiteAuditLint helps: it checks status codes across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
Redirects
What to check:
- Check redirect chains. Redirects resolve in a single hop.
- Check redirect loops. No URL redirects back to itself.
- Check redirect type. Permanent moves use 301 or 308, not 302.
Why it matters: Redirects pass users and ranking signals from an old URL to a new one. Each extra hop adds latency and increases the chance that signals are lost or crawlers give up. Temporary redirects used for permanent moves can keep the old URL indexed.
Common problems:
- Redirect chains of three or more hops left behind by repeated migrations
- Redirect loops that make a URL unreachable
- 302 redirects used for permanent URL changes
- Internal links still pointing at redirecting URLs
How to fix it: Point every redirect directly at its final destination with a 301 or 308, break any loops, and update internal links so they reference the final URL rather than relying on the redirect.
How to verify: Crawl with redirect following enabled and export the redirect chains report. Each redirecting URL should resolve in one hop to a URL returning 200.
Learn more: Redirects lesson, Testing redirects, How to find and fix redirect problems, Redirect chain issue.
How SiteAuditLint helps: it checks redirects across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
Indexability
What to check:
- Check meta robots noindex. Important pages carry no noindex directive.
- Check X-Robots-Tag. HTTP headers do not send noindex or none.
- Check canonical tags. Canonicals are absolute, self-referencing where expected, and resolve to 200.
Why it matters: A page can be crawled but still excluded from search results. Indexability depends on several signals working together: status code, meta robots, the X-Robots-Tag header, canonical tags, and robots.txt. A single conflicting signal is enough to remove a page from Google.
Common problems:
- A noindex left in place after a staging build goes live
- X-Robots-Tag noindex sent by a server or CDN rule nobody remembers
- Canonical tags pointing to a different URL than intended
- Pages blocked in robots.txt, so Google never sees the noindex or canonical
How to fix it: Remove noindex directives from pages that should rank, align canonical tags with the URL you want indexed, and make sure robots.txt does not block indexable content.
How to verify: Check the page source and response headers for every key template, then use Search Console URL Inspection to confirm Google sees the page as indexable.
Learn more: Indexing explained, Indexing tests, Noindex issues and fixes, Noindex issue.
How SiteAuditLint helps: it checks indexability across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
Robots.txt
What to check:
- Check robots.txt availability. /robots.txt returns 200 and parses without errors.
- Check disallow rules. No important directories or resources are blocked.
Why it matters: Robots.txt controls which paths crawlers may request. It is the fastest way to block an entire site by accident. It also governs access for AI crawlers, so it is now part of your AI search visibility strategy as well as your traditional SEO.
Common problems:
- A staging Disallow: / rule deployed to production
- CSS and JavaScript blocked, stopping Google from rendering pages
- Overly broad wildcard patterns blocking important directories
- Missing or outdated sitemap declaration
How to fix it: Keep robots.txt minimal, block only what you truly need to keep out of crawlers, allow rendering resources, and declare your XML sitemap with an absolute URL.
How to verify: Fetch /robots.txt on production, test a list of key URLs against the live rules for Googlebot and each AI user agent, and confirm the file returns 200.
Learn more: Robots.txt lesson, Robots.txt and AI crawlers guide, Blocked by robots.txt issue, Missing robots.txt issue.
How SiteAuditLint helps: it checks robots.txt across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
XML Sitemaps
What to check:
- Check sitemap validity. Sitemap loads, validates and is referenced in robots.txt.
- Check sitemap URLs. Sitemap lists only canonical, indexable, 200 URLs.
Why it matters: An XML sitemap is a list of URLs you want search engines to find and index. It helps discovery of new and deep content and acts as a canonical signal. A sitemap full of redirects, errors, or noindexed URLs weakens trust in that signal.
Common problems:
- Sitemaps containing redirected, 404, or noindexed URLs
- Non canonical URL variants listed instead of the canonical version
- Sitemap not referenced in robots.txt or submitted in Search Console
- Stale sitemaps that are not regenerated on publish
How to fix it: Generate the sitemap automatically from indexable canonical URLs only, keep lastmod accurate, reference it in robots.txt, and submit it in Search Console.
How to verify: Crawl the sitemap URL list on its own. Every entry should return 200, be indexable, and be self canonical.
Learn more: XML sitemaps lesson, XML sitemap errors and fixes, Sitemap non-200 issue, Noindex URL in sitemap issue.
How SiteAuditLint helps: it checks xml sitemaps across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
HTTPS and Security
What to check:
- Check HTTPS. All URLs serve over HTTPS and HTTP redirects to HTTPS.
- Check mixed content. No HTTP assets load on HTTPS pages.
Why it matters: HTTPS is a confirmed ranking signal and a browser requirement for trust. Mixed content and inconsistent protocols create duplicate URLs and security warnings that hurt both users and crawlers.
Common problems:
- HTTP versions that do not redirect to HTTPS
- Mixed content loading images or scripts over HTTP
- Expired or mismatched SSL certificates
- Internal links and canonicals still using http://
How to fix it: Force HTTPS with a single 301 from HTTP, update hardcoded internal URLs, and enable HSTS once everything is stable.
How to verify: Request the HTTP version of key URLs and confirm a single redirect to HTTPS, then crawl for any http:// resources on HTTPS pages.
Learn more: HTTPS pages linking to HTTP, Mixed content issue, Not HTTPS issue, Missing HSTS issue.
How SiteAuditLint helps: it checks https and security across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
Duplicate URLs
What to check:
- Check URL variants. Trailing slash, case, www and parameter variants consolidate.
- Check duplicate content. Near duplicate pages are canonicalized or merged.
Why it matters: Duplicate and near duplicate URLs split ranking signals and make search engines choose a version for you. They often come from technical variants rather than copied content.
Common problems:
- Trailing slash and non slash versions both returning 200
- Uppercase and lowercase URL variants
- Tracking and sort parameters creating indexable copies
- Printer friendly or session ID versions of pages
How to fix it: Pick one URL format, redirect other variants to it, and canonicalize parameter versions that must remain accessible.
How to verify: Crawl and group pages by identical or near identical content hashes and titles, then confirm each group resolves to one indexable URL.
Learn more: Duplicate content SEO, Duplicate content checker, Near duplicate issue, URL parameters issue.
How SiteAuditLint helps: it checks duplicate urls across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
Internal Linking
What to check:
- Check broken internal links. No internal links point to 4xx or 5xx URLs.
- Check orphan pages. Every indexable page has at least one internal link.
Why it matters: Internal links distribute authority, define site architecture, and help crawlers discover content. Broken links waste crawl budget and frustrate users, while orphan pages are almost invisible to search engines.
Common problems:
- Links to deleted pages returning 404
- Links pointing to redirected URLs instead of final destinations
- Orphan pages with no internal links
- Generic anchor text like click here on important links
How to fix it: Fix or remove broken links, update links to point at final URLs, link to orphan pages from relevant hubs, and use descriptive anchor text.
How to verify: Crawl the site and review the broken links, redirecting links, and inlinks reports. Compare sitemap URLs against crawled URLs to find orphans.
Learn more: Internal links lesson, Fix broken internal links, Orphan pages, Internal link analysis.
How SiteAuditLint helps: it checks internal linking across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
JavaScript Rendering
What to check:
- Compare source vs rendered HTML. Critical content, links and tags exist in raw HTML or render reliably.
Why it matters: Google renders JavaScript, but rendering is delayed, resource limited, and not guaranteed. Many AI crawlers do not render JavaScript at all. Content, links, and SEO tags that only appear after scripts run are at risk of being missed.
Common problems:
- Main content injected only on the client
- Links implemented as buttons or onClick handlers
- Titles, canonicals, or meta robots changed by JavaScript
- Single page app routes returning 200 for missing pages
How to fix it: Server render or statically generate critical content and tags, use real anchor links with URLs, and return proper status codes from the server.
How to verify: Compare raw HTML with rendered HTML for each template. Titles, H1s, main content, canonicals, and links should be present in the raw response.
Learn more: JavaScript SEO course, Rendering lesson, JavaScript links lesson, JavaScript SEO guide.
How SiteAuditLint helps: it checks javascript rendering across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
Structured Data
What to check:
- Validate structured data. Schema parses without errors and matches visible content.
Why it matters: Structured data helps search engines and AI systems understand entities on the page and can unlock rich results. Invalid or misleading markup is ignored or can trigger manual actions.
Common problems:
- Syntax errors in JSON-LD
- Required properties missing for the chosen type
- Markup describing content not visible on the page
- Schema removed during a template change
How to fix it: Use JSON-LD, include required and recommended properties, and keep markup consistent with visible content.
How to verify: Validate key templates with the Rich Results Test and Schema Markup Validator, then monitor enhancement reports in Search Console.
Learn more: Schema markup for AI, Invalid schema issue, Missing schema issue.
How SiteAuditLint helps: it checks structured data across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
Images
What to check:
- Check image alt text. Meaningful images have descriptive alt attributes.
- Check broken images. No image URLs return 4xx.
Why it matters: Images influence page speed, accessibility, and image search visibility. Alt text gives context to search engines and screen readers.
Common problems:
- Missing or keyword stuffed alt text
- Oversized images slowing pages
- Broken image URLs
- Images loaded only via CSS backgrounds when they carry meaning
How to fix it: Compress and size images correctly, serve modern formats, write descriptive alt text, and fix broken image sources.
How to verify: Crawl images, filter for missing alt text, 4xx responses, and file sizes above your budget.
Learn more: Images lesson, Image SEO audit, Missing alt text issue.
How SiteAuditLint helps: it checks images across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
International
What to check:
- Check hreflang. Hreflang tags are reciprocal and point to 200 canonical URLs.
Why it matters: Hreflang tells search engines which language or regional version of a page to show each user. Errors cause the wrong locale to rank or tags to be ignored entirely.
Common problems:
- Missing return tags between language pairs
- Invalid language or region codes
- Hreflang pointing to redirected or non canonical URLs
- No x-default fallback
How to fix it: Generate hreflang sets from one source of truth, ensure every pair is reciprocal, use valid ISO codes, and point only at canonical 200 URLs.
How to verify: Crawl all locales and run an hreflang validation report. Every tag should have a return tag and resolve to an indexable URL.
Learn more: URLs lesson, Missing lang attribute issue.
How SiteAuditLint helps: it checks international across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
AI Crawler Accessibility
What to check:
- Check AI crawler access. GPTBot, ClaudeBot, PerplexityBot and similar are allowed or blocked intentionally.
Why it matters: Search engines can only rank what they can discover. See the earlier section on this topic for common problems.
How to verify: Run a full crawl, compare discovered URLs with your sitemap and analytics landing pages, and review the crawl depth report for any important URL deeper than three clicks.
How SiteAuditLint helps: it checks ai crawler accessibility across every crawled URL instead of one page at a time and lists exactly which URLs are affected.
Common mistakes
Checking only the homepage instead of every template
Assuming a 200 status code means a page can be indexed
Forgetting the X-Robots-Tag HTTP header when checking noindex
Testing robots.txt without testing real URLs against it
Assuming the XML sitemap only contains indexable canonical URLs
Ignoring redirect chains left behind by past migrations
Reviewing source HTML without comparing it to rendered HTML
When to run the checklist
- Before launching a new website
- After a redesign or CMS change
- Before and after a website migration
- After a major deployment
- When organic traffic or indexed pages suddenly drop
- As a quarterly technical SEO audit
How to verify fixes
- Save a baselineCrawl the site before making changes so you have a record of every status code, canonical, directive and title.
- Fix by priorityStart with High priority checks and issues that affect templates, since one fix there resolves many URLs. See how to prioritize audit findings.
- Re-crawl the same scopeUse the same start URL, crawl limit and settings so the results are comparable.
- Compare the crawlsConfirm the issue count dropped and that no new problems appeared elsewhere. Audit comparison does this field by field.
- Confirm in Search ConsoleUse URL Inspection and the indexing reports to check that Google sees the change. Our indexing tests lesson covers the process.
SiteAuditLint workflow
From manual checklist to automated checks
Most checks in this list run automatically in a SiteAuditLint crawl. Use audit comparison to diff crawls and scheduled audits to monitor for regressions.