Vai al contenuto principale
All Guides

SEO Basics

Weight: 7% of your AX score. The fundamentals every AI agent and search crawler reads first: <title>, <meta name="description">, <link rel="canonical">, <html lang>, charset, viewport, and hreflang.

Could not fetch homepage HTML

The homepage didn't return readable HTML. See the HTML Rendering guide for diagnosis.


Missing <title>

Every HTML document needs a non-empty <title>. Agents quote it as the document name in summaries, citations, and link previews.

<head>
  <title>Acme Corp — Cloud infrastructure for modern teams</title>
</head>

<title> too short

A title under 20 characters is hard for an agent to interpret without additional context. Aim for 20-70 characters with a clear topic indicator and brand reference.

Pattern
<Page topic> — <Brand> or <Page topic> | <Brand> works well.

<title> too long

Titles over ~70 characters get truncated by agents and search engines mid-phrase. Trim to the essential topic + brand.


Missing meta description

<meta name="description"> is the canonical short description that agents quote in citations and previews. Add it in <head>:

<meta name="description"
      content="Acme Corp ships managed Postgres, Redis, and object storage for engineering teams that don't want to babysit infrastructure.">

Meta description too short

Descriptions under 70 characters waste the available signal. Aim for 70-160 characters that explain what the page offers and to whom.


Meta description too long

Descriptions over 160 characters get truncated. The most useful information should be in the first 120 characters in case of aggressive truncation.


Description duplicates title

When the description is identical to the title, the agent gets the same signal twice and loses context. Treat them as complementary:

  • Title: the topic + brand (short, parseable).
  • Description: the value proposition + audience (longer, narrative).

No canonical link

<link rel="canonical"> tells agents and search crawlers which URL is the "real" one when a page is reachable via multiple paths (UTM params, locale prefixes, alternate domains).

<link rel="canonical" href="https://your-site.com/blog/post">

Multiple canonical links

Only one <link rel="canonical"> per page is valid. When agents see multiple, they ignore all of them.

Common cause: a CMS or framework injects a canonical, plus a plugin or layout adds another. Audit your <head> output and remove the duplicate.


Canonical missing href

The <link rel="canonical"> tag has no href attribute. Add an absolute URL:

<link rel="canonical" href="https://your-site.com/path">

Canonical not absolute

Use a fully qualified URL (https://...) for canonical hrefs. Relative paths are ambiguous when the page is fetched outside the original context (RSS feeds, link previews, agent caches).


Missing <html lang>

Set the document language on the root element so multilingual agents pick the right summarization and translation models:

<html lang="en">
<html lang="es-419">
<html lang="zh-Hant">

Invalid <html lang>

Use a valid BCP 47 tag — typically a 2-3 letter language code, optionally followed by a region or script subtag separated by hyphens (not underscores).

  • en, en-US, pt-BR, zh-Hant-HK
  • en_US (underscore), english, 99zz

Missing UTF-8 charset

Declare UTF-8 explicitly as the first child of <head>. Without it, agents can mis-decode non-ASCII characters (accents, CJK, emoji).

<head>
  <meta charset="utf-8">
  <!-- ...everything else... -->
</head>

Missing viewport meta tag

Add the viewport meta so mobile agents render and measure the page correctly:

<meta name="viewport" content="width=device-width, initial-scale=1">

hreflang missing x-default

When you publish multilingual variants via <link rel="alternate" hreflang="...">, also publish an x-default fallback for unmatched locales:

<link rel="alternate" hreflang="en"        href="https://your-site.com/en">
<link rel="alternate" hreflang="es"        href="https://your-site.com/es">
<link rel="alternate" hreflang="x-default" href="https://your-site.com/">

x-default tells agents which URL to pick when none of the language-specific variants match the user's locale.