You published the pages, tuned the keywords, and still nothing shows up in search. Often the problem isn’t the content. Google may be unable to crawl a page, may choose not to index it, or may see something different from what visitors see.
Learning how to do a technical SEO audit gives you a repeatable way to find those problems using free tools and a fixed order of checks. This guide covers ten steps, each with a pass criterion, a severity level, and the tool that checks it. The quick answer comes first.
How to Do a Technical SEO Audit: Quick Answer
To do a technical SEO audit, crawl your site, check which pages Google has indexed, review robots.txt and sitemaps, fix status codes and redirects, resolve canonical conflicts, review internal links, test mobile rendering, measure Core Web Vitals, check HTTPS, and validate structured data, in that order.
Definition: Technical SEO audit
A technical SEO audit is a systematic review of a website’s crawlability, indexability, rendering, structure, security, and performance, designed to find the issues that stop search engines from discovering, understanding, and ranking its pages.
The ten steps in order:
Crawl your website to build a URL inventory.
Check which pages Google has indexed in Search Console.
Audit robots.txt and XML sitemaps for access and discovery problems.
Fix status codes, redirects, and broken links.
Resolve canonical and duplicate URL issues.
Review site structure, internal links, and orphan pages.
Test mobile usability and JavaScript rendering.
Measure Core Web Vitals and page speed.
Check HTTPS and website security.
Validate structured data.
The order follows how Google processes a site: it crawls a URL, indexes it, renders it, and then ranks it. A page that cannot be crawled cannot be indexed, and a page that cannot be indexed gains nothing from speed or schema fixes. That is why indexing checks come before performance checks.
What You Need Before You Start: Free Audit Tools
A free technical SEO audit needs Google Search Console, PageSpeed Insights, Lighthouse, Chrome DevTools, a free crawler such as the free version of Screaming Frog SEO Spider, and optionally Ahrefs Webmaster Tools. Together they cover indexing, site-wide status data, rendering, and performance.
Tool | What it checks | Free limits |
Google Search Console | Indexing status, robots.txt report, sitemaps, Core Web Vitals field data, security issues | Free; requires verifying site ownership |
PageSpeed Insights | Core Web Vitals field data (when available) and lab diagnostics | Free; one URL at a time |
Lighthouse | Lab data for performance, accessibility, and SEO basics | Free; built into Chrome DevTools |
Chrome DevTools | Rendered HTML, network requests, mobile emulation | Free; built into Chrome |
Screaming Frog SEO Spider | Status codes, canonicals, titles, headings, crawl depth, broken links | Free version crawls up to 500 URLs, per the vendor’s documentation |
Ahrefs Webmaster Tools | Site audit and backlink data for sites you own | Free for verified sites |
Google Analytics 4 | Landing pages that receive traffic | Free |
When choosing tools, ask two questions. Does the tool use Google’s own data? Does it show page-level detail you can act on?
A crawler shows what could be wrong, while Search Console shows what Google actually sees. One mistake people often make is trusting a crawler report alone. The audit needs both, because a crawler cannot tell you which URLs Google has chosen to index.
Before starting, verify your site in Search Console and confirm GA4 is collecting data. Without verification, the indexing and Core Web Vitals checks later in the audit are not available.
Step 1: Crawl Your Website
A site crawl is an automated scan that follows links from your homepage and records each URL’s status code, title, canonical, indexability, and depth. In an audit, the crawl produces the URL inventory that every later step checks against.
Open your crawler and enter your homepage URL, using the full https:// version.
Add your sitemap if the tool allows it, so pages with no internal links are included.
Run the crawl and wait for it to finish. On large sites, a free crawler may stop at its URL cap.
Export the key columns: URL, status code, indexability, canonical, title, and crawl depth.
Save the export as your baseline. You will re-crawl later to confirm fixes worked.
On a large site, sample by page template instead of by URL count. Check one page each from the homepage, category, blog post, and product templates. One broken template can affect thousands of pages, so a single fix at the template level often resolves them all.
A common mistake is crawling only the homepage and a few links, then treating the result as the whole site. If the crawl hits a limit, note which templates it did not reach.
Step 2: Check Which Pages Google Has Indexed
To check whether pages are indexed, open the Page indexing report in Google Search Console, review the indexed and not-indexed totals, and then run URL Inspection on individual pages. Compare Google’s indexed list against the indexable URLs from your crawl to find gaps.
Status | What it means | Next action |
Crawled – currently not indexed | Google fetched the page but chose not to index it | Review content quality and uniqueness; check for duplicates |
Discovered – currently not indexed | Google knows the URL but has not crawled it yet | Add internal links; confirm it is in the sitemap |
Excluded by ‘noindex’ tag | The page tells Google not to index it | Remove the tag if the page should rank |
Blocked by robots.txt | Google is not allowed to crawl the URL | Edit robots.txt if the page should be crawled |
Duplicate, Google chose a different canonical | Google picked another URL as the main version | Align canonicals, redirects, and internal links |
Page with redirect | The URL redirects elsewhere | Usually fine; make sure internal links point to the final URL |
The most damaging edge case is a noindex tag left on after launch. A staging setting carries into production, and important pages quietly drop out of search while the team keeps publishing.
“Crawled – currently not indexed” is often a content-quality signal rather than a technical bug. Google may judge the page thin, repetitive, or too similar to another page. Fixing it usually means improving the page, not editing code.
To compare lists, export your crawl’s indexable URLs and the indexed URLs from Search Console. Pages in the first list but missing from the second are your investigation queue.
Step 3: Audit Robots.txt and XML Sitemaps
Check that robots.txt does not block important pages or CSS and JavaScript files, and that your XML sitemap lists only canonical, indexable URLs that return a 200 status. Robots.txt controls crawl access, while the sitemap helps search engines discover pages.
Robots.txt
Look for accidental disallows. A Disallow: / copied from a staging site blocks the entire site.
Check for blocked resources. Blocking CSS or JavaScript files can stop Google from rendering pages correctly.
Use the robots.txt report in Search Console to confirm Google can fetch and parse the file.
Keep the file small. According to Google’s documentation, Google processes only the first 500 KiB of a robots.txt file.
XML sitemaps
List only indexable URLs. Remove redirected, noindexed, canonicalized, and error URLs.
Respect the limits. Per Google Search Central documentation, one sitemap file can hold up to 50,000 URLs or 50 MB uncompressed. Larger sites use a sitemap index.
Submit the sitemap in Search Console and check for errors.
Keep lastmod honest. Update it only when page content changes.
A noindex tag and a robots.txt block conflict with each other. Google cannot see a noindex tag on a page it is not allowed to crawl, so the URL may stay in the index. To remove a page from search, allow crawling and use noindex.
Step 4: Fix Status Codes, Redirects, and Broken Links
The HTTP status codes that matter most in a technical SEO audit are 200 (OK), 301 (permanent redirect), 302 (temporary redirect), 404 (not found), 410 (gone), and 5xx (server errors). Each tells search engines how to treat a URL, and 5xx errors are the most urgent.
Code | Meaning | Action |
200 | Page loads normally | No action; confirm it is the intended URL |
301 | Permanent redirect | Fine when pointing to the correct final URL |
302 | Temporary redirect | Change to 301 if the move is permanent |
404 | Page not found | Fix only if the page has links, traffic, or a replacement |
410 | Permanently removed | Use for pages you deliberately deleted |
5xx | Server error | Fix immediately; check hosting and server logs |
Redirect chains happen when one URL redirects to another that redirects again. Loops send crawlers in circles. Per Google’s documentation, Googlebot follows up to 10 redirect hops, but shorter chains are faster and safer. Aim for one hop from the old URL to the final one.
A soft 404 is a page that shows “not found” content but returns a 200 status. Search Console reports these, and the fix is to return a real 404 or restore the content.
Update internal links to point to the final URL instead of relying on redirects. Redirects are a safety net, not a substitute for correct links.
Not every 404 needs fixing. According to Google’s guidance, 404 errors on URLs that never existed or have no value do not harm the rest of your site. Prioritize broken URLs that have backlinks, internal links, or traffic.
Step 5: Resolve Canonical and Duplicate URL Issues
A canonical tag is an HTML element that tells search engines which URL is the preferred version when the same or very similar content exists at several addresses. It consolidates ranking signals onto one URL and reduces duplicate indexing.
Common causes of duplicate URLs:
www vs non-www: www.example.com and example.com both load.
HTTP vs HTTPS: both versions return a page.
Trailing slashes: /shoes and /shoes/ serve the same content.
URL parameters: filters, sorting, and tracking codes create new URLs.
A mini example: if example.com/shoes?color=red shows a filtered view of the main shoes page, its canonical tag should point to example.com/shoes. The main page should carry a self-referencing canonical that points to itself.
Google treats canonicals as a hint, not a command. When signals conflict, such as a canonical pointing one way, a redirect another, and the sitemap listing a third URL, Google may choose a different URL than you intended. Search Console reports this as “Duplicate, Google chose different canonical than user.”
Teams often run into this after a migration, when old canonicals are copied across. The fix is consistency: the canonical, internal links, redirects, and sitemap should all name the same URL.
Step 6: Review Site Structure, Internal Links, and Orphan Pages
An orphan page is a page with no internal links pointing to it, which makes it hard for search engines to discover and weakens its authority. To find one, compare the URLs in your sitemap and GA4 landing pages against the URLs your crawler reached through links.
Check crawl depth. Pages many clicks from the homepage are typically discovered and revisited less reliably. Google publishes no fixed depth limit, so use depth as a relative signal and look for important pages buried deeper than they should be.
Find orphan pages. Pages in the sitemap or in GA4 landing page reports that your crawl did not reach through links are orphan candidates.
Check hub and cluster links. Each main topic page should link to its supporting articles, and those articles should link back.
Review anchor text. Descriptive anchors tell search engines what the target page is about. Anchors like “click here” carry no topic signal.
Internal links serve crawling and relevance at the same time. They create the paths Googlebot follows, and their anchor text and context signal topical relationships. A page can be indexed with weak internal links, but it usually performs better with them.
A common issue is adding new pages to the sitemap without linking to them from anywhere. The sitemap helps discovery, but internal links tell Google the page matters.
Step 7: Test Mobile Usability and JavaScript Rendering
To check whether Google can render your JavaScript content, run a live test in Search Console’s URL Inspection tool, open “View tested page,” and compare the rendered HTML and screenshot with what visitors see. Content missing from the rendered HTML may not be indexed.
Confirm mobile parity. Google predominantly uses the mobile version of a page for indexing. Text, links, structured data, and images present on desktop should also appear on mobile.
Compare raw and rendered HTML. In Chrome, view the page source (raw HTML), then inspect the page in DevTools (rendered HTML). Important text and links should appear in the rendered version.
Run the URL Inspection live test. Open “View tested page” to see the rendered HTML and a screenshot of what Googlebot received.
Check blocked resources. If the screenshot looks broken, a blocked script or stylesheet may be the cause.
Test with JavaScript disabled in DevTools to learn how much content depends on it.
Raw source can look nearly empty while the rendered page is fine, and the reverse is also possible. Content that appears only after a user clicks, scrolls, or logs in may never be seen by Googlebot.
Google has retired its standalone Mobile-Friendly Test and the Mobile Usability report. Use Lighthouse, DevTools device emulation, and URL Inspection instead.
Step 8: Measure Core Web Vitals and Page Speed
Good Core Web Vitals scores, per Google’s web.dev documentation, are a Largest Contentful Paint (LCP) of 2.5 seconds or less, an Interaction to Next Paint (INP) of 200 milliseconds or less, and a Cumulative Layout Shift (CLS) of 0.1 or less, each measured at the 75th percentile of page loads.
Metric | “Good” threshold | Common causes of poor scores | Typical fix |
LCP (loading) | ≤ 2.5 seconds | Slow server response, oversized hero images, render-blocking scripts | Compress images, use caching or a CDN, defer non-critical scripts |
INP (responsiveness) | ≤ 200 ms | Heavy JavaScript, long tasks blocking the main thread | Reduce and split scripts, remove unused plugins |
CLS (visual stability) | ≤ 0.1 | Images without dimensions, late-loading ads, font swaps | Set width and height on media, reserve space for embeds |
Field data and lab data measure different things. Field data comes from real users and appears in the Search Console Core Web Vitals report and at the top of PageSpeed Insights. Lab data comes from a simulated test, such as Lighthouse. The two can disagree, and low-traffic sites may have no field data at all. In that case, use lab data to find fixes and re-check field data later.
Audiences in markets like Bangladesh often browse mainly on mobile devices and slower connections, so speed problems that look minor on a fast office network can matter more. For international audiences, hosting location and a CDN can also affect server response and LCP.
One mistake people often make is chasing a perfect 100 Lighthouse score. The goal is passing the three thresholds for real users, not maximizing a lab number.
Step 9: Check HTTPS and Website Security
HTTPS issues that affect SEO include an expired or invalid SSL certificate, HTTP pages that do not redirect to HTTPS, mixed content (insecure resources on secure pages), and security warnings reported in Search Console. Each can trigger browser warnings or split ranking signals between URL versions.
Certificate validity: the certificate is current and covers the exact domain, including www if used. Pass: the browser shows no warning.
Redirects: every HTTP URL redirects with a 301 to its HTTPS equivalent. Pass: no HTTP page returns a 200.
Mixed content: images, scripts, or stylesheets load over http:// on an HTTPS page. Pass: the DevTools console shows no mixed-content warnings.
Search Console security issues: check for hacked content or malware flags. Pass: no issues listed.
Certificate renewals that lapse silently are a common cause of sudden traffic drops. Browsers show a full-page warning, and most visitors leave. Set a calendar reminder or enable auto-renewal, and confirm it actually works.
Step 10: Validate Structured Data
To check structured data for errors, paste the URL into Google’s Rich Results Test to see which rich result types are eligible, then use the Schema Markup Validator to check general Schema.org syntax. Fix errors first and review warnings by importance.
Test key templates: one article, one product, and the homepage are usually enough to catch template-wide problems.
Match visible content. Markup should describe what users can actually see on the page. Google’s structured data guidelines warn against marking up content that isn’t visible.
Choose types that fit. Article, Organization, BreadcrumbList, Product, and LocalBusiness are the most commonly useful.
Check Search Console enhancement reports for errors across the whole site.
Valid markup does not guarantee rich results. Google decides whether to show them based on eligibility, quality, and the query. Treat schema as a way to clarify meaning, not a switch that forces a result.
How to Prioritize Technical SEO Issues
Fix issues in this order: first those that block indexing, then those that waste crawling or split ranking signals, then those that affect page experience, and last cosmetic warnings. Impact on whether pages can appear in search should decide the order, not the number of warnings.
Severity | Examples | When to fix |
Critical | Noindex on important pages, robots.txt blocks, 5xx errors, expired certificate | Immediately |
High | Redirect chains and loops, canonical conflicts, orphan pages with value | Within the current work cycle |
Medium | Core Web Vitals failures, mixed content, missing structured data | Planned and scheduled |
Low | Cosmetic crawler warnings, minor title length notes | Only when convenient |
For a quick impact-versus-effort check, sort fixes into four groups: high impact and low effort (do first, such as removing an accidental noindex), high impact and high effort (plan, such as a speed overhaul), low impact and low effort (batch later), and low impact and high effort (usually skip).
Beginners can follow the severity order and stop there. Advanced teams can also weight by traffic and revenue, fixing template-level issues on pages that already earn impressions.
Not everything needs fixing. A handful of old 404s with no links or traffic can be left alone, and chasing every crawler warning is a common way to burn time without improving visibility.
Free Technical SEO Audit Checklist
A technical SEO audit checklist covers crawl access, indexing, status codes, canonicals, internal links, rendering, Core Web Vitals, HTTPS, and structured data. Each check needs a tool, a pass criterion, and a severity level so you know when it is complete and how urgent a failure is.
Check | Tool | Pass criterion | Severity | |
1. | Important pages indexable | Search Console | Page indexing report shows them indexed | Critical |
2. | No accidental noindex | Crawler, URL Inspection | No noindex on pages meant to rank | Critical |
3. | Robots.txt allows key paths | robots.txt report | No blocks on important pages or CSS/JS | Critical |
4. | No 5xx errors | Crawler, Search Console | Zero server errors on key pages | Critical |
5. | Sitemap is clean | Search Console | Only canonical, indexable 200 URLs | High |
6. | Redirect chains fixed | Crawler | One hop to final URL | High |
7. | Canonicals consistent | Crawler | Canonical, links, and sitemap agree | High |
8. | No valuable orphan pages | Crawler, GA4 | Every key page has internal links | High |
9. | Content visible when rendered | URL Inspection | Main text and links in rendered HTML | High |
10. | Mobile parity | DevTools, Lighthouse | Mobile shows the same main content | High |
11. | LCP, INP, CLS pass | PageSpeed Insights | LCP ≤ 2.5s, INP ≤ 200ms, CLS ≤ 0.1 | Medium |
12. | HTTPS valid, no mixed content | Browser, DevTools | No warnings; all HTTP redirects | Medium |
13. | Structured data valid | Rich Results Test | No errors; matches visible content | Medium |
14. | Cosmetic crawler warnings reviewed | Crawler | Reviewed and logged | Low |
Keep a simple findings log with five columns: URL, issue, severity, owner, and status. It turns the audit from a one-time report into a work list you can track and re-check.
Common Technical SEO Audit Mistakes
The most common technical SEO audit mistakes are checking page speed before indexing, treating every crawler warning as an error, ignoring Search Console data, blocking resources in robots.txt, auditing only the homepage, and never re-crawling after fixes. Most of them come from skipping the order of dependencies.
Mistake | Why it hurts | Fix |
Auditing speed before indexing | Fast pages that aren’t indexed still get no traffic | Confirm indexing first |
Treating every crawler warning as an error | Wastes time on low-impact items | Score each finding by severity |
Ignoring Search Console | Crawlers can’t show what Google chose to index | Use both data sources |
Blocking CSS or JavaScript | Google may render pages incorrectly | Allow resources needed for rendering |
Auditing only the homepage | Template-level problems stay hidden | Sample every page template |
Trusting raw HTML only | JavaScript-added content may be missed or misjudged | Compare raw and rendered HTML |
Fixing 404s that don’t matter | Effort goes to URLs with no value | Fix only those with links or traffic |
Never re-auditing | Fixes can fail or break something else | Re-crawl and re-check Search Console |
The scenario to watch for is polishing pages Google cannot see. A team rewrites titles and content on pages that are noindexed, blocked, or not indexed, and nothing improves. Re-crawling after each batch of fixes confirms the change worked and caught nothing new.
When to Do It Yourself and When to Get Help
A free audit is usually enough for small sites with no indexing errors. Hire a professional for technical SEO when pages stay unindexed after basic fixes, when a migration or redesign is planned, or when speed and rendering problems trace back to code, hosting, or a JavaScript framework you cannot change yourself.
Do it yourself when:
The site is small, and Search Console shows no major indexing errors.
Problems are limited to titles, links, sitemaps, and settings you can edit in your CMS.
You can re-run the checklist after each change.
Bring in a specialist when:
The site is large, uses a JavaScript framework, or relies on custom code.
Traffic dropped after a migration, redesign, or platform change.
Indexing or Core Web Vitals problems persist after the basic fixes.
Framecipher offers technical SEO services for teams that want a developer-level review and implementation. Sites targeting the US, UK, Canada, and Australia together may also need hreflang and regional setup reviewed, which is easy to get wrong without experience.
Conclusion
A technical SEO audit works best as an ordered process rather than a long list of checks. Start with what Google can crawl and index, move to rendering and speed, and score each finding by how much it affects visibility.
Three practical takeaways:
Audit in dependency order: indexing first, then rendering, then speed and structured data.
Score every finding by severity so you fix the few issues that matter and skip the noise.
Re-crawl and re-check Search Console after fixes to confirm they worked.
Your next step: run the free checklist on your ten most important pages and log each finding by severity. If critical issues remain after the basic fixes, a professional audit from Framecipher can help you find the cause and plan the repair.

