Sitemap XML : créer, valider et soumettre le fichier
Comment construire un sitemap à partir des URL canoniques finales, valider ses entrées et l'utiliser avec les liens internes et le robots.txt.
Un sitemap XML est une liste d'URL lisible par les machines, qui aide les moteurs de recherche à découvrir les pages que vous voulez voir prises en compte. Il complète les liens internes explorables et ne garantit pas l'indexation : n'y incluez que des URL finales et canoniques, conformes à la politique d'indexation du site.
Le protocole sitemaps.org a été introduit en 2005 : Google l'a adopté en premier, suivi de Yandex un an plus tard. Aujourd'hui, tous les grands moteurs de recherche prennent en charge ce standard.
Qu'est-ce qu'un sitemap XML et pourquoi en avoir un
Un robot de moteur de recherche découvre les pages de deux façons : en suivant les liens internes et en lisant les sitemaps. Le crawl par les liens fonctionne bien pour les pages qui reçoivent beaucoup de liens entrants. En revanche, les pages sans aucun lien, les contenus récemment publiés ou les sections peu reliées par un maillage interne peuvent passer inaperçus ou être découverts trop lentement. C'est précisément là qu'un sitemap est utile.
Accélère le crawl
Le robot reçoit directement la liste des URL et n'a pas à parcourir les liens internes page après page.
Signale les mises à jour
L'attribut lastmod indique au moteur de recherche qu'une page a changé et doit être crawlée de nouveau.
Prend en charge les sites multilingues
Avec xhtml:link, vous déclarez les relations hreflang directement dans le sitemap, sans dupliquer les balises dans le HTML.
Structure de base du fichier
Un sitemap minimal valide est un fichier XML avec une déclaration d'encodage, un élément racine urlset et des éléments url à l'intérieur. Chaque url doit contenir au moins un attribut obligatoire : loc.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/</loc>
<lastmod>2026-05-15</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://example.com/about</loc>
<lastmod>2026-04-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://example.com/blog/article-slug</loc>
<lastmod>2026-05-10</lastmod>
<changefreq>monthly</changefreq>
<priority>0.75</priority>
</url>
</urlset>Le fichier doit être encodé en UTF-8. Les caractères spéciaux des URL sont échappés selon les règles XML : & devient &, < devient <. Un fichier sitemap est limité à 50 000 URL et 50 Mo non compressé.
Attributs : loc, lastmod, changefreq, priority
| Attribut | Obligatoire | Format | Description |
|---|---|---|---|
| loc | Oui | URL absolue | Adresse complète de la page, avec protocole et domaine. 2048 caractères maximum. |
| lastmod | Non | W3C Datetime (AAAA-MM-JJ) | Date de la dernière modification. Google ne la prend en compte que si la valeur est stable et exacte. |
| changefreq | Non | always / hourly / daily / weekly / monthly / yearly / never | Indication de la fréquence de mise à jour. Google l'utilise comme un signal parmi d'autres, sans le suivre strictement. |
| priority | Non | 0.0 – 1.0 | Importance relative de l'URL au sein de votre site. Elle n'influence pas le classement dans les résultats de recherche. |
loc : le seul attribut obligatoire
L'URL doit être absolue et correspondre à celle que le serveur renvoie réellement : si la page est servie en HTTPS, loc doit utiliser HTTPS. Si le site utilise www, loc doit inclure www. Une différence entre loc et l'adresse réelle amène Google à ignorer l'entrée.
lastmod : l'attribut facultatif le plus précieux
La date doit refléter les vraies modifications du contenu, et non les mises à jour du template ni la régénération du sitemap. Si vous modifiez lastmod à chaque déploiement sans changer le contenu, Google cesse de faire confiance à ce champ et l'ignore. Formats acceptés : 2026-05-15, 2026-05-15T10:30:00+03:00, 2026-05-15T07:30:00Z.
changefreq : une indication, pas une directive
changefreq ne contrôle pas le calendrier du robot : ce n'est qu'une indication. Google affirme officiellement l'utiliser comme un signal parmi beaucoup d'autres. Yandex traite aussi ce champ à titre informatif. Valeurs courantes en pratique : page d'accueil en daily, articles de blog en monthly, pages juridiques en yearly.
priority : importance relative au sein du site
La priorité, de 0.0 à 1.0, indique au moteur de recherche les pages que vous jugez les plus importantes, par rapport à votre propre site et non aux autres sites. Mettre 1.0 sur toutes les pages n'a aucun sens : le moteur y voit l'absence de priorisation. Une répartition raisonnable : page d'accueil 1.0, pages de hub de rubrique 0.85, articles et fiches produit 0.7–0.75, pages utilitaires 0.5.
Sitemap Index : quand un seul fichier ne suffit plus
Si vous avez plus de 50 000 pages ou si le fichier dépasse 50 Mo, il vous faut un Sitemap Index. C'est un fichier XML qui référence des sitemaps enfants, et non directement des URL. Chaque fichier enfant est un urlset classique, limité à 50 000 entrées.
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://example.com/sitemap/blog.xml</loc>
<lastmod>2026-05-15T00:00:00Z</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap/products.xml</loc>
<lastmod>2026-05-14T00:00:00Z</lastmod>
</sitemap>
<sitemap>
<loc>https://example.com/sitemap/static.xml</loc>
<lastmod>2026-04-01T00:00:00Z</lastmod>
</sitemap>
</sitemapindex>Vous pouvez répartir les fichiers par type de contenu (blog, produits, pages statiques) ou par locale (ru.xml, en.xml). Les deux approches sont valables. Une répartition par locale facilite le suivi de l'indexation langue par langue.
Sitemap d'images
Les images peuvent apparaître dans Google Images et générer du trafic supplémentaire. Pour aider le robot à les découvrir et à les comprendre, ajoutez l'extension image à votre urlset habituel. Chaque entrée url peut contenir jusqu'à 1 000 images.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://example.com/gallery/city</loc>
<image:image>
<image:loc>https://example.com/images/city-skyline.jpg</image:loc>
<image:title>City skyline at sunset</image:title>
<image:caption>Downtown panorama taken from the observation deck, 2025</image:caption>
<image:geo_location>New York, USA</image:geo_location>
<image:license>https://creativecommons.org/licenses/by/4.0/</image:license>
</image:image>
</url>
</urlset><url> et valeurs admises :| Balise | Obligatoire | Description |
|---|---|---|
| image:loc | Oui | URL absolue de l'image. Peut se trouver sur un autre domaine (par exemple un CDN). |
| image:title | Non | Titre de l'image. Équivalent de l'attribut title de la balise img. |
| image:caption | Non | Légende de l'image. Équivalent de l'attribut alt de la balise img. |
| image:geo_location | Non | Localisation géographique du sujet de l'image. |
| image:license | Non | URL de la licence de l'image. |
Les images du sitemap ne remplacent pas l'attribut alt dans le HTML : les deux fonctionnent ensemble. Le sitemap aide le robot à découvrir l'image, alt en décrit le sens.
Sitemap vidéo
Un sitemap vidéo permet à votre contenu d'apparaître dans la recherche vidéo Google et dans les résultats enrichis avec aperçu vidéo. L'espace de noms est video.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>https://example.com/tutorials/getting-started</loc>
<video:video>
<video:thumbnail_loc>https://example.com/thumbnails/tutorial-1.jpg</video:thumbnail_loc>
<video:title>Getting started with the product</video:title>
<video:description>Step-by-step guide for first-time users</video:description>
<video:content_loc>https://example.com/videos/tutorial-1.mp4</video:content_loc>
<video:duration>183</video:duration>
<video:publication_date>2026-03-10T12:00:00+00:00</video:publication_date>
<video:family_friendly>yes</video:family_friendly>
</video:video>
</url>
</urlset>video:duration s'exprime en secondes. video:content_loc doit pointer vers un fichier lisible (mp4, webm) et non vers une page de lecteur. Pour les vidéos hébergées sur YouTube ou Vimeo, utilisez video:player_loc à la place de video:content_loc.
Sitemap d'actualités
Le Google News Sitemap est un format spécifique aux éditeurs qui participent à Google News. Il ne contient que les articles publiés au cours des 48 dernières heures. Les contenus plus anciens ne doivent pas y figurer : ils sont automatiquement retirés de l'index des actualités.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:news="http://www.google.com/schemas/sitemap-news/0.9">
<url>
<loc>https://example.com/news/tech-breakthrough-2026</loc>
<news:news>
<news:publication>
<news:name>Example Daily</news:name>
<news:language>en</news:language>
</news:publication>
<news:publication_date>2026-05-15T09:00:00+00:00</news:publication_date>
<news:title>Technology breakthrough set to transform the industry</news:title>
</news:news>
</url>
</urlset>Localisation : hreflang dans le sitemap
Si votre site existe en plusieurs langues ou pour plusieurs régions, reliez les pages correspondantes avec hreflang. Trois méthodes sont possibles : les balises link rel dans le HTML, les en-têtes HTTP Link, ou directement dans le sitemap. Pour les grands sites, le sitemap est la solution la plus pratique, car elle n'exige aucune modification des templates.
Dans le sitemap, hreflang se déclare via l'espace de noms xhtml. Chaque page doit figurer comme une entrée url, et chaque entrée doit lister toutes les variantes linguistiques, y compris la sienne.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<!-- Russian version -->
<url>
<loc>https://example.com/blog/seo-guide</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/blog/seo-guide"/>
</url>
<!-- English version -->
<url>
<loc>https://example.com/en/blog/seo-guide</loc>
<xhtml:link rel="alternate" hreflang="ru" href="https://example.com/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/en/blog/seo-guide"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/blog/seo-guide"/>
</url>
</urlset>La valeur x-default désigne la page de repli, celle qui s'affiche aux utilisateurs qui ne correspondent à aucun réglage de langue explicite. Il s'agit généralement de la version dans la langue principale du site.
| Code hreflang | Usage |
|---|---|
| ru | Langue russe, toutes régions |
| en | Langue anglaise, toutes régions |
| en-US | Langue anglaise, région États-Unis |
| ru-RU | Langue russe, région Russie |
| x-default | Page par défaut pour une langue ou une région non déterminée |
Robots.txt : une seule ligne suffit
Pour que les moteurs de recherche trouvent votre sitemap, ajoutez une seule directive Sitemap dans robots.txt. Si vous utilisez un Sitemap Index, indiquez celui-ci. Le robot découvre automatiquement tous les fichiers enfants via l'index.
User-agent: *
Disallow: /admin/
Disallow: /api/
Allow: /
Sitemap: https://example.com/sitemap.xmlSi vous avez plusieurs fichiers d'index racine (par exemple un pour ru et un pour en), vous pouvez indiquer plusieurs directives Sitemap :
Sitemap: https://example.com/sitemap/index-ru.xml
Sitemap: https://example.com/sitemap/index-en.xmlDocumentation Google et Yandex
Documentation officielle de Google sur les sitemaps
Documentation officielle de Yandex Webmaster sur les sitemaps
Yandex prend en charge le standard sitemaps.org et, en plus, l'extension pour les actualités. Yandex lit changefreq et priority, mais recommande de soigner surtout lastmod : c'est lui qui compte le plus pour le nouveau crawl des pages modifiées.
Checklist
- Le fichier est encodé en UTF-8, avec <?xml version="1.0" encoding="UTF-8"?> sur la première ligne
- Toutes les URL sont absolues (avec protocole et domaine) et correspondent à l'URL canonique réelle
- HTTPS dans loc si le site est servi en HTTPS
- lastmod reflète la date réelle de modification du contenu, et non la date de build
- Le fichier ne dépasse pas 50 000 URL ni 50 Mo non compressé
- Pour les grands sites : un Sitemap Index avec des fichiers enfants
- Pour les pages multilingues : xhtml:link avec hreflang, y compris x-default
- Pour les contenus médias : les extensions adaptées (image, video, news)
- Le robots.txt contient une directive Sitemap avec une URL absolue
- Le sitemap est soumis dans Google Search Console et Yandex Webmaster
- Les pages en noindex ne figurent pas dans le sitemap
- Les pages dont le canonical pointe vers une autre URL ne figurent pas dans le sitemap
FAQ
Un sitemap est-il indispensable pour un petit site ?
Faut-il inclure dans le sitemap les pages en noindex ?
La priorité influence-t-elle le classement ?
À quelle fréquence faut-il mettre à jour le sitemap ?
Combien de sitemaps peut-on déclarer dans robots.txt ?
Check it with SpiderHead
Free and local: run the audit on your own machine.



