# SEO Basics

> Foundational head-tag hygiene every agent uses: title length, meta description, canonical URL, html lang, charset, viewport, and hreflang.

Questo controllo pesa il 5% del punteggio.

*Queste guide alla correzione sono scritte in inglese.*

<a id="no-html"></a>

## Could not fetch homepage HTML

The homepage didn't return readable HTML. See the [HTML Rendering guide](https://axrush.com/guides/html-rendering#no-html) for diagnosis.

---

<a id="no-title"></a>

## 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>
```

---

<a id="short-title"></a>

## <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.

---

<a id="long-title"></a>

## <title> too long

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

---

<a id="no-description"></a>

## 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.">
```

---

<a id="short-description"></a>

## 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.

---

<a id="long-description"></a>

## 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.

---

<a id="duplicate-title-description"></a>

## 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).

---

<a id="no-canonical"></a>

## 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">
```

---

<a id="multiple-canonical"></a>

## 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.

---

<a id="canonical-no-href"></a>

## 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">
```

---

<a id="canonical-relative"></a>

## 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).

---

<a id="no-lang"></a>

## 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">
```

---

<a id="invalid-lang"></a>

## Invalid <html lang>

Use a valid [BCP 47](https://www.rfc-editor.org/rfc/rfc5646) 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`

---

<a id="no-charset"></a>

## 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>
```

---

<a id="no-viewport"></a>

## 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">
```

---

<a id="no-x-default"></a>

## 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.

---

Rappresentazione Markdown di https://axrush.com/guides/seo-basics
