Validateur de sitemap XML
Le sitemap XML liste, à l’intention de Google, les adresses de votre site. Cet outil en lit les URL, signale celles qui ne sont pas des adresses absolues valides et indique si le fichier porte des dates lastmod. Utile avant de le soumettre à la Search Console, pour repérer les fautes de syntaxe qui bloquent l’exploration.
Lancer gratuitement
Ce qu’un sitemap doit respecter
Un sitemap valide suit des règles précises : un en-tête XML correct, chaque adresse dans une balise dédiée, des URL absolues et échappées, une date de dernière modification au format ISO, et un plafond de 50 000 URL et 50 Mo décompressés. Cet outil se concentre sur le point structurel qui casse le plus souvent un fichier : chaque adresse est-elle une URL absolue valide ? Il la relit, pointe celle qui ne l’est pas, et indique si le fichier porte des dates lastmod.
Les erreurs les plus courantes
La faute la plus fréquente est une adresse relative — /produits/42 — là où le sitemap exige une URL absolue complète, avec protocole et domaine : elle passe pour un lien valide dans une page mais rend l’entrée inexploitable ici. L’outil la liste individuellement plutôt que de vous laisser face à un « fichier invalide » sans savoir où chercher. D’autres défauts existent — esperluette non échappée, balises mal imbriquées, date mal formée — mais relèvent d’un contrôle XML à part.
Collez, c’est gratuit
Collez le contenu de votre sitemap : la vérification se fait dans le navigateur, sans rien envoyer ni conserver, gratuitement et sans inscription. Pratique pour contrôler un fichier généré à la main ou par un plugin avant sa mise en ligne. Pour vérifier un sitemap déjà publié en le chargeant depuis son adresse, la variante par URL passe par l’API et coûte $0.002 par requête.
Cas d’usage
Sitemap généré par un plugin
Menuiserie Rousseau & Fils a un sitemap produit par une extension. En le collant, l’artisan vérifie que toutes les adresses sont bien absolues et qu’aucune n’est mal formée avant de le soumettre.
Fichier édité à la main
Une indépendante maintient un petit sitemap à la main. L’outil repère une adresse relative glissée dans le fichier, qui le rendait invalide sans message clair côté Search Console.
Contrôle après refonte
Studio Lumen SAS refait le site d’un client et veut être sûr que le nouveau sitemap tient la route. La vérification confirme que chaque adresse est absolue et bien formée et compte les URL avant la remise en ligne.
Questions fréquentes
Combien d’URL un sitemap peut-il contenir ?
Jusqu’à 50 000 adresses et 50 Mo une fois décompressé. Au-delà, il faut découper le site en plusieurs sitemaps regroupés dans un fichier d’index. Cet outil lit les URL et les compte, mais ne bloque pas pour vous un fichier au-delà de la limite.
Quel format de date le sitemap attend-il ?
Le format ISO 8601, par exemple 2026-07-14 ; une date à la française, 14/07/2026, est refusée par Google. Cet outil indique si le fichier porte des dates lastmod, mais n’en contrôle pas le format — c’est à vous de respecter le standard.
Mon sitemap est-il transmis à un serveur ?
Non, en mode collé. La vérification s’exécute dans votre navigateur ; le fichier ne quitte pas la page et rien n’est conservé. Seule la vérification d’un sitemap en ligne via l’API suppose un traitement à distance.
Un sitemap invalide empêche-t-il l’indexation ?
Il peut la freiner : si Google ne parvient pas à lire le fichier, il ignore les URL qu’il contient et découvre vos pages plus lentement. Vérifier avant de soumettre évite ce blocage silencieux.
Faut-il payer pour vérifier ?
Non pour le mode collé : c’est gratuit, sans compte ni limite. Seule la vérification d’un sitemap chargé depuis son adresse, via l’API, est facturée $0.002 la requête.
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/sitemap-validate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/sitemap.xml"}'const res = await fetch("https://api.kit.forhosting.com/seo/sitemap-validate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://example.com/sitemap.xml"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/sitemap-validate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://example.com/sitemap.xml"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/sitemap-validate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://example.com/sitemap.xml"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://example.com/sitemap.xml"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/sitemap-validate", 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/sitemap.xml"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.sitemap_validate",
"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. |