Technical SEO Checklist: 40 Checks Before You Blame the Content
A page can be well written and still underperform because Google cannot access it properly, indexes a different version, renders incomplete content, or barely encounters it through the site's internal architecture.
That is why rewriting content should not always be the first response to weak rankings.
A useful technical SEO checklist establishes whether the infrastructure is constraining the page before the diagnosis moves to search intent, content quality or authority. Google's own minimum technical requirements are simple: Googlebot must not be blocked, the page must work with a successful HTTP response, and the page must contain indexable content. Meeting those requirements does not guarantee indexing or rankings, but failing them can make everything else irrelevant.
At SEO Team Toronto, we find it more useful to audit technical SEO in dependency order:
Access → Index → Render → Consolidate → Connect → Perform → Enhance → Verify
The 40 checks below follow that logic. They are not 40 equally important warnings. A noindex tag on a revenue-driving page is not comparable to a minor performance improvement, and a crawler warning is not automatically a problem worth assigning to development.
Before You Start: Audit Evidence, Not Tool Warnings
A technical SEO audit should produce decisions, not a larger spreadsheet.
Before working through the checklist, identify the pages and templates that matter most to the business. That normally means core service pages, product or category templates, high-performing informational pages, key local landing pages, and URLs tied directly to leads or revenue.
For every material issue, record five things:
- Affected URL or template
- Evidence
- Likely impact
- Owner
- Pass condition after the fix
Where the issue is important, validate it with more than one source when possible. A crawler plus Search Console, a server response plus URL Inspection, or crawl data plus server logs gives you more confidence than a single tool flag.
Consider a simplified example. A crawler reports 8,000 canonical problems on an ecommerce site. A URL-by-URL cleanup would be inefficient if all 8,000 URLs inherit the same incorrect canonical rule from one category template.
The useful finding is not “8,000 errors.” It is “one template-level rule is generating 8,000 incorrect signals.”
That distinction is central to good technical SEO work.
Checks 1–5: Can Search Engines Discover and Access the Right Pages?
These are the first checks because there is little value in debating copy quality if important URLs cannot be crawled or are explicitly excluded from indexing.
1. Check robots.txt for blocked priority URLs
Verify that important pages, directories and resources are not unintentionally disallowed. A robots.txt rule prevents crawling, but it is not the correct tool for reliably removing a URL from Google's index.
Pass condition: Googlebot can request every page that is intended to compete in organic search.
2. Check for accidental noindex directives
Review both HTML meta robots tags and HTTP X-Robots-Tag headers. Staging directives, CMS settings and template rules can quietly apply noindex across far more pages than intended.
Google specifically distinguishes this from robots.txt: if you want Google to process a noindex, the crawler must be able to access the page.
Pass condition: every priority URL intended for search is index-eligible.
3. Confirm important pages use crawlable links
Priority pages should be reachable through standard crawlable links rather than depending only on JavaScript actions, internal search forms or user interactions.
A URL existing in a CMS does not make it well discovered. Search engines need practical paths to find it.
Pass condition: important URLs can be reached through normal site navigation or contextual internal links.
4. Validate XML sitemap availability
Confirm that XML sitemaps resolve successfully, use the correct protocol and hostname, and contain valid URLs. Large sites should separate sitemaps logically where that makes monitoring easier.
A sitemap is a discovery aid, not an indexing command.
Pass condition: sitemap files load reliably and represent the intended indexable URL inventory.
5. Remove unsuitable URLs from XML sitemaps
Do not routinely submit redirected, canonicalized-away, blocked, noindex, error or unwanted parameter URLs.
The sitemap should reinforce your preferred URL set rather than contradict other technical signals.
Pass condition: submitted URLs are preferred pages that you genuinely want search engines to consider for indexing.
Checks 6–10: Are HTTP Responses and Redirects Telling the Truth?
HTTP responses tell crawlers whether content exists, moved, failed or disappeared. Incorrect status codes can turn a content diagnosis into the wrong conversation entirely.
Google documents how different HTTP status codes affect crawling, including the treatment of successful responses, redirects, 4xx responses, 429 overload signals and server errors.
6. Confirm priority URLs return a successful response
Pages intended for indexing should return a clean successful response and the expected content.
A visually functioning page can still return an unexpected status through a proxy, CDN, application framework or server configuration.
Pass condition: priority URLs consistently return a valid success status with the intended page.
7. Return real error codes for removed pages
If a page is genuinely gone and has no appropriate replacement, return 404 or 410 rather than a 200 page saying “not found.”
A 200 response with error-like or empty content can be treated as a soft 404.
Pass condition: deleted pages communicate deletion correctly.
8. Check for repeated server and throttling errors
Review 5xx and 429 patterns on important pages and templates. Occasional incidents happen, but persistent server errors can reduce crawling and make content unavailable when it matters.
Pass condition: priority sections are served reliably to users and crawlers.
9. Remove unnecessary redirect chains and loops
A redirect from A to B to C should usually be simplified so A points directly to the final destination C.
Chains add requests, slow navigation and make migrations harder to validate. Loops prevent the destination from loading altogether.
Pass condition: internal and legacy redirects reach their correct final destinations directly wherever practical.
10. Redirect old URLs only to relevant replacements
When a page moves, redirect it to the closest equivalent page, not automatically to the homepage or a broad category.
This is particularly important during migration and replatforming SEO, where poor redirect mapping can make a ranking loss look like a content-quality problem.
Pass condition: valuable legacy URLs resolve to genuinely equivalent destinations.
Checks 11–15: Is Google Indexing the Version You Actually Want?
Duplicate URLs are common. The question is whether your technical signals make the preferred version clear.
Google describes canonicalization as selecting a representative URL from duplicate or highly similar pages. A declared canonical is an important signal, but Google may choose another URL when its systems find conflicting evidence. See Google's canonicalization documentation.
11. Validate canonical tags on priority pages
Each indexable page should generally point to the intended preferred version.
Check the raw HTML, not just what a browser extension displays after scripts run.
Pass condition: canonical tags consistently identify the intended representative URL.
12. Make sure canonicals point to valid destinations
Avoid canonicals pointing to redirects, error pages, blocked URLs or pages carrying noindex.
Contradictory signals make consolidation less predictable.
Pass condition: canonical targets are accessible, indexable and appropriate representatives.
13. Compare declared and Google-selected canonicals
Use Search Console URL Inspection on representative high-value URLs.
If Google regularly selects a different canonical, investigate whether redirects, internal links, sitemap inclusion, duplicate content or inconsistent tags support Google's alternative more strongly than yours.
Pass condition: Google-selected canonicals align with business intent on important samples.
14. Control duplicate URL variants consistently
Test HTTP and HTTPS, www and non-www versions, trailing slashes, case variations where relevant, tracking parameters, print views, filters and other duplicate-producing patterns.
Do not rely on one signal while internal links and redirects repeatedly point somewhere else.
Pass condition: duplicate systems consistently consolidate toward one preferred URL pattern.
15. Review unexpected indexing exclusions
Search Console exclusions are not automatically errors. Many are correct.
Focus on pages you expected to be indexed but find under unexpected states such as duplicate selection, discovered but not indexed, crawled but not indexed, soft 404 or redirect-related exclusions.
Pass condition: important URLs have an indexing state consistent with their intended role.
Checks 16–20: Can Google Render the Page Correctly?
JavaScript is not inherently bad for SEO. The real question is whether the rendered result preserves the information and signals needed for search.
Google describes JavaScript processing in three broad phases: crawling, rendering and indexing. Its JavaScript SEO documentation is therefore a better reference point than simply asking whether “Google can run JavaScript.”
16. Confirm critical content appears after rendering
Compare the server response with the rendered page on important templates.
Product details, service copy, pricing context, headings and other essential information should not disappear because a script fails or requires an interaction that a crawler does not perform.
Pass condition: critical content is present in the rendered page that Google can process.
17. Confirm important links survive rendering
Navigation and contextual links should lead to real crawlable URLs after the page renders.
Buttons that only fire JavaScript events are not equivalent to dependable HTML links.
Pass condition: search-critical links remain discoverable and functional.
18. Check that required JavaScript and CSS resources are accessible
Blocking a script or stylesheet that is essential to rendering can result in Google seeing a materially different page from users.
Review robots directives, CDN rules, authentication and resource failures.
Pass condition: resources needed to understand the page are consistently retrievable.
19. Validate client-side routes and single-page applications
Every indexable view should have a stable URL and return appropriate content when requested directly.
Do not assume that because a user can click through an application interface, a crawler receives an equivalent page state.
Pass condition: important routes work as standalone URLs rather than existing only inside a session.
20. Check for signals that change during rendering
Compare canonical tags, robots directives, titles and other critical metadata between initial HTML and the rendered DOM.
Conflicting initial and rendered signals can make behaviour harder to predict.
Pass condition: search-critical signals remain stable throughout rendering.
Checks 21–25: Is Site Architecture Helping or Hiding Priority Pages?
Indexable does not necessarily mean prominent.
A page buried deep in a weakly connected architecture can be technically valid while receiving little internal support.
21. Review crawl paths to priority pages
Trace how users and crawlers reach important pages from the homepage and major hubs.
Click depth is a diagnostic measure, not a universal ranking formula. The business question is whether valuable pages are reasonably easy to discover.
Pass condition: priority pages have clear, logical crawl paths.
22. Find orphan pages that should not be orphaned
Compare crawler data with XML sitemaps, Search Console, analytics and CMS exports.
A valuable page found in a sitemap but receiving no internal links deserves investigation.
Pass condition: pages worth ranking participate in the site's internal architecture.
23. Make internal links point directly to canonical URLs
Internal links should not repeatedly pass through redirects or point at URLs that canonicalize elsewhere.
Sitewide inconsistency makes crawling less efficient and weakens the clarity of your preferred structure.
Pass condition: internal linking supports final canonical destinations.
24. Check navigation and breadcrumb hierarchy
Navigation should reflect the way the business actually organizes topics, services, categories and products.
Breadcrumbs can reinforce that hierarchy for users and crawlers, especially on larger sites.
Pass condition: navigation and breadcrumbs support a coherent architecture rather than creating conflicting paths.
25. Evaluate internal-link prominence by business importance
Do not distribute internal links purely by page count.
Core category, service and commercial pages should receive meaningful support from related pages where the relationship is useful to the reader.
Pass condition: important templates receive enough contextual and navigational support to match their role.
Checks 26–30: Are URL Systems Creating Crawl Traps or Index Bloat?

Large inventories can generate thousands or millions of URLs that offer little distinct search value.
This is especially common with ecommerce filters, sorting controls, internal search, calendars, session identifiers and automatically generated combinations.
26. Audit faceted navigation
Review filters for size, colour, price, location, brand, features and other attributes.
Decide which filtered combinations deserve indexable landing pages and which should remain functional for users without becoming a large search inventory.
Pass condition: useful facets are intentionally handled and low-value combinations do not expand without control.
27. Control parameter and session-based URLs
Sorting parameters, campaign IDs, session identifiers and tracking values can create many URLs for essentially the same content.
Review how these URLs are discovered, linked, canonicalized and indexed.
Pass condition: parameters do not create unnecessary duplicate indexable inventory.
28. Review internal search-result pages
Internal site search can produce near-infinite combinations of low-value URLs.
Do not assume every query generated by your own search box should become a Google landing page.
Pass condition: internal search URLs are handled intentionally rather than indexed by accident.
29. Make infinite scroll crawlable where necessary
If users can reach products or articles only by continually scrolling, ensure crawlers can still discover the underlying content through stable URLs or paginated paths.
The visual interface and crawl architecture do not have to be identical, but the content inventory should remain discoverable.
Pass condition: important items are reachable without requiring endless user interaction.
30. Decide whether crawl-budget optimization is actually necessary
Not every website has a crawl-budget problem.
Google's current crawl-budget guidance says the advanced guidance is aimed primarily at very large sites, rapidly changing sites, and sites with a substantial number of URLs sitting in “Discovered, currently not indexed.” Smaller sites whose new pages are crawled promptly usually do not need to make crawl-budget optimization a major project.
For complex marketplaces, publishers and large ecommerce properties, this is often an enterprise SEO concern.
Pass condition: crawl-budget work is tied to observed scale and crawl behaviour, not a generic audit score.
Checks 31–35: Does the Site Perform Well for Real Users?
Performance matters, but it should be diagnosed proportionally.
A site with accidental noindex tags does not need a Lighthouse score of 100 before the indexing blocker is addressed.
Google's Core Web Vitals guidance recommends good real-world performance and identifies three current metrics: Largest Contentful Paint, Interaction to Next Paint and Cumulative Layout Shift.
31. Check Largest Contentful Paint
LCP measures loading performance.
Google's good threshold is 2.5 seconds or less. Look for patterns across real user data and templates rather than treating one lab run as the whole diagnosis.
Pass condition: important templates consistently deliver acceptable loading performance for real users.
32. Check Interaction to Next Paint
INP measures responsiveness after user interaction.
Google's good threshold is under 200 milliseconds.
Pass condition: key pages respond promptly enough that interactions do not feel delayed or broken.
33. Check Cumulative Layout Shift
CLS measures unexpected visual movement.
Google's good threshold is below 0.1. Common causes include images without dimensions, late-loading UI elements, advertising slots and fonts.
Pass condition: important templates remain visually stable while loading.
34. Review server response and resource delivery
Performance problems do not always live in front-end code.
Slow application responses, overloaded infrastructure, oversized assets, unnecessary third-party scripts and poor caching can all contribute.
Pass condition: the server and resource stack can deliver priority pages reliably under normal demand.
35. Compare mobile and desktop functionality
Important copy, navigation, product information, structured elements and calls to action should remain available on mobile.
Do not optimize the desktop experience while leaving the mobile version incomplete or script-heavy.
Pass condition: mobile users receive the essential content and functionality needed to understand and use the page.
Checks 36–40: Validate Structured Data, International Signals, Security and Crawl Reality
The final group deals with implementation details that matter greatly on the right site but should not be presented as universal ranking fixes.
36. Confirm HTTPS is consistent
Important pages and resources should load securely without mixed-content dependencies or competing HTTP versions.
Redirect HTTP URLs consistently and make sure internal links, canonicals and sitemaps use the secure preferred version.
Pass condition: the site has one stable HTTPS URL system.
37. Validate structured data against visible content
Structured data should describe what the user can actually see on the page and match Google's requirements for the feature being targeted.
Google's structured data guidelines are explicit that valid markup creates eligibility for certain rich-result treatments, but does not guarantee that a rich result will appear. A structured-data manual action can remove rich-result eligibility without preventing the underlying page from appearing as a standard web result.
Pass condition: markup is valid, relevant and consistent with visible content.
38. Audit hreflang only where international targeting exists
A Canadian website does not need hreflang merely because it operates in Canada.
Where equivalent pages target different languages or regions, however, annotations should use valid codes, reciprocal references and appropriate canonicals.
Pass condition: international signals exist only where needed and point consistently to intended alternatives.
39. Check real crawler behaviour when site scale justifies it
Crawl Stats and server logs can show whether Googlebot is actually requesting the URLs and templates you expect.
This is particularly useful when a large site has substantial URL inventory, crawling anomalies or a disconnect between crawler simulations and real bot behaviour.
Pass condition: observed crawler activity supports the site's technical priorities.
40. Validate the integrity of critical HTML and page responses
Inspect representative templates for malformed output, truncated responses, missing head elements and critical signals that depend on unstable scripts.
Important canonicals, robots directives, links and primary content should be delivered predictably rather than surviving only when every browser-side dependency works perfectly.
Pass condition: Google receives a complete, coherent page containing the technical signals and content required to evaluate it.
How to Prioritize Technical SEO Findings
Completing all 40 checks does not mean fixing all 40 categories at once.
Use this four-level framework.
Blocker
A blocker prevents an important URL from being accessed, rendered, consolidated or indexed correctly.
Examples:
- Accidental noindex
- Broken canonical rules
- Important templates returning errors
- Robots.txt blocking critical areas
- JavaScript preventing core content from rendering
Action: investigate and fix first.
Multiplier
A multiplier affects an entire valuable template, directory or system.
Examples:
- Incorrect canonicals across every product category
- A navigation rule orphaning hundreds of service-location pages
- A faceted-navigation system creating excessive duplicate URLs
- A redirect pattern applied across a migrated directory
One template-level fix may resolve thousands of URL-level symptoms.
Action: prioritize according to business value and affected scale.
Improvement
An improvement makes a technically functioning experience better.
Examples:
- Reducing an already acceptable page-load delay
- Cleaning a minor redirect chain
- Improving non-critical structured data
- Simplifying low-impact HTML
Action: compare expected benefit with engineering effort.
Noise
Noise is a warning with no demonstrated impact on users, crawling, indexing, consolidation or search visibility.
SEO tools necessarily use rules and thresholds. Your website does not need to satisfy every warning simply because the interface colours it red.
Action: document it, validate it, and leave it alone when there is no meaningful problem.
Use Impact, Scale, Confidence and Effort
A practical prioritization model is:
Impact × Scale × Confidence ÷ Effort
This does not need a fake score such as 8.73.
High, medium and low ratings are often sufficient:
- Impact: how important is the affected search outcome?
- Scale: one low-value URL or an important template?
- Confidence: do we have evidence that the issue is real?
- Effort: what does implementation and QA require?
A developer-ready recommendation should then include the problem, affected pattern, evidence, desired behaviour and acceptance criteria.
Post-Fix QA Checklist
Technical SEO work is not finished when a ticket is marked “done.”
After deployment:
- Re-crawl affected URLs and templates.
- Check live HTTP responses.
- Inspect rendered output where JavaScript is involved.
- Confirm canonical and robots directives.
- Recheck representative URLs in Search Console.
- Validate internal links and redirects.
- Test structured data where it changed.
- Monitor logs, indexing and performance for regressions.
- Confirm the fix solved the root cause rather than only one example URL.
Technical SEO should remove technical uncertainty. It should not become an endless reason to delay improving the page users actually see.
If you need a technical audit that separates blockers, systemic problems and tool noise, SEO Team Toronto's technical SEO services focus on diagnosis, developer-ready recommendations and post-release validation.



