Guide · Internationalisation
hreflang : le cluster complet, sur chaque page
hreflang sert une seule chose : dire à un moteur que plusieurs adresses portent le même propos dans des langues différentes, et laquelle montrer à qui. C’est une déclaration collective : elle appartient au groupe entier, page après page. Elle vaut pleinement dès que chaque page du groupe porte la liste complète. Nous l’avons appris sur notre propre site.
Quatre règles, et elles suffisent
hreflang se lit en clair, règle par règle. Les quatre règles ci-dessous se vérifient depuis la page servie, sur la seule foi de ce qu’elle rend, et la quatrième est presque toujours celle qui reste à poser.
01
La réciprocité
Si la page A déclare la page B, la page B doit déclarer la page A. Le moteur retient une déclaration lorsque les deux côtés la rendent : la confirmation mutuelle est ce qui lui donne sa force, et c’est sur elle qu’il s’appuie.
Le voir : Prenez deux versions d’une même page et lisez leurs déclarations côte à côte. Chacune doit citer l’autre, avec l’adresse exacte servie par l’autre — même protocole, même domaine, même barre oblique finale.
Le poser : Générer les déclarations depuis une seule et même liste de versions, d’un seul geste pour toutes les pages plutôt qu’à la main. Une liste unique rend la réciprocité automatique.
02
Chaque page se déclare elle-même
Le groupe se lit du point de vue de n’importe laquelle de ses pages. Une page qui se cite elle-même en plus de ses traductions rend le groupe complet, vu depuis toutes les autres.
Le voir : Sur la version française, cherchez la déclaration hreflang="fr". Elle doit être là, et pointer vers la page que vous êtes en train de lire.
Le poser : La langue de la page fait partie du cluster au même titre que les autres. C’est la déclaration qu’on oublie le plus souvent, parce qu’elle paraît redondante — elle pèse pourtant exactement autant que les autres.
03
x-default
x-default désigne la version servie au visiteur dont la langue tombe en dehors des langues déclarées. C’est le repli du groupe : il occupe une déclaration à part entière et pointe vers l’une des versions existantes.
Le voir : Comptez : une déclaration par langue servie, plus une pour x-default. Sur notre site, huit langues plus x-default font neuf déclarations par page.
Le poser : Choisir une version de repli et la désigner partout de la même manière. x-default se pose sur chaque page du groupe, exactement comme les autres.
04
Le cluster partiel — l’erreur la plus fréquente
C’est notre propre incident, relevé le 1er septembre 2026 dans notre Search Console : des pages « explorées, actuellement non indexées », sur un site techniquement sain par ailleurs. Chaque page déclarait seulement une partie des versions du groupe. La page néerlandaise annonçait fr et nl ; la page française, fr et en. Six langues sur huit restaient à raccrocher au maillage.
Le voir : Les moteurs restent silencieux là-dessus : c’est le comptage qui parle. Comptez les balises d’une page traduite, puis comparez cette liste à celle d’une autre page du groupe — les deux listes doivent être identiques.
Le poser : Le cluster COMPLET sur CHAQUE page, français compris — le français, les sept autres langues, puis x-default. L’opération est idempotente : les anciennes déclarations sont retirées avant que les neuves soient posées, si bien qu’une republication laisse toujours une seule génération de balises en place.
Ce que déclare une page de ce site
Le site est servi en huit langues. Chacune de ses pages porte donc la même liste, dans le même ordre, quelle que soit la langue qu’on est en train de lire — plus x-default, qui désigne la version rendue au visiteur dont la langue tombe en dehors des huit déclarées.
- fr Français
- en Anglais
- es Espagnol
- de Allemand
- it Italien
- pt Portugais
- nl Néerlandais
- pl Polonais
- x-default Repli
Neuf déclarations par page, identiques d’une version à l’autre. La page française est à égalité avec toutes les autres : elle porte la même liste que la polonaise.
Où poser les déclarations
Trois emplacements sont valables, et un seul suffit :
- Dans le <head> de la page. Un élément par version, chacun avec sa langue et son adresse absolue. C’est l’emplacement le plus simple à vérifier : la déclaration se lit dans la réponse HTML.
- Dans l’en-tête HTTP. Le seul emplacement ouvert à un document servi hors HTML — un PDF, par exemple.
- Dans le plan de site. Chaque entrée d’URL porte les versions du groupe en xhtml:link. L’avantage est le volume : le groupe entier se déclare une fois, dans un fichier que vous contrôlez.
Nous les posons dans le <head> ET dans le plan de site. Les deux emplacements se lisent indépendamment : si l’un est lu avant l’autre, le groupe est déjà connu.
Comment vérifier
La vérification tient en trois gestes, et le premier est un comptage. Demandez la page servie, comptez ses déclarations hreflang, et comparez ce nombre au nombre de langues que vous servez, plus une pour x-default. Un écart d’une seule unité est un cluster partiel.
Refaites le comptage sur une deuxième version de la même page : les deux listes doivent être identiques, adresse pour adresse. Enfin, suivez une adresse déclarée et vérifiez qu’elle rend la déclaration inverse. Ces trois gestes tiennent dans la seule réponse HTML — votre navigateur y suffit, tel qu’il est déjà installé.
Depuis notre incident, notre garde de publication laisse sortir une page dès lors qu’elle déclare exactement autant de balises hreflang que de langues servies, plus x-default. Le contrôle a lieu au moment de publier : ce qui part en ligne porte le cluster complet.
Compter vos déclarations depuis votre navigateur
Le Vérificateur lit votre adresse et vous rend l’état de vos signaux, gratuitement, en une dizaine de secondes. Votre site reste exactement le vôtre : tout se passe à la lecture, chez nous. L’Audit SEO Records va plus loin : il lit votre plan entier, page par page, et vous remet le constat daté. Et si vous voulez que les signaux soient corrigés au moment où la page est servie, SEO Records le fait dès 199 € par an.