Vos balises hreflang sont-elles correctes ?
Les balises hreflang indiquent à Google quelle version d’une page servir selon la langue du visiteur. Cet outil les extrait de votre code et liste chaque alternative déclarée — le code de langue et l’URL vers laquelle elle pointe — et vous dit si un « x-default » est présent. De quoi relire, à l’œil, le bloc qu’une page produit.
Lancer gratuitement
À quoi servent les balises hreflang
Un site décliné en plusieurs langues doit dire à Google quelle version montrer à qui : la page française à un visiteur francophone, l’anglaise à un anglophone. C’est le rôle des balises hreflang. Bien posées, elles évitent qu’une page française remonte pour un internaute anglophone, ou que deux traductions soient traitées comme des doublons. Mal posées, elles sèment la confusion et annulent le bénéfice attendu du travail de traduction.
Ce que l’outil liste
Collez le HTML de la page : l’outil relève chaque balise hreflang, avec son code de langue et l’URL visée, et signale si la valeur « x-default » — la page à servir par défaut — est présente. Avec cette liste sous les yeux, vous repérez les défauts classiques : un code de langue mal formé (« en-UK » au lieu de « en-GB »), une URL relative au lieu d’absolue, ou une langue oubliée. L’outil n’ouvre pas les pages liées et ne juge pas la validité des codes : il vous montre ce qui est déclaré pour que vous le contrôliez.
Sans envoi de vos pages
L’analyse du code collé reste dans votre navigateur : aucune donnée ne part, rien n’est stocké, c’est gratuit et sans inscription. Cette confidentialité compte au regard du RGPD, notamment quand on contrôle un ensemble de traductions encore en préparation, avant toute mise en ligne. Pour lire directement une page déjà publiée par son adresse, la variante par URL passe par l’API et se facture $0.002 par requête — elle relève les balises de cette page, sans ouvrir les autres versions.
Cas d’usage
Site bilingue français-anglais
Studio Lumen SAS livre un site en français et en anglais. L’agence colle le HTML de chaque version, liste les balises hreflang des deux et compare les listes pour vérifier qu’elles se répondent bien, sans oubli.
Version par défaut oubliée
Une TPE exportatrice a ajouté l’anglais mais aucun visiteur d’un pays tiers n’est correctement orienté. L’outil montre l’absence de « x-default », la valeur qui désigne la page à servir par défaut.
Codes de langue à vérifier
Un indépendant a écrit « fr-FR » d’un côté et « fr » de l’autre, sans cohérence. L’outil liste les codes tels qu’ils sont déclarés pour qu’il repère l’incohérence et harmonise l’ensemble avant que Google ne renonce à les suivre.
Questions fréquentes
Qu’est-ce que la réciprocité des balises hreflang ?
C’est la règle clé : si la page A pointe vers la page B comme sa version dans une autre langue, la page B doit pointer en retour vers A. Sans ce renvoi mutuel, Google ignore les balises. L’outil liste les balises d’une page ; pour contrôler la réciprocité, collez aussi la page visée et comparez les deux listes.
À quoi sert la valeur « x-default » ?
Elle désigne la page à servir quand aucune langue déclarée ne correspond au visiteur — par exemple un internaute d’un pays non prévu. L’outil signale son absence, cause fréquente d’un mauvais aiguillage international.
Le code de mes pages est-il envoyé sur un serveur ?
Non, en mode collé. L’analyse se fait dans votre navigateur ; le HTML ne quitte pas la page et rien n’est conservé. Seule la lecture par URL via l’API suppose un traitement à distance.
Faut-il des balises hreflang pour un site en une seule langue ?
Non. Elles ne servent que si le même contenu existe en plusieurs langues ou variantes régionales. Sur un site uniquement francophone, elles sont inutiles ; l’outil s’adresse aux sites multilingues.
L’outil est-il payant ?
Le mode collé est gratuit, sans compte ni limite. Seule la lecture directe d’une adresse en ligne, via l’API, est facturée $0.002 la requête, en dollars US.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/seo/hreflang-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'const res = await fetch("https://api.kit.forhosting.com/seo/hreflang-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://example.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/hreflang-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://example.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/hreflang-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://example.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://example.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/hreflang-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"url": "https://example.com"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.hreflang_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |