Site multilingue : bien référencer chaque langue avec hreflang
Site multilingue et SEO : écrire les balises hreflang, organiser les adresses par langue et éviter les erreurs qui les font ignorer par Google.
Un site multilingue pose un problème simple à Google : quand un internaute de Madrid cherche votre activité, quelle version lui montrer, la française ou l’espagnole ? Sans indication claire, le moteur devine, et il se trompe parfois. La balise hreflang règle ce problème : elle dit à Google « cette page existe aussi en espagnol, la voici ». Ce guide explique comment l’écrire, comment organiser les adresses par langue et quelles erreurs rendent ce travail invisible.
À quoi sert hreflang sur un site multilingue
Hreflang sert à faire sortir la bonne version linguistique d’une page dans les résultats de Google, selon la langue et le pays de l’internaute. Sans elle, Google peut classer votre page française devant une personne qui cherche en allemand, alors que la version allemande existe.
Concrètement, c’est un attribut ajouté à un lien <link rel="alternate" hreflang="...">. Google le lit et comprend que vos pages en français, en anglais et en italien sont le même contenu, traduit. Il choisit alors la version adaptée à chaque recherche au lieu de les voir comme des doublons.
Un exemple générique : un hôtel de Lyon avec un site en français et en anglais. Un voyageur de Londres tape le nom de l’hôtel dans Google. Avec hreflang, Google lui propose la page anglaise. Sans hreflang, il peut tomber sur la page française, ne rien comprendre et repartir vers un site de réservation. Hreflang ne traduit rien et ne fait pas « monter » un site : elle aiguille, c’est tout.
Comment écrire les balises hreflang
La balise se compose d’un code de langue, éventuellement suivi d’un code de pays, et de l’adresse complète de la page. Selon Google Search Central, la langue suit la norme ISO 639-1 (deux lettres, comme fr ou en) et le pays la norme ISO 3166-1 Alpha 2 (comme FR, BE ou CH). Un code pays seul n’est pas accepté.
Voici l’en-tête d’une page française qui existe aussi en anglais et en allemand :
<link rel="alternate" hreflang="fr" href="https://www.exemple.fr/fr/services.html" />
<link rel="alternate" hreflang="en" href="https://www.exemple.fr/en/services.html" />
<link rel="alternate" hreflang="de" href="https://www.exemple.fr/de/services.html" />
<link rel="alternate" hreflang="x-default" href="https://www.exemple.fr/en/services.html" />
Quelques règles de lecture :
frcible tous les francophones, où qu’ils soient.fr-BEcible les francophones de Belgique. N’ajoutez le pays que si vous avez vraiment des pages différentes par pays (prix, livraison, mentions légales).x-defaultdésigne la page à montrer quand aucune langue ne correspond aux réglages du visiteur. On y met souvent la page anglaise ou une page de choix de langue.- Le même bloc doit apparaître sur les trois versions. La page anglaise liste aussi la française, l’allemande, elle-même et le x-default.
Trois endroits possibles
Google accepte trois méthodes, et une seule suffit :
- Les balises HTML dans le
<head>, comme ci-dessus. La plus courante pour un site vitrine. - Un en-tête HTTP
Link:envoyé par le serveur. Utile pour les fichiers sans HTML, comme un PDF de catalogue en plusieurs langues. - Le sitemap XML, avec un élément
<xhtml:link>par version sous chaque<url>. Pratique sur un gros site, car tout est au même endroit. Google précise que ces éléments ne comptent pas dans la limite d’adresses du sitemap. Notre guide sur le sitemap XML et sa création part de zéro.
Sur WordPress, Webflow ou Shopify, une extension ou un réglage de langue génère ces balises. Vérifiez quand même le code source d’une page.
Les erreurs qui font ignorer hreflang
L’erreur la plus fréquente est l’absence de retour : la page française pointe vers l’anglaise, mais l’anglaise ne pointe pas vers la française. Google est net sur ce point : « si deux pages ne pointent pas l’une vers l’autre, les balises sont ignorées ». Tout le bloc tombe, pas seulement le lien manquant.
Les autres causes classiques :
- La page ne se liste pas elle-même. Chaque version doit figurer dans sa propre liste, dit Google. Beaucoup de thèmes l’oublient.
- Une adresse relative.
/en/services.htmlne suffit pas. Google exige des adresses complètes, avec le protocole :https://www.exemple.fr/en/services.html. - Un mauvais code.
fr-FRA,en-UKoufrancaisne correspondent à aucune norme. Google ignore alors cette partie de l’annotation. Le Royaume-Uni s’écritGB. - Une page bloquée ou redirigée. Si la version anglaise renvoie un 404, une redirection ou un
noindex, le lien vers elle ne sert à rien. - Une canonical qui contredit hreflang. Google demande, avec hreflang, une canonical « dans la même langue ». Une page anglaise dont la canonical pointe vers la page française dit à Google : « ne gardez pas ma version ». Si cette balise est nouvelle pour vous, lisez à quoi sert la balise canonical et quand l’utiliser.
L’ancien rapport « Ciblage international » de la Search Console a été retiré, mais Google indique qu’il continue d’utiliser les balises hreflang. Pour vérifier, comparez le code source de deux versions d’une même page, ou passez un robot comme Screaming Frog sur tout le site.
Comment organiser les adresses par langue
Pour une PME, un dossier par langue sur un seul domaine est le choix le plus simple et le moins cher : exemple.fr/fr/, exemple.fr/en/. Google présente quatre structures possibles, avec leurs avantages et leurs limites :
| Structure | Exemple | Ce que dit Google | Pour qui |
|---|---|---|---|
| Domaine par pays | exemple.de | Ciblage géographique clair, mais coûteux, plus d’infrastructure | Entreprises déjà installées dans plusieurs pays |
| Sous-domaine | de.exemple.com | Facile à mettre en place, mais le visiteur ne reconnaît pas toujours le ciblage dans l’adresse | Sites techniques, applications |
| Sous-dossier | exemple.com/de/ | Facile à mettre en place, peu d’entretien | La plupart des PME |
| Paramètre | exemple.com?loc=de | Non recommandé | Personne |
Le domaine par pays a un sens quand vous avez une activité distincte dans chaque pays : une équipe, des prix, des mentions légales locales. Pour un cabinet, un hôtel ou un artisan qui veut accueillir des clients étrangers, le sous-dossier fait le travail et garde toute l’autorité du site sur un seul nom. Notre guide pour décider entre un .com et un .fr aborde la question internationale.
Quel que soit le choix, gardez une seule langue par adresse. Google explique qu’il détecte mieux la langue d’une page quand le contenu et la navigation sont dans une seule langue, sans traductions côte à côte.
Les pièges d’un site multilingue qui n’ont rien à voir avec hreflang
Le piège numéro un est la redirection automatique selon le pays du visiteur. Google conseille de l’éviter et recommande à la place des liens visibles vers les autres versions de la page. Un robot renvoyé de force vers la version anglaise ne verra jamais vos pages françaises. Et un Français en déplacement à Berlin n’a pas envie de lire votre site en allemand.
Le deuxième piège est la traduction automatique mise en ligne telle quelle. Google met en garde contre les pages où du texte standard traduit se mélange à du contenu dans une seule langue : le même contenu peut apparaître plusieurs fois dans les résultats. Une traduction automatique peut servir de brouillon, à condition qu’une personne qui parle la langue la relise.
Le troisième piège est de traduire la moitié du site. Mieux vaut une version anglaise courte et complète (accueil, services, contact) qu’une grande version pleine de trous. Si deux versions partagent de larges blocs identiques, notre article sur le contenu dupliqué et comment l’éviter explique comment Google réagit.
Et Bing, et les assistants IA ?
Bing s’appuie d’abord sur la balise content-language. Sur son blog officiel, Bing indique qu’il lit la méta <meta http-equiv="content-language" content="fr-fr"> dans l’en-tête, puis l’attribut lang de <html>, et qu’il regarde aussi la langue du texte, l’extension du domaine et l’emplacement du serveur. Ajouter cette méta ne coûte rien et ne gêne pas Google.
Pour les assistants IA (ChatGPT, Perplexity, Google AI), il n’existe pas de balise dédiée aux langues. Ils s’appuient en bonne partie sur les index des moteurs classiques, donc sur le travail décrit plus haut. Une version anglaise propre et indexée a plus de chances d’être reprise quand une question est posée en anglais.
Ce que fait l’agence Resolve
Quand l’agence Resolve (Re:solve) construit un site en plusieurs langues, nous posons hreflang dès la maquette, pas en fin de projet. Chaque page reçoit un bloc généré à partir de la liste des langues, avec un x-default choisi avec vous, une canonical par version et un sitemap qui reprend les mêmes liens. Notre propre site est publié en six langues avec cette méthode.
Notre avis : pour une TPE ou une PME, deux ou trois langues bien faites valent mieux que six langues à moitié traduites. Et la langue la plus rentable à ajouter est rarement celle qu’on imagine. Un restaurant parisien reçoit peut-être plus d’Espagnols que d’Anglais : vos statistiques de visite le disent avant toute intuition.
Si vous doutez des balises de votre site multilingue, notre analyse gratuite de site repère les problèmes techniques visibles, et nous regardons le détail des hreflang avec vous ensuite.
Questions fréquentes
Faut-il un hreflang par pays ou par langue ?
Par langue dans la plupart des cas. Le code pays ne sert que si vous avez des pages différentes selon le pays, par exemple des prix en francs suisses pour fr-CH et en euros pour fr-FR. Un site qui a une seule version française pour tous les francophones écrit simplement fr.
Hreflang améliore-t-il le classement de mon site ?
Non, pas directement. Hreflang aide Google à montrer la bonne version à la bonne personne et évite que vos traductions soient prises pour des copies. Le classement dépend ensuite de la qualité de chaque version : contenu, vitesse, liens.
Mon site n’est qu’en français, dois-je m’en occuper ?
Non. Hreflang ne sert que s’il existe plusieurs versions d’une même page. Vérifiez simplement que l’attribut lang="fr" est présent sur la balise <html>, et consacrez votre temps au contenu.