Référencement Naturel

Comment utiliser les balises hreflang pour un site multilingue sans erreur

Un "nettoyage" du head HTML fait disparaître la version canadienne-française d'un site des résultats Google canadiens. En cause : les balises hreflang, mal comprises et souvent mal configurées. Voici pourquoi elles sont la balise la plus rentable — ou la plus coûteuse — d'un site multilingue.

Comment utiliser les balises hreflang pour un site multilingue sans erreur

Un client m'appelle un mardi matin, paniqué : sa version canadienne-française vient de disparaître des résultats Google. Pas désindexée, non. Juste remplacée par la version française de France dans les recherches canadiennes. Deux semaines plus tôt, quelqu'un dans son équipe avait "nettoyé" le head HTML et supprimé une quinzaine de balises qui "ne servaient à rien".

Parmi elles, les balises hreflang. Le truc que personne ne comprend vraiment, que tout le monde copie mal, et qui casse silencieusement.

Ce n'est pas un sujet sexy. Mais si vous gérez un site multilingue, c'est probablement la balise la plus rentable que vous puissiez configurer correctement — ou la plus coûteuse à rater.

Points clés à retenir

  • Une balise hreflang indique à Google quelle version linguistique ou régionale servir à quel public.
  • La règle de réciprocité est non négociable : chaque page doit lister toutes les autres, y compris elle-même.
  • Trois méthodes d'implémentation existent : HTML head, sitemap XML, en-têtes HTTP.
  • Une erreur de hreflang ne provoque pas de pénalité — elle provoque du silence, ce qui est pire.
  • x-default sert de page de secours quand aucune version ne correspond à la langue de l'internaute.

Comment fonctionne vraiment une balise hreflang sur un site multilingue

Imaginez que vous ayez trois versions d'une même page produit : une en français de France, une en français du Canada, une en anglais. Le contenu est quasi identique. Pour Googlebot, c'est du contenu dupliqué à 90 %. Sans signal, le moteur en choisit une au hasard et l'affiche partout. Souvent la mauvaise.

La balise hreflang existe pour régler ce problème. Elle ne dit pas "cette page est en français". Elle dit : "cette page est la variante française de France, et voici où trouver ses cousines."

La structure exacte d'un bloc hreflang

Voici le bloc que j'utilise sur une page française de France, avec ses deux sœurs :

<link rel="alternate" hreflang="fr-fr" href="https://exemple.fr/produit" />
<link rel="alternate" hreflang="fr-ca" href="https://exemple.ca/produit" />
<link rel="alternate" hreflang="en" href="https://exemple.com/product" />
<link rel="alternate" hreflang="x-default" href="https://exemple.com/product" />

Trois choses à observer. D'abord, la page se référence elle-même dans son propre bloc. Ensuite, le code pays est en minuscules (fr-fr, pas fr-FR — Google tolère les majuscules mais l'usage veut le minuscule). Enfin, chaque page cible doit contenir exactement le même bloc, à l'identique. C'est ce qu'on appelle la réciprocité.

Et c'est là que tout casse. Une page qui pointe vers une autre sans que l'autre ne pointe en retour est ignorée. Google ne la lit pas. Je l'ai appris à mes dépens sur un projet e-commerce : j'avais déployé les balises en trois vagues successives, un pays à la fois. Résultat : pendant six semaines, aucune relation n'était complète, et Google a servi la version française à tout le monde. Les Canadiens voyaient les prix en euros.

Langue seule ou langue + région ?

La règle :

  • fr = français, sans distinction géographique
  • fr-fr = français de France
  • fr-ca, fr-be, fr-ch = variantes régionales
  • en = anglais générique (utile pour les marchés anglophones multiples)

Mon conseil : ne multipliez pas les variantes régionales sans raison commerciale. Si votre contenu est identique pour la Belgique et la France, servez fr aux deux. J'ai vu des sites avec huit versions "françaises" différentes dont le contenu était mot pour mot le même. Google a fini par ignorer le bloc entier, jugeant le signal incohérent. Personnellement, c'est l'erreur que je vois le plus souvent.

Trois méthodes d'implémentation, et laquelle choisir

Toutes les balises hreflang ne se valent pas selon le contexte technique. Voici le comparatif que j'aurais aimé trouver il y a quelques années.

Méthode Quand l'utiliser Limite
HTML <head> Sites de quelques centaines de pages multilingues Ne marche pas pour les PDF ou fichiers non-HTML
Sitemap XML Gros catalogues, plusieurs milliers d'URL Déploiement plus lourd à maintenir
En-têtes HTTP Fichiers PDF, vidéos, contenus non-HTML Nécessite un accès serveur, difficile à auditer

Méthode 1 : dans le HTML

La plus répandue. Une balise <link rel="alternate"> par variante, dans le <head>. Avantage : visible dans le code source, facile à auditer avec un crawler.

Méthode 2 : dans le sitemap XML

Chaque URL porte un bloc xhtml:link qui liste les alternatives. Ce format est plus verbeux mais centralise l'information. Je l'utilise quand les équipes techniques ne veulent pas toucher au template HTML — c'est souvent plus simple à faire valider.

Méthode 3 : via les en-têtes HTTP

Indispensable pour les PDF. Un Link: header envoyé avec la réponse HTTP fait le même travail qu'une balise HTML. Mais franchement, je ne recommande cette approche que si vous n'avez pas le choix : un en-tête mal configuré est invisible dans le navigateur, donc impossible à débugger sans outils dédiés.

À quoi sert x-default, concrètement

Une question que je reçois souvent : "Ma page est en français et en anglais. Que faire pour un visiteur japonais ?"

À quoi sert x-default, concrètement

Réponse : x-default. Cette valeur indique la page de secours quand aucune autre ne correspond à la langue de l'internaute. Souvent, il s'agit d'un sélecteur de langue global, ou de la version anglaise par défaut.

Sans x-default, Google pioche au hasard. Avec, vous contrôlez l'expérience pour 100 % des visiteurs, y compris ceux qui parlent coréen et que vous ne ciblez pas explicitement. Ce n'est pas indispensable — mais c'est bon marché, et ça évite des sauts de page absurdes.

Comment auditer et diagnostiquer ses erreurs hreflang

Le problème avec hreflang, c'est que quand ça ne marche pas, rien ne s'affiche en rouge. Pas d'alerte, pas de pénalité. Juste un trafic qui ne décolle pas sur certains marchés.

Comment auditer et diagnostiquer ses erreurs hreflang

Voici ma procédure, celle que j'applique systématiquement :

  1. Ouvrir la Search Console, rapport "Ciblage international" — Google y liste les erreurs détectées, page par page.
  2. Lancer un crawl avec Screaming Frog (ou équivalent) et exporter la colonne hreflang. Filtrer les pages sans autopointage.
  3. Vérifier la réciprocité : pour chaque page A qui pointe vers B, s'assurer que B pointe vers A.
  4. Contrôler les codes de langue avec un validateur dédié (il en existe plusieurs, gratuits).

Sur un audit récent, j'ai trouvé que sur 340 pages multilingues, 78 présentaient au moins un défaut hreflang — majoritairement des codes pays écrits en majuscules, ou des blocs incomplets dans les templates produits générés dynamiquement.

Les erreurs que je vois systématiquement (et que j'ai faites)

Avouons-le : personne ne configure hreflang parfaitement du premier coup. Voici les pièges classiques.

Oublier l'autopointage

La page doit se citer elle-même dans son bloc. Sinon Google considère le bloc comme incomplet et peut l'ignorer. C'est contre-intuitif, mais obligatoire.

Mélanger plusieurs méthodes sur le même site

HTML pour une section, sitemap pour une autre, sans cohérence. Techniquement possible, mais ingérable à maintenir. Choisissez une méthode par site et tenez-la.

Canonical qui pointe ailleurs

Une canonical cross-langue sur une page hreflang annule le signal. La canonical doit être auto-référente pour chaque version linguistique. J'ai vu un site où la page canadienne-française avait une canonical vers la française — Google ne l'a jamais indexée. Le client a mis huit mois à comprendre pourquoi son trafic canadien était à zéro.

Servir le même contenu sous des codes différents

Si vous déclarez fr-be mais que le contenu est strictement identique à fr-fr, mieux vaut déclarer fr pour les deux ou ne cibler qu'un seul pays. Google accepte les variantes régionales quand elles ont une substance (prix en devise locale, frais de port, mentions légales). Sinon, le signal devient du bruit.

Comment hreflang s'articule avec les autres signaux

Un site multilingue bien configuré empile trois couches :

  • hreflang : quel public servir.
  • canonical : quelle URL est la version de référence pour un contenu donné.
  • sitemap : quand Google doit crawler.

Ces trois signaux se complètent, ils ne s'opposent pas. Une page française de France a : sa propre canonical (auto-référente), un bloc hreflang complet listant ses trois cousines, et sa présence dans le sitemap avec les entrées xhtml:link. Une fois ce trio en place, vous dormez tranquille.

Mais attention : hreflang ne remplace pas une traduction réelle. Si votre version "allemande" est un Google Translate non relu, le contenu restera mauvais, quel que soit le signal technique. Ne l'oubliez pas.

Le cas de la cannibalisation multilingue

Quand fr-fr, fr-be et fr-ca présentent des pages quasi identiques avec les mêmes mots-clés, Google peut en ignorer certaines. Le remède : différencier le contenu sur au moins un axe significatif (devise, disponibilité produit, exemples locaux). À défaut, regrouper sous un seul fr et laisser le sélecteur de langue faire le tri côté utilisateur.

Un de mes clients avait trois versions "françaises" qui se positionnaient chacune sur des requêtes légèrement différentes. On a consolidé en une seule version fr avec redirections 301. Résultat : trafic français consolidé en hausse de 40 % sur trois mois, parce que les signaux dispersés ne se neutralisaient plus entre eux.

Le vrai piège, c'est de croire que hreflang est une solution miracle. Ce n'est qu'un filtre. Si le contenu derrière est du copier-coller, aucune balise au monde ne vous sauvera.

La checklist que je déroule à chaque projet

Ce que vous devez vérifier avant de considérer votre implémentation terminée :

  1. Chaque page multilingue contient un bloc hreflang complet (toutes les variantes + autopointage).
  2. Les codes langue sont en minuscules, avec tiret, pas de souligné.
  3. Les URL sont absolues (https://…), pas relatives.
  4. La canonical de chaque page pointe vers elle-même.
  5. La réciprocité est vérifiée sur un échantillon de pages (au moins 20 %).
  6. Une valeur x-default existe si vous ciblez plusieurs marchés.
  7. La Search Console ne remonte aucune erreur dans "Ciblage international".

Et une dernière chose : documentez votre implémentation. Sur un projet à trois développeurs qui se relaient, la règle de réciprocité sera oubliée par le troisième. J'ai perdu une migration entière comme ça. Un fichier README avec le bloc type et la liste des variantes, c'est trente minutes d'écriture pour éviter trois semaines de casse silencieuse.

Hreflang n'est pas une balise excitante. Elle ne génère pas de trafic par magie. Mais elle garantit que chaque visiteur atterrit sur la bonne version de votre site — et quand on gère dix marchés, ça change tout. La vraie question n'est pas "faut-il l'utiliser", mais "combien de temps votre équipe tiendra-t-elle sans règles écrites". La réponse, en général, ne plaide pas en votre faveur.

Guillaume Leroux

Guillaume Leroux

Guillaume Leroux est journaliste spécialisé dans les techniques de référencement naturel et le SEO technique. Depuis plus de dix ans, il couvre l’évolution des algorithmes, l’optimisation des architectures de sites et les aspects avancés du balisage sémantique. Ses analyses s’appuient sur une expérience acquise au sein de rédactions traitant de sujets numériques et technologiques.

Voir tous les articles →