Command Palette

Search for a command to run...

Générateur Hreflang : obtenez vos balises de référencement internationales correctement pour la première fois

Générateur Hreflang : obtenez vos balises de référencement internationales correctement pour la première fois

T
Toolz Team
|Aug 23, 2026|20 min Lire

Fait partie de la collection Outils de référencement

J'ai perdu un après-midi solide à cause d'un hreflang une fois Un client avait un site en anglais et en français, divisé en deux /en/ et /fr/[TRADUCTION] ?, et leurs pages françaises ne se classaient tout simplement pas en France - Google continuait de faire surface sur la version anglaise auprès des chercheurs français Le balisage semblait correct Il était dans la tête, les codes étaient là, les URL résolues Le problème, il s'est avéré, était que les pages anglaises pointaient vers les françaises mais les pages françaises ne pointaient pas en arrière Hreflang doit être réciproque, et Google jetait tout le cluster parce que les balises de retour manquaient Rien dans le navigateur ne me disait que. Aucune erreur, aucun avertissement - juste des pages qui omettent discrètement de classer où elles devraient.

C'est un hreflang en un mot Le concept est simple : indiquez aux moteurs de recherche quelle langue et quelle version régionale d'une page pour montrer quels utilisateurs L'exécution est un champ de mines de codes ISO, de conventions de casing, de règles de réciprocité et d'une balise de secours que la moitié d'Internet oublie. Je construis et maintiens des sites multilingues assez souvent - dans la documentation de Toolz.dev, WP Adminify&#39 ; et divers projets Laravel et React - que je voulais un outil qui générerait les balises et détecterait les erreurs avant leur expédition. C'est le cas Générateur Hreflang[TRADUCTION], et ce guide est tout ce que j'aurais aimé savoir cet après-midi-là.

Pour le concept plutôt que pour l'outil, commencez par balises Hreflang expliquées(qui est la plaque tournante de ce sujet et renvoie aux éléments sur x-par défaut, erreurs d'hreflang couranteset les configurations de cadre pour Suivant.js et WordPress.

tl;dr : les balises Hreflang indiquent aux moteurs de recherche quelle version langue/région d'une page servir à chaque utilisateur, à l'aide du rel="alternate" hreflang="x" annotation. Les codes suivent ISO 639-1 (langue) et ISO 3166-1 (région) - le Royaume-Uni l'est donc GB, pas UK. Les balises doivent être réciproques (chaque page renvoie) et vous devez inclure un x-default repli. Le générateur génère des balises valides sous forme de liens HTML, d'entrées de plan de site XML ou d'en-tête HTTP, valide chaque code, capture des doublons et s'exécute à 100 % dans votre navigateur.

Que sont les balises hreflang et quand en avez-vous besoin ?

Une balise hreflang est une annotation qui dit &quot ; il existe une autre version de cette page pour une langue et une région spécifiques, et voici son URL.&quot ; La syntaxe est <link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/" />, où fr-CA signifie français tel qu'il est parlé au Canada Lorsque Google comprend ces relations, il peut servir la page française canadienne à un francophone au Canada et la page anglaise américaine à quelqu'un aux États-Unis, au lieu de deviner ou de ne pas respecter la version qu'il est arrivé d'explorer en premier.

Vous avez besoin de hreflang chaque fois que vous avez sensiblement le même contenu dans plus d'une langue, ou la même langue ciblée sur plus d'une région Un blog qui existe uniquement en anglais n'en a pas besoin Un site de marketing SaaS traduit en six langues le fait absolument Le middle case - une langue, plusieurs régions, comme les magasins séparés américains et britanniques qui sont tous deux en anglais - est l'endroit où hreflang est le plus précieux et le plus négligé, parce que les pages ressemblent à des doublons de Google à moins que vous les déclariez explicitement comme des variantes régionales.

Le gain est double Premièrement, la bonne version se classe sur le bon marché, ce qui lève le clic-through et la conversion parce que les utilisateurs atterrissent sur les prix, les devises et la formulation qui leur correspondent. Deuxièmement, hreflang désamorce le problème du duplicate-content : au lieu que vos pages régionales presque identiques se fassent concurrence et se cannibalisent, Google les traite comme un cluster de remplaçants et choisit le meilleur ajustement par requête.

Pourquoi les codes font-ils trébucher tout le monde ?

Parce qu’ils suivent des normes, pas de l’intuition, et que les normes ont des cas extrêmes.

Les valeurs sont des balises de langage BCP 47, définies dans RFC5646et Google&#39 ;s propre documentation des versions localisées est l'autorité sur laquelle il accepte le sous-ensemble.

La partie langue est un code ISO 639-1 : deux lettres, minuscules, comme en, fr, de, ja. La partie région facultative est un code ISO 3166-1 alpha-2 : deux lettres, majuscules, comme US, GB, DE. Mettez-les ensemble avec un trait d'union et vous obtenez en-US ou de-DE. Les conventions qui mordent les gens :

  • le Royaume-Uni est GB, pas UK. UK n'est pas un code ISO 3166-1 valide, et en-UK est un no-op.
  • La langue passe avant tout et est obligatoire ; la région est facultative et ne peut pas être autonome. Vous ne pouvez pas cibler US en soi - il n’existe pas de hreflang uniquement régional. C'est toujours la langue, éventuellement rétrécie par région.
  • L'Amérique latine utilise un code UN M49, es-419, parce qu'il s'étend sur de nombreux pays plutôt qu'un. Ce code de région à trois chiffres est valide et utile pour &quot ; Espagnol, variété latino-américaine.&quot ;
  • Le chinois a souvent besoin d'une sous-étiquette d'écriture, genre zh-Hant (Traditionnel) ou zh-Hans (Simplifié), car la forme écrite compte plus que le pays.

Le générateur valide tout cela Il vérifie chaque code par rapport à la forme attendue, normalise le casse (langage minuscule, région majuscule, script titlecase), et vous avertit lorsqu'une sous-étiquette n'est pas une langue ou une région ISO reconnue - donc en-UK se fait signaler avant de gâcher une exploration.

Comment utiliser le générateur Hreflang ?

L'outil est construit autour d'une liste de versions linguistiques et d'un choix de format de sortie.

Étape 1 - Ajoutez vos versions. Chaque ligne est un code de langue/région plus l'URL complète de cette version Une liste de sélection rapide propose les codes communs (en-US, es-419, zh-Hant, x-default(et plus) donc vous n'avez pas à vous rappeler le casing exact Ajoutez une ligne par version.

Étape 2 - Inclure un x par défaut. Ajouter une ligne avec le code x-default pointant vers votre URL de secours Il s'agit de la version servie aux utilisateurs dont vous n'avez pas explicitement ciblé la langue - souvent une page de sélection de langue ou votre page d'accueil principale.

Étape 3 - Choisissez un format. Basculer entre HTML <link> tags pour le chef de page, xhtml:link entrées pour un sitemap XML ou un HTTP Link en-tête pour les fichiers non HTML. au fur et à mesure que vous modifiez, le générateur valide chaque code et URL, attrape les codes en double et affiche une table d'état par ligne afin que vous puissiez voir en un coup d'œil quelles entrées sont valides.

Étape 4 - Copiez et déployez réciproquement. Copiez la sortie et - c'est la partie qui compte - ajoutez le même ensemble complet de balises à chaque URL du groupe, y compris une entrée autoréférentielle. Puis confirmez la configuration avec le rapport de ciblage international dans Google Search Console.

Tout s'exécute côté client, donc votre structure d'URL - qui peut exposer toute votre architecture internationale - ne quitte jamais le navigateur C'est le même modèle de confidentialité derrière chaque outil du site, couvert dans le Guide de confidentialité des données.

À quoi ressemble la sortie dans chaque format ?

Voici un exemple travaillé plutôt qu'une description Un magasin vendant aux États-Unis, au Royaume-Uni, en France et en Amérique latine, avec une page de sélection de langues comme solution de secours Cinq lignes entrent en jeu :

hreflang ouverture
x-default https://example.com/
en-US https://example.com/us/
en-GB https://example.com/uk/
fr-FR https://example.com/fr/
es-419 https://example.com/latam/

Notez deux choses à propos de cet ensemble avant la sortie. en-US et en-GB sont tous deux anglais, ne différant que par le marché, ce qui est le cas pour lequel hreflang existe et le cas pour lequel la plupart des sites sautent. Et es-419 est le code de région UN M49 pour l'Amérique latine, que l'outil accepte comme valide plutôt que comme signalant, car une région à trois chiffres est légale dans une balise linguistique même s'il ne s'agit pas d'un code ISO 3166-1 alpha-2.

Balises de liens HTML(, pour la page) <head>:

<link rel="alternate" hreflang="x-default" href="https://example.com/" />
<link rel="alternate" hreflang="en-US" href="https://example.com/us/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/uk/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
<link rel="alternate" hreflang="es-419" href="https://example.com/latam/" />

Ce bloc exact est affiché sur les cinq pages, inchangé. Pas &quot ; les quatre autres&quot ; sur chaque page : les cinq, y compris la page&#39 ; sa propre entrée. C'est ce qui rend les annotations réciproques.

Entrées de plan du site XML: où l'outil enveloppe le même ensemble dans un <url> elément et utilise l'URL de votre page comme <loc>:

<url>
    <loc>https://example.com/us/</loc>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/" />
    <xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/us/" />
    <xhtml:link rel="alternate" hreflang="en-GB" href="https://example.com/uk/" />
    <xhtml:link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
    <xhtml:link rel="alternate" hreflang="es-419" href="https://example.com/latam/" />
</url>

Le générateur vous rappelle la pièce qui vit à l'extérieur du bloc qu'il peut produire : le <urlset> l'élément a besoin de l'espace de noms xhtml déclaré, ou de chaque xhtml:link l'entrée est ignorée alors que le fichier est toujours valide en tant que plan du site.

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">

En-tête HTTP Link, une seule valeur d'en-tête pour les fichiers sans <head> à éditer, comme un PDF :

Link: <https://example.com/>; rel="alternate"; hreflang="x-default", <https://example.com/us/>; rel="alternate"; hreflang="en-US", <https://example.com/uk/>; rel="alternate"; hreflang="en-GB", <https://example.com/fr/>; rel="alternate"; hreflang="fr-FR", <https://example.com/latam/>; rel="alternate"; hreflang="es-419"

C'est une longue ligne par conception : une seule Link en-tête portant des valeurs séparées par des virgules. En nginx, cela fait un add_header Link "..."; directive ; dans Apache un Header set Link "...". Le diviser en plusieurs Link les en-têtes fonctionnent également, mais le conserver comme une seule valeur montre clairement que l'ensemble est complet.

Que signifient les avertissements du générateur & #39 ; s ?

L'outil sépare les erreurs, qui empêchent l'émission d'une entrée, des avertissements, qui la laissent passer mais signalent quelque chose que vous devriez regarder. La distinction est importante car la plupart des erreurs d'hreflang sont un balisage légal qui ne signifie rien.

message Ce qui l'a déclenché Que faire
Pas une balise de langue valide La valeur ne correspond pas language[-Script][-REGION] Utilisez d'abord un code de langue, une région facultative ou le littéral x-default
La sous-étiquette de langue n'est pas un code ISO 639-1 courant Langage bien formé mais méconnu Vérifiez-le par rapport à la norme ISO 639-1 ; l'étiquette est émise dans un sens ou dans l'autre
La sous-étiquette de région n'est pas un code ISO 3166-1 courant Région bien formée mais non reconnue C'est ce qui attrape en-UK, où GB est correct
Hréflang dupliqué Le même code apparaît deux fois dans l'ensemble En supprimer un ; deux entrées pour un code est une contradiction
Pas de jeu par défaut x L'ensemble n'a pas de ligne de secours Ajoutez-en un pointant vers une page de sélection ou votre version principale
hreflang travaille en clusters Une seule URL dans l'ensemble Ajoutez les autres versions linguistiques ; un cluster à une entrée ne fait rien
hreflang doit être réciproque Toujours montré Déployez le bloc identique à chaque URL du groupe

Le dernier est toujours affiché plutôt que conditionnellement, car c'est la panne qu'aucun outil côté client ne peut détecter La réciprocité est une propriété des autres pages, pas de l'ensemble devant vous, donc le générateur énonce la règle au lieu de faire semblant de la vérifier Un avertissement sur deux ici est quelque chose qu'il peut véritablement vérifier.

Notons également que les codes sont normalisés plutôt que rejetés sur le casse : EN-gb se transforme en-GB, zh-hant se transforme zh-Hant. Les balises de langue correspondent de manière insensible à la casse, le casse est donc conventionnel, mais une sortie cohérente rend lisible une différence entre deux pages.

Quel format de sortie dois-je choisir ?

Google accepte trois méthodes d'implémentation, et la bonne dépend de votre pile et de votre nombre de pages.

méthode le mieux pour compromis
HTML <link> tags La plupart des sites ; contrôle direct par page Ajoute du poids à chaque page&#39 ; s tête ; doit être sur chaque page
Plan du site XML xhtml:link Grands sites ; garde HTML propre Nécessite de maintenir le plan du site ; plus lent pour Google à traiter
HTTP Link en-tête Fichiers non HTML comme les PDF Besoin d'une configuration serveur ; plus difficile à auditer

Pour un site typique, Balises de liens HTML sont les plus simples - vous les voyez dans la source, ils sont faciles à déboguer et chaque framework peut les restituer. Pour grands sites avec des centaines de variantes linguistiques: mettre du hreflang dans le Plan du site XML maintient vos têtes de page inclinées et centralise les annotations dans un seul fichier (rappelez-vous d'ajouter xmlns:xhtml="http://www.w3.org/1999/xhtml" au <urlset> élément, que l'outil vous rappelle).Le En-tête HTTP la méthode est une niche mais essentielle pour les ressources non HTML comme les PDF où il n'y a pas de tête dans laquelle mettre une balise de lien.

Quelle que soit la méthode que vous choisissez, utilisez une seule méthode par ensemble de pages Le mélange de balises HTML et d'entrées de plan de site pour les mêmes URL peut envoyer des signaux contradictoires à Google. Si vous générez déjà un plan de site, l'outil&#39 ; s s'insère au format de plan de site directement dans la sortie du Générateur de sitemap XML.

Qu'est-ce que x-default et pourquoi est-ce important ?

x-default est la valeur hreflang qui spécifie une page de secours pour tout utilisateur dont vous n'avez pas explicitement ciblé la langue ou la région Si votre site a des versions anglaise, française et allemande, et que quelqu'un naviguant en japonais arrive, x-default indique à Google où les envoyer - généralement une page d'accueil neutre ou une page qui leur permet de choisir une langue.

Il est facultatif dans le sens où hreflang fonctionne sans, mais Google recommande de l'inclure, et je le traite comme obligatoire dans la pratique Sans un x-par défaut, les utilisateurs inégalés obtiennent la version que Google devine la plus proche, qui est souvent juste votre page la plus rampée plutôt qu'un choix délibéré.

Pour l'outil&#39 ; s part : un ensemble avec no x-default row soulève un avertissement plutôt qu'une erreur, vous pouvez donc toujours copier la sortie, mais on vous aura dit Ajouter la ligne et le repli est émis dans n'importe lequel des trois formats que vous avez sélectionnés, dans la même position sur chaque page Où le pointer, et les erreurs qui le rendent inutile, sont couvertes dans le guide x-par défaut.

Pourquoi le hreflang doit-il être réciproque ?

C'est celui qui m'a coûté un après-midi, donc il a sa propre section. Les annotations en hreflang doivent être réciproques. Si la page A déclare la page B comme son suppléant français, la page B doit déclarer la page A en retour Google ne fait confiance à la relation que lorsque les deux parties la confirment Si la balise de retour est manquante, Google ignore l'annotation entièrement - silencieusement, sans erreur sur la page.

La manière claire de satisfaire cela est de mettre l'ensemble complet et identique de balises hreflang sur chaque page du groupe, y compris une entrée autoréférentielle (la page pointant vers elle-même).Donc sur votre en-US page, vous incluez des balises pour en-US, en-GB, fr-FR, de-DE, et x-default - et exactement le même bloc apparaît sur le en-GB page, le fr-FR page, et ainsi de suite Chaque page du cluster porte toute la carte Cela semble redondant, mais c'est ce qui rend les annotations réciproques et c'est ce à quoi Google s'attend.

C'est pourquoi générer les balises n'est qu'une étape. Le générateur hreflang gratuit produit le bloc complet que vous pouvez réutiliser à travers le cluster, et il vous rappelle la réciprocité dans ses avertissements, mais la discipline de déploiement - même bloc, chaque page - est sur vous Obtenez ce droit et les codes bons, et hreflang fonctionne tranquillement et de manière fiable Obtenez-le mal et il échoue tout aussi discrètement Pour le contexte plus large de l'assemblage d'une pile SEO technique, j'ai collecté les utilitaires connexes dans le présentation de la boîte à outils des développeurs Web.

Comment tester le fonctionnement de Hreflang ?

Après le déploiement, vérifiez auprès du Rapport de ciblage international (historiquement appelé le rapport hreflang) dans Google Search Console Il répertorie des erreurs comme &quot ; pas de retour de tags&quot ; et &quot ; codes de langue inconnue&quot ; sur l'ensemble de votre site, ce qui est bien plus rapide que de vérifier les pages une par une. Une exploration avec un outil d'audit SEO confirmera également que chaque page porte l'ensemble réciproque complet.

Les erreurs que je vois le plus souvent, par ordre approximatif de fréquence : balises de retour manquantes (l'échec de réciprocité ci-dessus), pas de x-par défaut, utilisant UK au lieu de GB ou d'autres codes non ISO, balises région uniquement cela essaie de cibler un pays sans langue, URL relatives où hreflang nécessite des absolus, et mélange des méthodes de mise en œuvre pour les mêmes pages Chacun de ceux-ci produit un balisage qui semble plausible et ne fait rien.

le générateur d'étiquettes Hreflang est conçu pour attraper ceux qu'une machine peut attraper - codes mal formés, sous-étiquettes inconnues, doublons, URL non absolues et défaut x manquant - et pour vous rappeler ceux qu'elle ne peut pas appliquer pour vous, à savoir la réciprocité. Le catalogue complet, avec le symptôme produit par chacun, est présent 12 erreurs de hreflang courantes. Si vous câblez hreflang dans une version multilingue plus grande, le générateur de balises méta gère le reste de votre tête par page, et le Guide des outils de codage complète le flux de travail du développeur.

Quels cas extrêmes devez-vous planifier ?

Une fois les bases en place, une poignée de situations reviennent suffisamment souvent pour être planifiées. Les balises canoniques et le hreflang doivent être d'accord. Chaque page&#39 ; s canonique devrait pointer vers elle-même, pas vers une version linguistique différente - si votre page française se canonise vers celle anglaise, vous dites à Google de laisser tomber la page française entièrement, ce qui annule le hreflang que vous venez d'ajouter Gardez les canoniques autoréférentiels au sein d'un cluster linguistique et laissez hreflang décrire les relations entre les clusters ; hreflang vs canonique fonctionne à travers les combinaisons.

La langue et le pays sont des axes indépendants. Il est parfaitement valable d'avoir en-US, en-GB, et en-CA le tout en anglais mais ciblant différents pays, et également valable à avoir fr-CA et en-CA tous deux ciblant le Canada dans différentes langues Ne présumez pas une page par pays ou une par langue ; vous cartographiez les combinaisons spécifiques que votre site sert réellement.

Les barres obliques et protocoles de suivi doivent correspondre à vos URL réelles. hreflang pointe vers des URL exactes, donc https://example.com/fr/ et https://example.com/fr sont différentes cibles Utilisez la forme canonique et indexable de chaque URL - la même que celle que vous soumettriez dans un plan de site - donc l'annotation se résout en une page en direct plutôt qu'en une redirection Une redirection dans une cible hreflang n'est pas fatale, mais elle ajoute un saut et une chance pour le signal de s'affaiblir, donc cela vaut la peine d'être exact.

Questions fréquentes

Qu'est-ce qu'une étiquette hreflang ?

Une balise hreflang indique aux moteurs de recherche quelle langue et version régionale d'une page afficher un utilisateur donné Elle utilise la rel=&quot ; alternate&quot ; hreflang=&quot ; x&quot ; annotation, où x est un code de langue (éventuellement avec une région), de sorte qu'un hispanophone au Mexique peut se voir servir votre page es-MX au lieu de votre page en anglais Hreflang aide les sites internationaux à éviter les problèmes de duplicata-content et à classer la bonne page sur chaque marché.

Quel est le format hreflang correct ?

La valeur est un code de langue ISO 639-1, éventuellement suivi d'une région en tant que code ISO 3166-1 alpha-2 - par exemple en, en-GB, ou pt-BR. La langue vient en premier et la région est facultative ; vous ne pouvez pas cibler une région seule Notez que les normes diffèrent des abréviations quotidiennes : le Royaume-Uni est GB, pas UK.

Que signifie X-Default dans Hreflang ?

X-Default Spécifie la page de secours pour les utilisateurs dont la langue ou la région n'est pas explicitement ciblée. Il s'agit généralement de votre page d'accueil ou d'une page de sélection de langue. Google recommande d'inclure une valeur par défaut dans chaque ensemble de HREFLANG afin que les visiteurs inégalés soient envoyés dans une version de langue aléatoire plutôt qu'une version aléatoire.

Où dois-je mettre les balises hreflang ?

Vous pouvez implémenter hreflang à trois endroits : comme lien rel=&quot ; alternate&quot ; balises dans la tête HTML, comme xhtml : link entries dans votre sitemap XML, ou comme en-tête HTTP Link (utile pour les fichiers non HTML comme les PDF).Cueillez une méthode et appliquez-la de manière cohérente - les mélanger pour les mêmes pages peut envoyer des signaux contradictoires Cet outil génère les trois.

Les balises hreflang doivent-elles être réciproques ?

Oui. Si la page A déclare la page B comme son suppléant français, la page B doit déclarer la page A en retour Google ignore les annotations d'hreflang qui ne sont pas confirmées par des balises de retour sur les pages qu'elles pointent L'approche la plus simple consiste à inclure l'ensemble complet et identique des entrées d'hreflang - y compris une auto-référentielle - sur chaque page du groupe.

Les balises HREFLANG peuvent-elles corriger le contenu en double dans les régions ?

Hreflang ne supprime pas le contenu en double, mais il indique à Google que des pages similaires sont des variantes régionales ou linguistiques les unes des autres plutôt que des doublons pour filtrer. Cela aide le bon classement de la version sur chaque marché au lieu de cannibaliser les pages. Pour les pages véritablement identiques, combinez Hreflang avec des balises canoniques correctes qui se dirigent vers elles-mêmes.

Comment tester le fonctionnement de Hreflang ?

Utilisez le rapport international de ciblage (ou Hreflang) dans la console de recherche Google, qui répertorie les erreurs telles que les balises de retour manquantes et les codes de langue inconnues. Vous pouvez également explorer le site avec un outil d'audit SEO pour confirmer que chaque page contient l'ensemble réciproque complet. Les correctifs peuvent prendre du temps à réfléchir, car Google doit réanalyser chaque page du groupe.

Mes données sont-elles privées ?

Oui. Les balises sont entièrement générées dans votre navigateur avec JavaScript simple. Vos URL et la structure du site ne sont jamais transmises, enregistrées ou stockées, et le générateur continue de fonctionner sans connexion réseau une fois la page chargée.


Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!