24/10/2026
Une version par marché ne sert à rien si Google affiche la mauvaise à l'internaute belge ou britannique. L'attribut hreflang relie les versions équivalentes d'une même page et indique la langue, et si besoin le pays, de chacune. Ce guide détaille les codes valides, les trois méthodes d'implémentation, la réciprocité, l'auto-référence et x-default, les erreurs qui font ignorer le signal et la façon de les vérifier. Le cadre d'ensemble est traité dans notre guide du SEO international et de la structure multi-pays.
À quoi sert hreflang, et ce qu'il ne fait pas
L'attribut hreflang, apparu en 2011, est porté par une balise <link rel="alternate">. Il déclare à Google un ensemble de pages équivalentes, chacune associée à une langue et éventuellement à un pays. C'est un signal, pas une directive : Google l'applique si les déclarations sont cohérentes et les pages équivalentes.
Voici ce qu'il fait, et ce qu'on lui prête à tort :
- Il sélectionne la version affichée selon la langue et la région de l'internaute : la page
fr-BEpour une requête depuis la Belgique, la pageen-GBdepuis le Royaume-Uni. - Il évite que des versions proches se concurrencent : sans lui, deux pages anglaises pour les États-Unis et le Royaume-Uni risquent d'être traitées comme des doublons.
- Il ne classe pas : hreflang n'est pas un facteur de classement.
- Il ne remplace pas la localisation : une étiquette
fr-CHsur une page aux prix en euros ne crée pas une version suisse. - Il ne travaille pas seul : depuis le retrait de l'outil de ciblage international de Search Console en 2022, le ciblage pays ne passe plus que par le ccTLD ou par hreflang, et la balise n'est crédible que si le contenu suit.
Vérifiez donc d'abord que chaque version existe pour une raison : une langue différente, ou des écarts réels de prix, de livraison ou d'offre. Sinon, une seule version suffit.
Syntaxe et codes : langue ISO 639-1, pays ISO 3166-1
La valeur de hreflang combine un code de langue ISO 639-1, en minuscules (fr, en, es), et si nécessaire un code de pays ISO 3166-1 alpha-2, en majuscules (FR, BE, GB). La casse n'est pas lue par Google, mais la convention facilite la relecture. Le tableau suivant reprend les codes que l'on croise le plus en audit :
Le code es-419 mérite une mention : il couvre l'Amérique latine d'un bloc et évite de dupliquer une version identique pour chaque pays. Son articulation avec es-ES et es-MX est détaillée dans notre guide du référencement en espagnol, de l'Espagne à l'Amérique latine.
Langue seule ou langue et pays
Une langue seule (fr) suffit quand l'offre est la même partout : mêmes prix, mêmes conditions, mêmes coordonnées. Dès que la devise, la livraison, la TVA, les retours ou l'assortiment changent, ajoutez le pays (fr-FR, fr-BE, fr-CH). Le test : un internaute du pays A qui arrive sur la version du pays B vit-il une expérience dégradée ? Si oui, la version pays se justifie ; sinon, une page en fr évite les quasi-doublons.
Les deux niveaux se combinent dans un même cluster : fr-FR, fr-BE, et fr pour les autres pays francophones.
Les trois méthodes : balises, sitemap XML, en-tête HTTP
Google reconnaît trois façons de déclarer les versions. Elles ont la même valeur pour lui. Choisissez une méthode principale par type de page : deux méthodes qui se contredisent produisent des clusters impossibles à diagnostiquer.
Balises dans le head
Chaque version liste toutes les versions, y compris elle-même, avec des URL absolues. Voici le <head> de la version française d'une page guide disponible en quatre versions, avec une page de sélection en x-default :
<html lang="fr-FR"><head><link rel="canonical" href="https://www.exemple.com/fr-fr/guide/" /><link rel="alternate" hreflang="fr-FR" href="https://www.exemple.com/fr-fr/guide/" /><link rel="alternate" hreflang="fr-BE" href="https://www.exemple.com/fr-be/guide/" /><link rel="alternate" hreflang="en-GB" href="https://www.exemple.com/en-gb/guide/" /><link rel="alternate" hreflang="en-US" href="https://www.exemple.com/en-us/guide/" /><link rel="alternate" hreflang="x-default" href="https://www.exemple.com/guide/" /></head>
La même liste, à l'identique, figure dans le <head> des pages fr-BE, en-GB et en-US. Seule la canonique change, puisque chaque version pointe vers elle-même. Ici, x-default désigne la page de sélection /guide/, pas la page d'accueil.
Sitemap XML avec xhtml:link
Le sitemap avec annotations xhtml:link devient la meilleure option pour des milliers d'URL, plusieurs gabarits ou un accès limité au <head>. Il impose de déclarer l'espace de noms xhtml en tête de fichier :
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>https://www.exemple.com/fr-fr/guide/</loc><xhtml:link rel="alternate" hreflang="fr-FR" href="https://www.exemple.com/fr-fr/guide/" /><xhtml:link rel="alternate" hreflang="fr-BE" href="https://www.exemple.com/fr-be/guide/" /><xhtml:link rel="alternate" hreflang="en-GB" href="https://www.exemple.com/en-gb/guide/" /><xhtml:link rel="alternate" hreflang="x-default" href="https://www.exemple.com/guide/" /></url></urlset>
Chaque version a son bloc <url> avec la liste complète, auto-référence comprise. Les URL déclarées doivent être exactement les canoniques indexables : même protocole, même slash final, aucun paramètre qui ne soit pas canonique.
En-tête HTTP pour les PDF
Pour un PDF ou un document servi sans HTML, la déclaration passe par l'en-tête HTTP Link:, configuré côté serveur. Les règles ne changent pas : chaque fichier liste toutes ses versions et lui-même, et chaque URL répond en 200 sans redirection. C'est la seule voie possible quand la ressource n'a pas de <head> et qu'aucun sitemap ne la couvre.
Réciprocité, auto-référence et x-default
Google traite les déclarations comme un cluster. Quatre règles conditionnent leur prise en compte, et une seule rupture peut faire ignorer tout ou partie du signal :
- Réciprocité : si A déclare B, B doit déclarer A avec le même ensemble de versions.
- Auto-référence : chaque page se cite elle-même dans sa propre liste.
- URL absolues et indexables : protocole et domaine complets, réponse 200, pas de
noindex, pas de redirection, pas de blocage par robots.txt. - Pages équivalentes : même intention, même produit ou même article. Relier une catégorie française à une page d'accueil belge casse le cluster.
Construire le mapping par gabarit
À grande échelle, la réciprocité ne se gère pas URL par URL. Construisez une table de correspondance par gabarit : catégories avec catégories, fiches produits avec fiches produits, articles avec articles. La génération des balises s'appuie ensuite sur cette table. Un correctif de gabarit répare des milliers de pages d'un coup, mais une erreur de gabarit les casse toutes. Déployez par étapes et contrôlez un échantillon avant chaque mise en production.
Utiliser x-default
x-default indique la page à servir quand aucune langue ni aucun pays déclarés ne correspondent à l'internaute : une page de sélection de langue, une page internationale neutre ou la version par défaut. Trois erreurs reviennent en audit :
- déclarer en
x-defaultune page qui est en réalité une version pays, ce qui brouille le signal ; - le faire pointer vers une page redirigée ou non indexable ;
- renvoyer, depuis une fiche produit ou un article, vers la page d'accueil plutôt que vers une page équivalente.
La valeur reste facultative : sans page neutre utile, on peut s'en passer.
Aligner les autres signaux : canonique, attribut lang, moteurs génératifs
Google croise hreflang avec les autres déclarations de la page sur sa langue et son statut. Quand elles se contredisent, c'est rarement hreflang qui l'emporte.
Une canonique auto-référente par version
La canonique de chaque version pointe vers elle-même. Si la page fr-BE se canonise vers fr-FR, vous envoyez deux messages contraires : « cette version compte » par hreflang, « ne l'indexez pas » par la canonique. Google tranche alors contre l'intention internationale et retient la page canonique. Même logique pour les alternates : ne déclarez que des URL qui sont leur propre canonique.
La canonique choisit l'URL à indexer parmi des doublons d'une même version ; hreflang relie des versions différentes et légitimes.
L'attribut lang et Bing
<html lang="fr-FR"> décrit la langue de la page elle-même, tandis que hreflang relie plusieurs versions entre elles. Gardez les deux alignés. Bing s'appuie plutôt sur la déclaration content-language et sur les signaux d'URL que sur hreflang : un attribut lang juste et une structure d'URL lisible servent donc les deux moteurs.
Il n'existe pas de balise <meta name="hreflang"> : seules les trois méthodes décrites plus haut sont lues.
Une version par langue pour les moteurs génératifs
ChatGPT, Perplexity, Gemini, les AI Overviews et AI Mode répondent dans la langue de la requête et citent des sources dans cette langue. Une version par langue, indexable et servie au bon marché, conditionne donc la possibilité d'être cité dans chaque langue. Les entités restent cohérentes d'une version à l'autre : même nom d'organisation, mêmes faits.
Les AI Overviews sont déployés dans 200 pays (Sebastien Vallat, 2026). AI Mode est disponible en France depuis l'été 2026, et d'autres repères figurent dans nos statistiques GEO. Le balisage de données structurées avec la propriété inLanguage complète hreflang en précisant la langue de chaque contenu.
Définir les clusters : pages équivalentes et cas limites
La plupart des clusters cassés viennent d'une question mal posée en amont : quelles pages existent dans quelles versions, et lesquelles sont équivalentes ? Répondez-y gabarit par gabarit.
Facettes, pagination et contenus partiellement traduits
Cinq cas limites demandent une règle explicite :
- Facettes et filtres : une version filtrée non indexable ne se déclare pas en alternate. Voir notre guide du SEO e-commerce.
- Pagination : ne reliez que des pages paginées strictement équivalentes, avec le même tri et les mêmes règles d'affichage.
- Blog partiellement traduit : les clusters incomplets sont acceptables, mais chaque cluster existant reste réciproque. Un article sans traduction ne porte pas de hreflang.
- Pages mixtes : une page à moitié traduite brouille la langue détectée.
- Pages non indexables : pages en
noindex, bloquées par robots.txt, tris temporaires et résultats de recherche interne restent hors cluster.
Pas de redirection automatique par IP
Rediriger selon l'adresse IP ou l'en-tête Accept-Language crée trois problèmes :
- Googlebot explore surtout depuis les États-Unis : redirigé, il ne voit jamais certaines versions ;
- l'internaute en voyage, sous VPN ou bilingue ne peut plus atteindre la version qu'il veut ;
- les URL perdent leur stabilité, puisque la même adresse renvoie un contenu différent selon le contexte.
Proposez plutôt un bandeau ou un sélecteur qui suggère la version adaptée, gardez des URL stables et laissez hreflang aiguiller dans les résultats. Ne bloquez pas non plus Googlebot par pays.
Les erreurs hreflang les plus fréquentes et leur correction
Les mêmes erreurs expliquent la majorité des hreflang ignorés. Le tableau les relie au symptôme observé et à la correction à appliquer :
Corrigez dans cet ordre, du plus bloquant au plus fin :
- Bloqueurs : 404 et 5xx,
noindex, robots.txt, redirections, canoniques vers une autre version. - Cohérence du cluster : réciprocité, auto-référence, versions manquantes, codes invalides.
- Qualité locale : pages réellement localisées (prix, livraison, mentions légales) et équivalence d'intention entre versions.
Contrôler les balises : Inspection de l'URL, crawler et lecture du code
Le rapport Ciblage international de Search Console, qui signalait notamment les balises de retour manquantes, a été retiré en 2022 avec l'outil de ciblage pays. À la date de rédaction, aucun rapport Google ne liste les erreurs hreflang et il n'existe pas de testeur hreflang officiel. Le contrôle combine trois approches.
Inspection de l'URL dans Search Console
L'Inspection de l'URL de Google Search Console montre, pour une page donnée, ce que Google a retenu. La méthode tient en quatre gestes :
- vérifier que la page est indexable et répond en 200 ;
- comparer la canonique déclarée et la canonique choisie par Google, car un écart signale un conflit ;
- contrôler dans le HTML rendu la présence des alternates attendus ;
- répéter l'opération sur la version équivalente pour confirmer la réciprocité.
Le rapport Performances filtré par pays complète ce contrôle : une page qui reçoit des impressions dans le mauvais pays trahit un mapping incohérent.
Crawler et lecture du code
Un test sur une URL isolée peut masquer un problème ailleurs dans le cluster. Un crawler extrait en masse les alternates, les statuts HTTP, les canoniques et l'indexabilité, puis repère les balises de retour manquantes. Complétez par une lecture du code source sur un échantillon par gabarit (catégories, produits, articles) et, le cas échéant, du sitemap.
Checklist avant mise en production
Avant de publier une nouvelle version ou un nouveau gabarit, passez ces sept points :
- codes ISO valides, langue en minuscules, pays en majuscules ;
- auto-référence présente sur chaque page ;
- réciprocité sur toutes les versions du cluster ;
- URL absolues, finales, en 200 et indexables ;
- canonique auto-référente sur chaque version ;
- même liste dans les balises et dans le sitemap si les deux coexistent ;
- clusters fondés sur des pages équivalentes,
x-defaultvers un sélecteur ou une version par défaut.
Selon votre situation
Selon l'étape où vous en êtes, ces ressources prolongent le sujet :
- Vous préparez un diagnostic complet du site, au-delà des seules versions linguistiques : notre méthode d'audit SEO.
- Vous voulez vérifier que les robots des moteurs et des IA accèdent à chaque version : notre guide du fichier robots.txt.
- Vous cherchez à être cité dans les réponses des IA, marché par marché : notre guide du Generative Engine Optimization.
- Vous reliez les versions entre elles dans la navigation et les contenus : notre guide du maillage interne.
Pour repérer à l'échelle d'un site les balises de retour manquantes, les canoniques contradictoires et les alternates redirigés ou en noindex, l'audit SEO & GEO 360° d'Incremys contrôle hreflang, canoniques et indexation pour chaque version, ainsi que la présence de la marque dans les IA par pays.
Questions fréquentes sur hreflang
Hreflang est-il un facteur de classement ?
Non. Hreflang ne fait pas monter une page dans les résultats. Il indique à Google quelle version servir selon la langue et le pays de l'internaute, et évite que des versions proches se concurrencent. Une page mal positionnée le reste avec des balises parfaites.
À quoi sert x-default ?
x-default désigne la page à afficher quand aucune version déclarée ne correspond à la langue ou au pays de l'internaute. Il pointe vers une page de sélection de langue ou une version par défaut équivalente, jamais vers une page redirigée, non indexable ou sans rapport. Sa déclaration reste facultative.
Comment vérifier hreflang sans rapport dans Search Console ?
En combinant trois contrôles. L'Inspection de l'URL montre la canonique choisie par Google et le HTML rendu d'une page. Un crawler extrait en masse les alternates, les statuts et les canoniques pour repérer les balises de retour manquantes. La lecture du code sur un échantillon par gabarit confirme le résultat.
Faut-il une canonique auto-référente avec hreflang ?
Oui. Chaque version se canonise vers elle-même et déclare les autres en alternate. Une canonique qui pointe vers une autre version contredit hreflang : Google indexe la page canonique et la version concernée disparaît des résultats de son marché. Chaque URL déclarée doit être sa propre canonique.
Faut-il écrire fr ou fr-FR ?
Les deux sont valides. Le code fr cible tous les francophones, quel que soit leur pays ; fr-FR cible la France. Utilisez la langue seule quand l'offre est identique partout, et ajoutez le pays quand les prix, la livraison ou les conditions diffèrent. Les deux niveaux peuvent coexister dans un cluster.
Bing utilise-t-il hreflang ?
Bing s'appuie plutôt sur la déclaration content-language et sur les signaux d'URL que sur hreflang. Pour couvrir les deux moteurs, gardez un attribut lang juste dans la balise html, une structure d'URL qui rend la langue et le pays lisibles, et des balises hreflang complètes pour Google.
Faut-il des balises hreflang sur un blog partiellement traduit ?
Uniquement sur les articles qui existent en plusieurs versions. Un article sans traduction ne porte pas de hreflang ; un article traduit liste ses versions et lui-même, avec réciprocité. Des clusters incomplets sont acceptables si chaque cluster existant relie de vraies traductions équivalentes.

%2520-%2520blue.jpeg)

.jpeg)
.jpeg)
.avif)