Texte d’ancre : comment l’écrire pour que Google puisse l’utiliser

Le texte d’ancre doit nommer la destination entre des balises a avec un vrai href. Voici le test hors contexte, six étapes et un script pour trouver les liens qui ne donnent rien.

Exploration et indexation7 min de lecture2448 vues
Texte d’ancre : comment l’écrire pour que Google puisse l’utiliser

Pour écrire un texte d’ancre que Google peut utiliser, placez entre les balises une description de la destination, et assurez-vous que l’élément autour est un <a> avec un vrai href. Ce sont deux conditions distinctes, et elles échouent séparément : un lien avec des mots parfaits mais sans href n’est pas un lien, et un lien suivi sans texte n’apprend rien à Google sur sa destination.

Ce chapitre suppose que vous avez déjà décidé quelles pages doivent pointer vers lesquelles ; c’est une question de structure, traitée dans la stratégie de maillage interne. Ici, on descend d’un niveau, à l’élément lui-même : le href, les mots, et les deux solutions de repli que Google nomme quand les mots manquent.

Ce que Google lit vraiment dans un lien

Trois choses, dans un ordre de préférence fixe. La page « Make your links crawlable », consultée le 29 octobre 2026, commence par la règle de l’élément : Google ne peut explorer un lien que s’il s’agit d’un élément <a> avec un attribut href. Elle nomme ensuite le texte d’ancre, puis deux replis quand l’ancre est vide : l’attribut title, et, pour un lien autour d’une image, l’alt de cette image. https://developers.google.com/search/docs/crawling-indexing/links-crawlable

CoucheCe qu’il fautSi ça manque
Élément<a> avec un hrefPas exploré comme lien
Valeur du hrefUne adresse, pas javascript:…Google « peut encore tenter » de la résoudre
TexteDes mots entre les balisesRepli sur title
Lien imagealt sur l’image internePlus rien à lire

L’ordre compte quand vous corrigez en masse. Un lien icône avec un aria-label et sans alt se lit bien pour un lecteur d’écran et n’a pas de nom documenté pour la recherche : aria-label n’apparaît nulle part sur cette page. Ajouter l’alt sur l’image intérieure corrige le côté recherche sans changer un pixel.

Un href décide si le lien existe. Le texte décide de sa valeur.

Comment écrire un texte d’ancre qui tient tout seul

Google publie le test, et il prend environ deux secondes par lien : lisez uniquement le texte d’ancre, hors contexte, et vérifiez s’il est assez précis pour avoir un sens seul. Si vous ne savez pas de quoi la page pourrait parler, il faut un texte plus descriptif. « Voir plus » échoue. « Lire l’article » échoue. « Liste des user agents GPTBot » passe, comme « notre politique de remboursement 2026 ».

La même page met en garde contre les deux extrêmes : un texte trop générique, et un texte anormalement long, où la phrase entière a été avalée par le lien. Visez trois à six mots qui nomment la destination. Le contexte reste dans la phrase autour, pas dans l’ancre.

Faire : six étapes sur une page

Travaillez une page à la fois, dans cet ordre. Les étapes un à trois retirent les liens qui ne donnent rien à un robot ; les étapes quatre à six améliorent ceux qui fonctionnent déjà.

  1. Listez chaque ancre de la page et signalez deux conditions : pas d’attribut href, et pas de texte une fois les espaces réduits. Utilisez le script plus bas ou la console du navigateur.
  2. Pour chaque ancre signalée qui entoure une image, écrivez un alt qui décrit la destination, pas la photo. Un lien miniature vers un article doit porter le titre de l’article.
  3. Pour chaque ancre signalée qui est un contrôle — ouverture de menu, bouton de vote, flèche de carrousel — ne touchez à rien et vérifiez que la destination cachée reste atteignable par un lien normal ailleurs sur le site.
  4. Pour les ancres qui ont du texte, appliquez le test hors contexte. Réécrivez les échecs pour nommer la destination en trois à six mots.
  5. Coupez tout texte d’ancre au-delà d’une centaine de caractères pour ne garder que la partie qui nomme la chose. La phrase autour garde le reste, et la page de Google demande explicitement de laisser le contexte en dehors du lien.
  6. Vérifiez que vous n’avez pas répété le même texte pour deux destinations, ni deux textes pour une seule destination. Une destination, une formulation, utilisée de façon cohérente.

L’étape six est celle que l’on saute, et celle qui compose. Si trois pages pointent vers votre page tarifs avec « tarifs », « offres » et « voir les prix », chaque formulation porte un tiers de la description, et un moteur de réponse qui essaie de comprendre cette page dispose de trois noms partiels au lieu d’un.

Livrable : le script et la checklist

Ce script affiche chaque ancre d’une page en ligne qui ne donne rien à un robot : pas de href, ou pas de texte et pas d’alt d’image. Il ne demande que Python 3.

import sys, urllib.request
from html.parser import HTMLParser

class Links(HTMLParser):
    def __init__(self):
        super().__init__(convert_charrefs=True)
        self.rows, self.cur = [], None
    def handle_starttag(self, tag, attrs):
        a = dict(attrs)
        if tag == "a":
            self.cur = {"href": a.get("href"), "text": "",
                        "aria": (a.get("aria-label") or "").strip(),
                        "img": (a.get("title") or "").strip()}
        elif tag == "img" and self.cur is not None:
            self.cur["img"] = (a.get("alt") or "").strip()
    def handle_data(self, d):
        if self.cur is not None:
            self.cur["text"] += d
    def handle_endtag(self, tag):
        if tag == "a" and self.cur is not None:
            self.rows.append(self.cur)
            self.cur = None

req = urllib.request.Request(sys.argv[1], headers={"User-Agent": "Mozilla/5.0"})
page = urllib.request.urlopen(req, timeout=30).read().decode("utf-8", "replace")
p = Links()
p.feed(page)
bad = 0
for r in p.rows:
    named = r["text"].strip() or r["img"]
    if r["href"] is None or not named:
        bad += 1
        why = "no href" if r["href"] is None else "no text"
        print(f'{why:8} {(r["text"].strip() or r["aria"] or "")[:40]:40} {(r["href"] or "")[:50]}')
print(f'{bad} of {len(p.rows)} anchors give a crawler nothing')

Enregistrez-le sous linkcheck.py et lancez python3 linkcheck.py https://votre-site.example/. Il lit le HTML livré, et c’est le point : il voit ce que voit un robot avant l’exécution de tout script.

ContrôleCondition
ÉlémentChaque cible de navigation est un <a href>
Texte videZéro, ou chacun a un alt d’image
Hors contexteLe texte nomme la destination seul
LongueurEnviron 3 à 8 mots, pas la phrase entière
CohérenceUne destination, une formulation
EntassementPas deux liens collés sans mots entre eux

Trois façons de se tromper

Les trois apparaissent sur de vrais sites en production, et aucune ne paraît cassée dans un navigateur.

  1. Un bouton d’ouverture de menu n’est pas un lien. Il n’a souvent pas de href par conception. C’est acceptable pour le déclencheur et fatal pour les pages derrière s’il n’apparaissent nulle part ailleurs. Vérifiez le pied de page et le sitemap avant de modifier le menu.
  2. Un lien icône avec seulement un aria-label passe un audit d’accessibilité et ne laisse rien à la recherche, car les replis documentés sont title et l’alt de l’image. Gardez l’aria-label ; ajoutez l’alt.
  3. Un texte de plus de 100 caractères signifie souvent qu’un titre ou un paragraphe entier a été enveloppé. Google demande de garder le contexte autour du lien, pas dedans.

Où cela s’arrête

Le texte d’ancre ne sauvera pas une page qu’un robot ne peut pas atteindre, et il ne dira pas combien vaut un lien donné. La documentation de Google décrit ce qu’il lit ; elle ne publie pas de poids, et aucune checklist honnête ne peut en fournir un. Nous ne savons pas quel poids Google accorde à un lien donné.

Si des pages manquent à l’index, commencez un niveau au-dessus avec la vérification d’accessibilité des robots IA : accessibilité d’abord, formulation ensuite. Ce chapitre suppose aussi des liens éditoriaux ordinaires ; les liens payants et générés par les utilisateurs demandent une qualification rel, qui relève d’une autre règle.

Questions fréquentes

Combien de mots doit faire un texte d’ancre ?

Google ne donne pas de nombre, seulement deux directions à éviter : trop générique et anormalement long. Trois à six mots nomment la plupart des destinations, et le test hors contexte tranche le reste.

Faut-il mettre le mot-clé cible dans chaque lien interne ?

Non. La même page qualifie le bourrage de mots-clés de violation des règles anti-spam et demande si le lecteur a besoin de ces mots pour comprendre la page suivante. La cohérence bat la répétition : une formulation par destination, là où elle s’insère dans la phrase.

Un aria-label suffit-il pour un lien icône ?

Pour les lecteurs d’écran, oui. Pour la recherche, il n’est pas nommé dans la documentation de Google sur le texte des liens, et les deux replis documentés sont title et l’alt de l’image intérieure. Sur 27 pages d’accueil mesurées, aria-label seul était le moyen le plus fréquent de nommer un lien sans texte.

Les liens ajoutés par JavaScript comptent-ils ?

La page de Google dit qu’ils sont explorables tant qu’ils utilisent le balisage HTML montré, c’est-à-dire qu’ils finissent en <a href>. Le script ci-dessus ne les verra pas : vérifiez-les avec le HTML rendu de l’outil d’inspection d’URL.

Où placer ce travail dans le flux ?

Après avoir décidé la structure dans la stratégie de maillage interne, et avant de publier. Le flux de promotion garde la trace des pages publiées et des liens ajoutés, pour que la prochaine vérification compare un état connu à un autre.

Fait partie du guide QueryWin · Niveau 2

Texte d’ancre : comment l’écrire pour que Google puisse l’utiliser