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.

Comment Googlebot utilise un sitemap : il obtient directement la liste des URL et crawle les pages sans errer de lien en lien.

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.

Les sitemaps sont particulièrement utiles pour : les nouveaux sites sans liens entrants ; les grands sites (des milliers de pages) ; les pages riches en médias (images, vidéos) ; les sites multilingues utilisant hreflang.

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
<?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 &amp;, < devient &lt;. Un fichier sitemap est limité à 50 000 URL et 50 Mo non compressé.

Attributs : loc, lastmod, changefreq, priority

AttributObligatoireFormatDescription
locOuiURL absolueAdresse complète de la page, avec protocole et domaine. 2048 caractères maximum.
lastmodNonW3C Datetime (AAAA-MM-JJ)Date de la dernière modification. Google ne la prend en compte que si la valeur est stable et exacte.
changefreqNonalways / hourly / daily / weekly / monthly / yearly / neverIndication de la fréquence de mise à jour. Google l'utilise comme un signal parmi d'autres, sans le suivre strictement.
priorityNon0.0 – 1.0Importance 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.

Ne mettez pas automatiquement la date du jour à chaque build. La date ne doit changer que lorsque le contenu principal de la page change réellement.

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
<?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.

Dans le robots.txt, il suffit de déclarer le Sitemap Index racine : inutile de lister chaque fichier enfant. Le moteur les découvre via l'index.

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
<?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>
Attributs de la balise <url> et valeurs admises :
BaliseObligatoireDescription
image:locOuiURL absolue de l'image. Peut se trouver sur un autre domaine (par exemple un CDN).
image:titleNonTitre de l'image. Équivalent de l'attribut title de la balise img.
image:captionNonLégende de l'image. Équivalent de l'attribut alt de la balise img.
image:geo_locationNonLocalisation géographique du sujet de l'image.
image:licenseNonURL 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
<?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
<?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>
Le format News Sitemap ne convient pas aux blogs classiques. Il est réservé aux éditeurs d'actualités validés par Google News. L'utiliser sans participer au programme n'apporte aucun avantage.

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
<?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.

Règle de réciprocité : si la page A référence la page B via hreflang, la page B doit en retour référencer la page A. Les déclarations hreflang à sens unique sont traitées comme des erreurs par Google et ignorées.
Code hreflangUsage
ruLangue russe, toutes régions
enLangue anglaise, toutes régions
en-USLangue anglaise, région États-Unis
ru-RULangue russe, région Russie
x-defaultPage 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.

text
User-agent: *
Disallow: /admin/
Disallow: /api/
Allow: /

Sitemap: https://example.com/sitemap.xml

Si vous avez plusieurs fichiers d'index racine (par exemple un pour ru et un pour en), vous pouvez indiquer plusieurs directives Sitemap :

text
Sitemap: https://example.com/sitemap/index-ru.xml
Sitemap: https://example.com/sitemap/index-en.xml
En plus de robots.txt, soumettez le sitemap dans la Google Search Console (section « Sitemaps ») et dans Yandex Webmaster (Indexation → Fichiers Sitemap). Cela accélère le premier traitement et fournit des statistiques sur les URL découvertes et indexées.

Documentation 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 ?
Techniquement, non. Si le site est bien maillé et que toutes les pages sont accessibles depuis la page d'accueil, le robot les trouvera seul. Un sitemap reste néanmoins toujours utile : il accélère le crawl et vous donne le contrôle sur ce qui est indexé.
Faut-il inclure dans le sitemap les pages en noindex ?
Non. Les pages avec la balise meta noindex ou l'en-tête X-Robots-Tag: noindex ne doivent pas figurer dans le sitemap : cette contradiction déroute les moteurs de recherche. N'incluez que les pages que vous voulez voir indexées.
La priorité influence-t-elle le classement ?
Non. La priority est une indication de priorisation du crawl au sein de votre site, pas un signal de classement. Elle aide le robot à décider quelles pages visiter plus souvent, mais n'a aucun effet sur la position dans les résultats de recherche.
À quelle fréquence faut-il mettre à jour le sitemap ?
À chaque ajout ou suppression de page. Pour les sites dynamiques (blog, e-commerce), il est préférable de régénérer le sitemap automatiquement à chaque build. Les sites statiques le mettent à jour à la main lorsque la structure change.
Combien de sitemaps peut-on déclarer dans robots.txt ?
Le standard ne limite pas le nombre de directives Sitemap dans robots.txt. La bonne pratique consiste toutefois à n'avoir qu'un seul Sitemap Index, à partir duquel Google et Yandex trouvent tous les autres fichiers.

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it