Phase 2 · ExecutionModule 7 of 15

Technical SEO

Technical SEO has the longest checklists in the industry and the shortest list of things that reliably matter. This module is the short list, in the order I would do it.

What this actually costs you

Hours to learn
12
Hours / month
2 to 3
Tools
$0 to $139/mo
Difficulty
High

What this looks like when it is done badly. Someone reads a 200-point technical checklist, spends three weekends on schema, image compression and heading hierarchy, and never checks robots.txt. The whole time, a Disallow line shipped from staging eighteen months ago is keeping half the site out of the index.

Hours and tool costs are RedSEO’s own estimates from client work and from teaching this material, not industry survey data. They assume a business owner doing the work themselves on a site under about 50 pages.

Technical SEO has the longest checklists in the industry. It also has the shortest list of things that reliably change what ranks, and the gap between those two facts is where most DIY effort disappears.

This module is the short list. Four things account for nearly every technical problem I have been called in to diagnose, and they are all free to check.

robots.txt does not do what most people think

Start here, because the misunderstanding is common and expensive. robots.txt controls crawling, not indexing. Google states it directly: it “is not a mechanism for keeping a web page out of Google,” and “a page that’s disallowed in robots.txt can still be indexed if linked to from other sites.”

When that happens you get the worst of both. The URL appears in results, with no description, because Google was not allowed to crawl it and read one. To actually keep a page out, Google says to “block indexing with noindex or password-protect the page.”

And the corollary that catches people: a page carrying noindex that is also blocked in robots.txt will never be de-indexed, because Google cannot crawl it to see thenoindex. The two directives cancel each other out. If you want something gone, allow the crawl and let Google read the instruction.

Canonicals are a hint, not a command

Canonical tags tell Google which version of similar pages you consider the real one. They are advisory. Google’s documentation describes rel="canonical" as “a strong signal that the specified URL should become canonical” and notes that if you do not specify one, “Google will identify which version of the URL is objectively the best version to show to users in Search.”

Which explains the “Duplicate, Google chose different canonical than user” status in Search Console. That is not a bug. It is Google disagreeing with you, and the useful response is to work out why the two pages look the same to it rather than to re-issue the same instruction louder.

Worth saying plainly, because it causes real anxiety: there is no duplicate content penalty. Google’s canonicalization documentation does not mention one. What happens is consolidation, not punishment. Two near-identical pages do not get you fined, they get you one page ranking instead of two, which is a dilution problem and an architecture problem.

Have someone else look at the indexing problem

Redirects: permanent means something specific

Redirects are the highest-risk thing in this module, because a mistake is silent and permanent-ish. Google’s redirect documentation draws the distinction cleanly. A permanent redirect means “the indexing pipeline uses the redirect as a signal that the redirect target should be canonical,” and Google will “show the new redirect target in search results.” A temporary redirect “doesn’t use the redirect as a signal” and Google keeps showing the source page.

So a 302 on a permanent move tells Google to keep the old URL, which is the opposite of what you meant. Use 301 when the move is permanent, and check the status code rather than trusting the plugin.

Two habits worth having. Redirect to the closest equivalent page, never in bulk to the homepage, because a batch of unrelated URLs pointing at your homepage reads as a soft 404 and you lose the signal without transferring it. And collapse chains: if A goes to B goes to C, point A at C.

The JavaScript problem

If your site renders content in the browser rather than on the server, everything above can be correct and the page can still be effectively empty to a crawler. Google does render JavaScript, but it is a separate, later, less reliable stage than crawling the HTML.

There is a specific version of this worth knowing about, because it is invisible from the front end: Google can only follow a link if it “is an <a> HTML element with an href attribute.” A navigation built from click handlers works perfectly for every human visitor and does not exist as a path through your site.

The check is thirty seconds with the simulator below. The fix, if there is a problem, is a development change, and that is the third item in the cannot-DIY list.

What I would do in your position

One afternoon, four checks, in this order. Fetch robots.txt and read it. Search your source for noindex. Inspect three money pages in Search Console. Confirm one version of your domain redirects to the other.

If all four come back clean, you almost certainly do not have a technical problem, and the reason things are not ranking is content or links, which are module 6 and module 11. That is a genuinely useful thing to rule out, and most people never do because they are three weekends into a 200-point checklist instead.

Check your own site

Nine tools, and the order matters. Start with the Googlebot simulator and the robots.txt tester, because those two answer the question everything else depends on.

See your site the way Googlebot does

The first check, and the one that most often finds something. Enter a URL and see what a crawler actually receives rather than what your browser renders.

Opens the simulator on its own page.

Open the Googlebot Simulator

The rest of the technical set

All free, all no signup. Work down them in this order.

The technical checks that actually matter

In order. Each one is a yes-or-no question with a specific place to look, and the first three account for almost every technical problem I have been called in for.

  1. Confirm your important pages are indexed

    URL Inspection in Search Console, one page at a time, for the pages that make money. Everything else in this module is downstream of the answer to this question.

  2. Check nothing important is blocked in robots.txt

    Fetch yourdomain.com/robots.txt and read it. A stray Disallow shipped from staging is the single most expensive two-line file in SEO, and it is invisible from the front end.

  3. Check nothing important carries a noindex

    View source and search for "noindex". CMS platforms and plugins add these, sometimes automatically to whole page types like tags or archives, occasionally to things you wanted indexed.

  4. Check your canonical tags point where you think

    Every page should either self-canonicalise or point deliberately at another URL. A canonical pointing at the homepage across a whole template is a common and quiet way to remove a section from search.

  5. Make sure one version of your site is the real one

    http and https, www and non-www, trailing slash and not. Pick one, redirect the rest to it permanently. Four addresses for one homepage splits everything four ways.

  6. Validate your sitemap and confirm it only lists live, indexable URLs

    A sitemap containing redirects, 404s or noindexed pages is a sitemap Google trusts less. Ours is split by section specifically so each part can be measured, which is a module 2 idea.

  7. Fix redirect chains

    A redirecting to B redirecting to C should become A to C. Chains are slow, lose a little at each hop, and accumulate silently over years of site changes.

  8. Check what a crawler actually sees on a JavaScript site

    If your content renders client-side, fetch the page as Googlebot and confirm the text is there. This is the check that catches a whole class of invisible problems on modern frameworks.

Can you do this yourself?

You can do this yourself if

  • Your site is on a mainstream CMS where robots.txt, canonicals and redirects are settings rather than server config, which covers most WordPress, Shopify, Squarespace and Webflow sites.
  • You are prepared to change one thing at a time and re-check. Technical SEO punishes batch changes because you lose the ability to attribute what happened.
  • The problems you found are the first four on that checklist. Those are genuinely fixable by a careful non-specialist.

You cannot do this yourself if

  • You cannot edit server configuration and the fix requires it. Redirect rules, header-level directives and HTTPS handling all live below the CMS on some platforms.
  • Your CMS generates the problems faster than you can fix them, which is common on ecommerce with faceted navigation producing thousands of parameter URLs.
  • The diagnosis involves rendering. Working out why Googlebot sees an empty page on a JavaScript site is a development problem wearing an SEO hat, and guessing at it can make things worse.

Questions people ask about this

Does robots.txt stop a page being indexed?
No. Google says robots.txt "is not a mechanism for keeping a web page out of Google" and that "a page that's disallowed in robots.txt can still be indexed if linked to from other sites". To actually keep a page out, use a noindex directive or password-protect it. Note that a page carrying noindex which is also blocked in robots.txt will never be removed, because Google cannot crawl it to read the instruction.
Is there a duplicate content penalty?
No. Google's canonicalization documentation does not mention one. What happens is consolidation rather than punishment: Google picks one version to show, so two near-identical pages get you one ranking instead of two. That is a dilution problem and an architecture one.
Is rel=canonical a directive?
It is a strong signal, not a command. Google describes it as "a strong signal that the specified URL should become canonical" and will pick its own if it disagrees, which is what the "Google chose different canonical than user" status means. The response is to work out why the pages look the same to Google, not to re-issue the same tag.
When should I use a 301 versus a 302?
Use 301 when the move is permanent. Google says a permanent redirect makes the indexing pipeline treat the target as canonical and show the new URL in results, while a temporary redirect does not and keeps showing the source page. A 302 on a permanent move tells Google to keep the old URL, which is the opposite of the intent.
What is technical SEO, in practice?
Making sure pages can be crawled, are eligible to be indexed, and resolve to one canonical address. Nearly every technical problem worth fixing on a small site is in that sentence. The longer checklists are mostly optimisation of things that are already working.
Do I need to worry about JavaScript rendering?
Only if your content is rendered in the browser rather than served in the HTML. Google does render JavaScript, but as a separate and less reliable later stage. The specific trap is navigation built from click handlers rather than anchor elements with href attributes: it works for every human and does not exist as a path for a crawler.