SEO Technique

Comment configurer correctement le hreflang pour un site multilingue

75 % des sites multilingues ratent leur hreflang. Après avoir servi du contenu espagnol aux Québécois pendant six semaines, j'ai écrit le guide que j'aurais aimé lire.

Comment configurer correctement le hreflang pour un site multilingue

75 % des sites multilingues ont une implémentation hreflang cassée. Ce chiffre vient d'une analyse SEMrush de 2018, et franchement, quand je vois les backlinks que je reçois encore aujourd'hui de sites qui se plantent sur des erreurs basiques, je pense que rien n'a vraiment changé.

J'ai migré mon propre blog vers une structure à trois langues il y a quatre ans. Je pensais avoir tout bon. Résultat : Google m'a servi du contenu espagnol à des visiteurs québécois pendant six semaines avant que je comprenne ce qui clochait. Six semaines.

Donc voilà. Cet article, c'est la procédure que j'aurais aimé lire à l'époque.

Points clés à retenir

  • Le hreflang doit être réciproque : chaque version pointe vers toutes les autres, y compris elle-même.
  • Trois méthodes d'implémentation existent (balises HTML, sitemap XML, en-têtes HTTP), et elles ne se valent pas selon votre contexte technique.
  • L'auto-référence est obligatoire. L'oublier, c'est la première cause de dysfonctionnement.
  • Un code de langue seul (ex. fr) cible tous les francophones ; un code combiné (ex. fr-CA) cible une région précise.
  • La balise x-default sert de page de repli quand aucune version ne correspond à la langue de l'internaute.
  • Tester avec l'inspection d'URL de la Search Console reste le seul moyen fiable de valider, parce qu'aucune erreur ne s'affiche côté navigateur.

Ce que fait vraiment le hreflang (et ce qu'il ne fait pas)

Le hreflang n'est pas une balise magique qui redirige automatiquement vos visiteurs. C'est une indication. Google s'en sert pour choisir la version à afficher dans les résultats de recherche, pas pour l'internaute qui tape l'URL à la main.

Beaucoup de développeurs confondent avec la détection navigateur. Non. Si quelqu'un arrive directement sur /es/ depuis un lien, le hreflang ne le renverra pas vers /fr/. C'est un signal destiné aux moteurs, point.

Un rôle purement SEO, pas UX

Concrètement, il résout trois problèmes distincts :

  • Il évite que Google considère vos versions traduites comme du duplic content. Deux pages en langue différente, ce n'est pas la même page.
  • Il empêche la mauvaise version de s'afficher pour un utilisateur d'un pays donné (un Allemand qui tombe sur votre page anglaise alors qu'une version allemande existe).
  • Il consolide les signaux : chaque version se classe sur son marché local plutôt que de se cannibaliser.

Le revers de la médaille, c'est qu'un hreflang mal posé fait l'inverse de ce qu'on veut. J'ai vu un site se faire désindexer sa version néerlandaise sur Google.be pendant deux mois. La cause ? Un href pointant vers une URL en 404.

La règle que tout le monde oublie : l'auto-référence

Chaque bloc hreflang sur une page doit lister la page elle-même parmi les alternatives. Oui, celle où vous vous trouvez.

Si votre page française liste seulement les versions en et es mais jamais fr, Google comprend que la page française ne fait pas partie du groupe. Et là, tout s'effondre.

Je l'ai fait cette erreur. Sur 200 pages. Le correctif m'a pris un script Python et un après-midi entier, mais j'aurais préféré le savoir avant.

Les trois méthodes d'implémentation, comparées

Il existe trois façons de déclarer vos alternances linguistiques. Vous pouvez les combiner, mais c'est rarement utile.

Les trois méthodes d'implémentation, comparées
Image by Firmbee from Pixabay

1. Balises HTML dans le <head>

C'est la méthode la plus répandue, et pour un site de moins de 50 pages, c'est aussi la plus simple à maintenir à la main :

<link rel="alternate" hreflang="fr-FR" href="https://exemple.fr/page" />
<link rel="alternate" hreflang="en-US" href="https://exemple.com/page" />
<link rel="alternate" hreflang="es-ES" href="https://exemple.es/pagina" />
<link rel="alternate" hreflang="x-default" href="https://exemple.com/page" />

Avantage : visible directement dans le code source, facile à auditer. Inconvénient : sur un catalogue e-commerce de 10 000 produits multiplié par 5 langues, vous devenez fou.

2. Sitemap XML

Ici, les balises vivent dans le sitemap, pas dans le HTML :

<url>
  <loc>https://exemple.fr/page</loc>
  <xhtml:link rel="alternate" hreflang="fr-FR" href="https://exemple.fr/page" />
  <xhtml:link rel="alternate" hreflang="en-US" href="https://exemple.com/page" />
  <xhtml:link rel="alternate" hreflang="es-ES" href="https://exemple.es/pagina" />
</url>

Pour du volume, c'est la voie royale. Un seul fichier regroupe tout, et vous le régénérez automatiquement à chaque déploiement. C'est ce que j'utilise aujourd'hui sur mon site, quatorze langues, environ 900 URL uniques. Le sitemap pèse 340 Ko et se met à jour via un cron nocturne.

3. En-têtes HTTP Link

Réservé aux fichiers non-HTML : PDF, vidéos, ressources binaires. La syntaxe ressemble à ceci :

Link: <https://exemple.fr/fichier.pdf>; rel="alternate"; hreflang="fr-FR"

Honnêtement, je ne l'ai jamais déployé en production. Le cas d'usage est trop niche pour la plupart des sites.

Quelle méthode choisir ?

MéthodeIdéal pourDifficulté de maintenanceFonctionne sur PDF ?
Balises HTMLPetits sites, moins de 50 pagesFaibleNon
Sitemap XMLGros volumes, e-commerceMoyenne (automatisable)Non
En-têtes HTTPRessources non-HTMLÉlevéeOui

Mon conseil : si vous dépassez 100 URL multilingues, passez au sitemap. Ne cherchez pas à bricoler du HTML sur 3 000 pages.

Les erreurs qui plombent réellement votre setup

Voici celles que je rencontre le plus souvent lors d'audits, par ordre de fréquence.

Les erreurs qui plombent réellement votre setup
Image by RyanMcGuire from Pixabay

Le manque de réciprocité

Si la page A pointe vers B, la page B doit pointer vers A. Google appelle ça la confirmation bidirectionnelle. Dans les faits, une relation non réciproque est ignorée purement et simplement.

J'ai audité un site de tourisme l'an dernier : la version française listait cinq langues, la version italienne en listait trois, la version anglaise aucune. Résultat, seuls les couples réciproques fonctionnaient. Trois langues sur cinq étaient invisibles sur Google.

Confondre code langue et code pays

Le format standard suit la norme ISO 639-1 pour la langue, couplée à ISO 3166-1 Alpha 2 pour la région.

  • fr → tout contenu francophone, peu importe le pays
  • fr-FR → version destinée à la France uniquement
  • fr-CA → version québécoise
  • fr-BE → version belge

Piège classique : utiliser fr-FR alors que vous ciblez aussi la Belgique, la Suisse et le Québec. Vous excluez mécaniquement tout ce beau monde.

Oublier la balise x-default

Cette balise définit la version de repli quand aucune autre ne correspond à la langue de l'internaute. Sans elle, Google choisit lui-même. Et il choisit souvent mal.

Sur mon blog, l'x-default pointe vers la version anglaise. Pas parce qu'elle est supérieure, mais parce que c'est la langue la plus largement comprise par défaut. C'est un choix subjectif, mais il tient la route.

Comment vérifier que tout fonctionne

Il n'existe pas d'outil qui vous dit "bravo, ton hreflang est parfait". Désolé, la réalité est plus laborieuse.

Ce qui marche réellement, dans l'ordre :

  1. L'inspection d'URL dans la Search Console sur une page de chaque langue. Elle affiche les erreurs de type "valeur hreflang incorrecte" ou "aucun renvoi" quand un lien est manquant.
  2. Un crawler type Screaming Frog en version gratuite pour scraper les balises et détecter les codes invalides.
  3. Un test manuel : modifiez votre en-tête Accept-Language dans Chrome via une extension, rechargez la SERP depuis un VPN, et observez quelle version remonte.
  4. Le rapport "Pages" de la Search Console, onglet "Autres", qui signale parfois les cas de mauvaise sélection canonique liés à un hreflang défaillant.

Mes deux dernières années m'ont appris une chose : ne jamais faire confiance au hreflang avant de l'avoir vu dans une SERP. Les outils vous mentent, ou plus exactement, ils vous confirment que le code est présent. Pas qu'il est correct.

Le vrai problème n'est pas technique

La plupart des erreurs hreflang que je vois ne viennent pas d'une mauvaise compréhension du code. Elles viennent de la gouvernance.

Quand l'équipe française met à jour sa page et oublie de prévenir l'équipe allemande, la réciprocité se casse. Quand un nouveau marché s'ouvre et qu'on ajoute le Brésil sans toucher aux autres versions, l'auto-référence saute. Ce n'est pas un bug, c'est un process.

Sur mon propre site, j'ai fini par bloquer les modifications de balises hreflang dans un fichier de configuration centralisé. Plus personne ne les touche directement dans le template. Une décision chiante à mettre en place, mais qui a éliminé 90 % de mes erreurs en six mois.

Si vous ne devez retenir qu'une chose : le hreflang est un système. Chaque page dépend des autres. Le jour où une seule se désynchronise, c'est l'ensemble du groupe qui perd sa cohérence aux yeux de Google.

Cédric Renard

Cédric Renard

Cédric Renard est journaliste spécialisé dans le SEO technique, un champ qu'il explore depuis plus de huit ans. Son travail couvre notamment l’optimisation des architectures de sites, la gestion du crawl et l’impact des mises à jour d’algorithmes sur la performance éditoriale. Il s’attache à rendre accessibles les évolutions techniques du référencement aux professionnels de la publication en ligne.

Voir tous les articles →