tabteca
Sign in
ES EN

Technical SEO for developers

The eight things you decide in code that determine whether Google can index your site. No marketing: crawling, canonicals, structured data and what breaks silently.

Technical SEO is the part of ranking you decide by writing code rather than copy: whether a search engine can reach your pages, understand them, and know which version of each is the real one. It doesn’t replace having content worth reading, but without it, good content never gets to compete.

The bad news is that almost everything that breaks here breaks silently. No test fails, the site loads perfectly, and the pages simply stop existing for Google. These are the eight things worth having settled, in the order they matter.

1. Make it crawlable

First things first: can a crawler see your content? Three common ways the answer is no:

  • A robots.txt that blocks too much. A Disallow: / inherited from staging is the classic.
  • Content that only exists after JavaScript runs. Google renders, but on a second pass that can take a while, and other crawlers don’t render at all.
  • Links that aren’t links. A <div onclick> or a button that navigates via JavaScript is not a path anyone can follow. A link is <a href>, no exceptions.

Quick check: request the page with curl and look for your content in the response. If it isn’t in the HTML, you are betting on the crawler rendering it.

2. Make it indexable

Crawling and indexing are not the same thing. A page can be perfectly readable and still stay out of the index because it carries <meta name="robots" content="noindex">.

That noindex is a tool, not a bug: you want it on sign-in, sign-up, internal search results and anything behind an account. What you don’t want is for it to leak into a shared template. It is a one-line mistake that takes out an entire section.

3. The canonical, especially with query parameters

The canonical tells Google which URL is the real one when several show the same thing. You need it as soon as you have query parameters, an optional trailing slash, or mixed casing.

Two rules that avoid 90% of the trouble:

  • Every page’s canonical points at itself unless it genuinely is a copy.
  • Pick one form and stick to it: trailing slash or no trailing slash, but not both. And make the sitemap use exactly the same one.

The expensive mistake is a canonical that always points somewhere else. We had it with languages: the English version declared the Spanish one as canonical, which tells Google “ignore this, it’s a duplicate”. We cover it in hreflang: SEO for a bilingual site.

4. The sitemap has to be the complete list

A sitemap doesn’t improve rankings; it exists so what you have gets discovered. The problem shows up when it goes stale without anyone noticing, which is the norm when it’s maintained by hand.

On server-rendered sites this is worse than it sounds: sitemap generators usually discover only what is built statically, and if all your routes are dynamic, they discover nothing. That happened to us exactly: two pages moved to server rendering and vanished from the sitemap without breaking a thing. Details in sitemap.xml and robots.txt done right.

5. Titles and descriptions, with their real limits

Every page needs its own <title> and <meta name="description">. The ranges that survive without Google rewriting them:

Element Useful length What happens outside
title 15–60 characters Truncated with an ellipsis
description 70–160 characters Too short and Google ignores it and writes its own
h1 One per page With several, none stands out

And mind the suffix: if you append · My site to every title, those characters count. A 55-character title plus a 10-character suffix is 65, and it gets cut.

6. Structured data, but only what you can back up

JSON-LD is what turns a plain result into one with stars, prices or expandable questions. It is also the easiest way to promise something that isn’t on the page, and that does have consequences.

One rule: mark up only what the user can see. If the schema says there are ten FAQs, there must be ten visible FAQs. We go into it in structured data: what to mark up and what not.

7. Performance, in the order that pays

User-experience metrics do count, though less than the industry claims. It is worth doing for users before it is worth doing for Google, and there is a clear order of return:

  1. Reserve space for images with width and height. Stops content jumping and takes five minutes.
  2. Don’t block rendering with unnecessary CSS and fonts. A font-display: swap is nearly free.
  3. Serve images at the size they are displayed. That is where nearly all the weight of a normal page lives.
  4. Everything else, once the above is done.

8. Make it check itself

This is the one almost nobody builds and the one that prevents all the others. Technical SEO rots quietly: nothing fails, nothing warns you, and you find out months later staring at a graph going down.

The answer is not an annual audit, it is a script that crawls your own site and exits non-zero when something is wrong. It should check: that the sitemap exists and covers everything public, that no public page carries noindex, that every page has a canonical and an h1, that titles are in range, and that there are no broken internal links.

We have one and it found things that had been broken for weeks with nobody noticing. It is the best effort-to-damage-avoided ratio on this whole list.

Where to start today

If you only do one thing: request three pages of your site with curl and read the raw HTML. Title, description, canonical, h1, and the content present without running JavaScript. In fifteen minutes you know whether you have a technical SEO problem or a content problem, and they are very different problems.

For measuring afterwards, free SEO tools for a small project covers the options with a genuinely free plan.

Frequently asked questions

How long does Google take to index a new page? Anywhere from hours to weeks, depending mostly on how often it crawls your site, which in turn depends on how much you publish and how many links you get. A new site with no external links can take weeks; one publishing weekly usually sees new pages within days.

Do I need server-side rendering to rank? It isn’t mandatory: Google executes JavaScript. But it does so on a delayed second pass, and other crawlers — including several AI assistants — don’t do it at all. If the content matters, put it in the HTML of the first response.

Does structured data raise rankings? Not directly. What it does is change how the result looks, and a result with expandable questions or ratings earns more clicks from the same position. The gain is in click-through rate, not ranking.

What should I do with paginated pages? Give each one its own self-referencing canonical and a title that distinguishes it. What you must not do is point every page’s canonical at page 1: that tells Google to ignore the content of the rest.

Is buying links worth it? No, and it is exactly the kind of thing Google detects and penalises. A link is worth the real traffic it brings and the context it appears in; a bought link has neither.

The directory is the other half of this

115 services with a genuinely free plan, each one with its limits spelled out. No sign-up needed to start looking.

Explore the directory

← All articles

Keep reading

5 min read

Free SEO tools for a small project

The seven pieces you need to measure and fix the SEO of a small project without paying anything, and what to check in each one's free plan before you set it up.

SEOFree planGuides

6 min read

How to get AI assistants to cite your site

ChatGPT, Perplexity and Google's AI summaries cite specific sources. What makes them pick yours: direct answers, HTML without JavaScript, structured data and an llms.txt.

SEOAIGuides

5 min read

Structured data: what to mark up and what not

JSON-LD without the hype: which types actually do something, how to stop the schema promising things the page doesn't show, and why it doesn't raise rankings but does raise clicks.

SEOStructured dataGuides