hreflang : comment nous relions 12 langues, et 5 erreurs à éviter

Par SEOgrinder · Publié le · Mis à jour le · 10 min de lecture

Réponse courte : hreflang est une indication placée dans le code source qui dit à Google quelles pages sont des versions linguistiques ou régionales d’un même contenu, pour que la recherche montre à chaque visiteur la bonne. Chaque version doit se citer elle-même et citer toutes les autres, et chaque paire de pages doit se renvoyer l’une à l’autre, faute de quoi les balises peuvent être ignorées. Voici comment seogrinder.com configure hreflang pour douze langues, puis cinq erreurs hreflang tirées de la documentation de Google.

À quoi sert hreflang, et quand en avez-vous besoin ?

Google explique l’idée sur sa page Tell Google about localized versions of your page : si une page existe en plusieurs versions pour des langues ou des régions différentes, les signaler à Google permet de « help Google Search point users to the most appropriate version of your page by language or region », c’est-à-dire d’aider la recherche à orienter chaque utilisateur vers la version la plus adaptée selon sa langue ou sa région.

Google cite trois situations où cette indication est recommandée :

  • Le contenu principal reste dans une seule langue et seul le gabarit (navigation, pied de page) est traduit.
  • Il existe de petites variantes régionales d’un contenu proche dans une même langue, par exemple l’anglais pour les États-Unis, la Grande-Bretagne et l’Irlande.
  • Le contenu est entièrement traduit, par exemple une version allemande et une version anglaise de chaque page.

Google peut trouver seul les versions alternatives, mais il juge en général préférable de les indiquer explicitement. Une page traduite n’est pas un doublon : les versions localisées « are only considered duplicates if the main content of the page remains untranslated » (Google).

Deux choses que hreflang n’est pas. Ce n’est pas le moyen par lequel Google reconnaît la langue d’une page : Google écrit qu’il « doesn’t use hreflang or the HTML lang attribute to detect the language of a page » (Google), et sa page sur les sites multilingues ajoute qu’il se fonde pour cela sur le contenu visible. Et ce n’est pas une promesse de classement : Google ne décrit qu’un seul but, montrer à chaque internaute la version qui lui correspond.

Comment seogrinder.com relie douze langues

Cette section décrit le blog de seogrinder.com tel que nous l’avons trouvé le 5 novembre 2026. La page d’accueil / ne porte aucune balise hreflang. Chaque article est une page à part, dans une seule langue. Lisez les balises vous-même :

curl -sS https://seogrinder.com/fr/blog/checklist-audit-seo-gratuite | grep '<link rel="alternate" hreflang'

Cela affiche 13 lignes, identiques sur les douze versions de cet article :

<link rel="alternate" hreflang="en" href="https://seogrinder.com/en/blog/seo-audit-checklist">
<link rel="alternate" hreflang="ar" href="https://seogrinder.com/ar/blog/qaimat-tadqiq-seo">
<link rel="alternate" hreflang="de" href="https://seogrinder.com/de/blog/seo-audit-checkliste">
<link rel="alternate" hreflang="es" href="https://seogrinder.com/es/blog/checklist-seo-auditoria">
<link rel="alternate" hreflang="fr" href="https://seogrinder.com/fr/blog/checklist-audit-seo-gratuite">
<link rel="alternate" hreflang="hi" href="https://seogrinder.com/hi/blog/seo-audit-checklist-hindi">
<link rel="alternate" hreflang="it" href="https://seogrinder.com/it/blog/checklist-audit-seo">
<link rel="alternate" hreflang="ja" href="https://seogrinder.com/ja/blog/seo-chekkurisuto">
<link rel="alternate" hreflang="ko" href="https://seogrinder.com/ko/blog/seo-chekeuliseuteu-jeomgeom">
<link rel="alternate" hreflang="nl" href="https://seogrinder.com/nl/blog/seo-audit-checklist-uitvoeren">
<link rel="alternate" hreflang="pl" href="https://seogrinder.com/pl/blog/checklista-seo-audyt">
<link rel="alternate" hreflang="pt" href="https://seogrinder.com/pt/blog/checklist-de-auditoria-seo">
<link rel="alternate" hreflang="x-default" href="https://seogrinder.com/en/blog/seo-audit-checklist">

Ce que montre ce bloc :

  • Une seule méthode. Les balises se trouvent dans l’en-tête HTML. Ces pages n’envoient aucun hreflang dans un en-tête HTTP, et le sitemap.xml ne contient aucune entrée xhtml:link. Google présente les trois méthodes comme équivalentes et ne voit aucun avantage à les utiliser toutes.
  • Des codes de langue simples. Douze codes, aucune région, parce que chaque langue n’a qu’une seule version de l’article.
  • La page se cite elle-même. Sur la version française, la ligne fr est l’adresse de la page elle-même. Les douze versions portent les mêmes lignes.
  • Des balises sobres. Elles se trouvent dans le <head>, un <link> chacune, sans attribut supplémentaire. Google demande un en-tête bien formé et déconseille de mélanger hreflang et des attributs tels que media dans une même balise.
  • La canonical pointe vers elle-même. Chaque version indique sa propre adresse comme canonical, et non l’adresse anglaise, ce qui concorde avec la position de Google : les versions traduites ne sont pas des doublons.
  • Une adresse distincte par langue, sans redirection automatique. /fr/blog/checklist-audit-seo-gratuite a un slug français. Google recommande des adresses différentes par langue plutôt que des cookies ou des réglages du navigateur, et déconseille de rediriger les visiteurs selon la langue qu’on leur suppose. Une requête vers la page anglaise avec Accept-Language: de renvoie 200 et y reste (testé le 5 novembre 2026). Chaque article a en outre un menu des langues avec de simples liens vers les autres versions.

Comment c’est construit. Chaque fichier d’article nomme son sujet dans une ligne group. Le code du blog réunit tous les fichiers qui ont le même group, écrit un <link> par membre (l’anglais d’abord, puis par code de langue) et place x-default sur la version anglaise. Une langue sans fichier n’obtient aucune ligne : un sujet qui n’existe qu’en anglais et en allemand porte donc trois lignes, en, de et x-default. Google admet les ensembles incomplets : « you can omit some languages on some pages; Google will still process the ones that point to each other » (Google).

Comment nous avons compté. Cette boucle lit toutes les adresses d’articles dans le sitemap et compte les lignes hreflang de chaque page :

for u in $(curl -sS https://seogrinder.com/sitemap.xml | grep -o 'https://seogrinder.com/[a-z][a-z]/blog/[^<]*'); do
  curl -sS "$u" | grep -c '<link rel="alternate" hreflang'
done | sort | uniq -c

Le 5 novembre 2026, elle a affiché 408 13 : 408 pages avec 13 lignes (douze langues plus x-default). Un petit script a ensuite récupéré ces 408 pages et comparé les balises : chaque page se cite elle-même, chaque adresse citée répond 200 et renvoie vers la page, et x-default est l’adresse anglaise. Notre contrôle du blog (check:blog) vérifie ces règles pour chaque page d’article à chaque modification du blog.

À quoi sert x-default ?

Google décrit x-default comme « recommended for specifying the fallback page for users whose language settings don’t match any of your site’s localized versions » (Google), soit la page de repli pour les utilisateurs dont les réglages de langue ne correspondent à aucune version de votre site. Ce n’est pas obligatoire.

Google précise que n’importe quelle page peut porter cette valeur, mais qu’elle « was designed for language selector pages and so it will work best with those ». Nous n’avons pas de page de sélection de la langue pour les articles ; notre page de repli est donc la version anglaise du même article, et pour les pages de présentation du blog, c’est /en/blog. C’est notre choix, pas une règle.

Erreurs fréquentes : 5 erreurs hreflang tirées de la documentation de Google

La page de Google contient une section « Common Mistakes » de trois entrées, et ses consignes formulent deux autres exigences avec « must ». Ce sont les cinq ci-dessous. Google ne dit pas à quelle fréquence chacune se produit. Seules deux s’accompagnent d’une conséquence annoncée : les liens retour manquants (les balises sont ignorées) et les codes de région réservés (cette partie est ignorée). Pour les autres, la page énonce seulement la règle.

1. Des liens retour manquants

Si la page X cite la page Y, la page Y doit citer la page X. La règle, dans les mots de Google : « If two pages don’t both point to each other, the tags will be ignored » (Google). Google en donne la raison : un autre site ne doit pas pouvoir se déclarer version alternative de votre page. Pour corriger, faites afficher le même bloc de liens sur chaque version, à partir d’une source unique. Si un ensemble complet est difficile à tenir à jour, Google autorise à omettre certaines langues sur certaines pages, mais précise que les langues ajoutées plus tard doivent renvoyer dans les deux sens vers la version d’origine ou principale.

2. Une version qui ne se cite pas elle-même

La consigne valable pour toutes les méthodes : « Each language version must list itself as well as all other language versions » (Google). Pour la méthode HTML, cela veut dire un lien par version, « including itself », avec le même ensemble sur chaque version. Google ne dit pas ce qui se passe sans auto-référence : considérez-le comme une erreur et ajoutez la ligne.

3. Des codes de langue invalides

La première partie de la valeur est une langue au format ISO 639-1, suivie en option d’une région. Google écrit : « Specifying the region alone is not valid ». Dans son exemple sur la Belgique, be est faux parce que c’est le code de langue du biélorusse ; les bons codes sont de-BE, nl-BE et fr-BE. Les codes absents de ces normes, comme es-419, ne sont pas pris en charge (les codes d’écriture tels que zh-Hans sont autorisés). La casse n’a pas d’importance, mais la norme veut la région en majuscules.

4. Des codes de région invalides

La région doit être un code officiellement attribué de la norme ISO 3166-1 alpha 2. Pour les codes réservés à autre chose, « Google Search ignores that part of the annotation ». Google cite EU, UN et UK comme sans effet. Pour le Royaume-Uni, le code est GB, comme dans l’exemple de Google lui-même, en-GB.

5. Des adresses relatives ou incomplètes

« Alternate URLs must be fully-qualified, including the transport method (http/https) » (Google). L’exemple de Google : https://example.com/foo, et non //example.com/foo ni /foo.

Comment vérifier hreflang ?

À la main : lancez la commande curl ci-dessus sur l’une de vos pages et vérifiez que la page se cite elle-même. Lancez-la ensuite sur chaque adresse de la sortie et cherchez la première page : c’est le test des liens retour. Google mentionne aussi des outils de test tiers et précise qu’ils « are not maintained or checked by Google ».

Avec SEOgrinder, notre propre outil, que nous développons : analysez une page, ouvrez l’onglet « Page sur Google » et repérez la carte « Langues (hreflang) ». Elle vérifie les codes, l’auto-référence, x-default, si les cibles répondent et si elles renvoient vers la page. Quand tout va bien, elle n’affiche qu’une ligne ; sinon, elle liste chaque contrôle avec son résultat, et les problèmes passent dans la liste des tâches.

ErreurCe qu’affiche SEOgrinder (exemple de formulation)
1. Liens retour manquants« 2 cibles ne renvoient pas de lien »
2. Pas d’auto-référence« La page ne se référence pas elle-même »
3 et 4. Codes invalides« 1 code de langue invalide » (la langue et la région sont vérifiées d’après les normes que cite Google)
5. Adresses relativesPas de ligne dédiée : SEOgrinder résout une adresse relative par rapport à la page avant de vérifier, cherchez donc cette erreur dans le code source

Deux limites. L’outil récupère au plus dix cibles par page ; sur nos pages à 13 entrées, il en vérifie dix et le dit (« 10 entrées sur 13 récupérées et vérifiées »). Et il juge la page que vous saisissez ; pour un site entier, parcourez les adresses dans une boucle, comme ci-dessus.

Questions fréquentes

Ai-je besoin de hreflang si chaque langue a sa propre adresse ?

Ce n’est pas obligatoire. Google peut trouver les versions alternatives sans hreflang, mais il juge en général préférable de les indiquer explicitement.

hreflang améliore-t-il mon classement ?

La page de Google ne l’affirme pas. Elle décrit le but comme l’orientation des utilisateurs vers la version la plus adaptée selon la langue ou la région. Personne ne peut promettre une position.

Laquelle des trois méthodes choisir ?

Elles sont équivalentes pour Google, et en utiliser plusieurs n’apporte aucun avantage. Google note que les balises HTML conviennent aux sites sans sitemap ni contrôle des en-têtes, et que l’en-tête HTTP convient aux fichiers qui ne sont pas du HTML, comme les PDF. Nous utilisons les balises HTML.

Votre prochaine étape

Lancez la commande curl sur l’une de vos pages et vérifiez qu’elle se cite elle-même et qu’une cible renvoie vers elle. Analysez ensuite la page avec SEOgrinder, ouvrez « Page sur Google », corrigez la première ligne de la carte « Langues (hreflang) » qui signale un problème, puis cliquez sur Réanalyser. Pour replacer hreflang parmi huit groupes de contrôles, notre checklist audit SEO donne la vue d’ensemble.

À lire aussi

Autres articles du blog