Atelier Tech for Retail 2025 : Du SEO au GEO - gagner en visibilité à l’ère des moteurs génératifs

Back to blog

Hreflang : le guide d'implémentation, les erreurs à éviter et comment les vérifier

SEO

Découvrez Incremys

Le plateforme SEO Next Gen 360°

Demande de demo
Mis à jour le

24/10/2026

Chapitre 01

Example H2
Example H3
Example H4
Example H5
Example H6

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-BE pour une requête depuis la Belgique, la page en-GB depuis 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-CH sur 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 :

 

CodeSignificationValide ?
frfrançais, quel que soit le paysOui
fr-FRfrançais pour la FranceOui
fr-BEfrançais pour la BelgiqueOui
es-419espagnol pour l'Amérique latine (code régional UN M.49)Oui
x-defaultpage de sélection ou version par défautOui
en-UK« UK » n'existe pas en ISO 3166-1 : le Royaume-Uni s'écrit GBNon, utiliser en-GB
ukukrainien, et non le Royaume-UniNon pour cibler le Royaume-Uni
es-LATAMcode inventé, ignoré par GoogleNon, utiliser es-419
FR seulun pays sans langueNon, la langue est obligatoire

 

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.

 

MéthodeQuand la choisirLimiteExemple
Balises dans le <head>site de taille modeste, accès direct aux gabaritsalourdit chaque page<link rel="alternate" hreflang="fr-BE" href="…/fr-be/" />
Sitemap XMLgros catalogue, nombreux gabarits, accès limité au <head>invisible à la lecture de la page<xhtml:link rel="alternate" hreflang="fr-BE" href="…" />
En-tête HTTP Link:PDF et fichiers servis sans HTMLconfiguration serveurLink: <https://www.exemple.com/fr-be/guide.pdf>; rel="alternate"; hreflang="fr-BE"

 

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-default une 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 :

 

ErreurSymptômeCorrection
Balise de retour manquante (A cite B, B ne cite pas A)la relation est ignorée, la mauvaise version s'affiche dans un paysgénérer la liste complète depuis une même table de correspondance
Auto-référence absentecluster pris en compte en partie seulementajouter la page elle-même dans sa propre liste
Code invalide (en-UK, es-LATAM, uk pour le Royaume-Uni)la balise est ignorée, la version n'est ciblée nulle partremplacer par en-GB ou es-419
Langue seule alors que les pays diffèrentla version belge, aux prix belges, s'affiche en Franceajouter le pays : fr-FR, fr-BE
Alternate vers une URL en 3xx, 404 ou 5xxcluster fragilisé, relation rompuedéclarer l'URL finale en 200, retirer les alternates morts
Alternate vers une page en noindex ou bloquée par robots.txtpage déclarée dans le cluster mais impossible à indexersortir la page du cluster ou lever le blocage
Canonique vers une autre versionseule la version canonique reste indexéecanonique auto-référente sur chaque version
Balises et sitemap incohérentslistes différentes selon la source, diagnostic impossiblegarder une méthode principale, aligner l'autre ou la supprimer
x-default vers la page d'accueil depuis une page profondela page d'accueil est servie à la place d'une page équivalentepointer vers un sélecteur ou une version par défaut équivalente

 

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-default vers 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.

Découvrez d’autres articles

See all

Le SEO et GEO nouvelle génération commence ici

Complétez le formulaire pour que l’on puisse vous contacter.

Le SEO nouvelle génération
est en marche !

Merci pour votre demande, nous revenons vers vous rapidement.

Oops! Something went wrong while submitting the form.