Skip to main content
Version: Canary 🚧

πŸ“¦ plugin-sitemap

This plugin creates sitemaps for your site so that search engine crawlers can crawl your site more accurately.

production only

This plugin is always inactive in development and only active in production because it works on the build output.


npm install --save @docusaurus/plugin-sitemap

If you use the preset @docusaurus/preset-classic, you don't need to install this plugin as a dependency.

You can configure this plugin through the preset options.


Accepted fields:

lastmod'date' | 'datetime' | nullnulldate is YYYY-MM-DD. datetime is a ISO 8601 datetime. null is disabled. See sitemap docs.
changefreqstring | null'weekly'See sitemap docs
prioritynumber | null0.5See sitemap docs
ignorePatternsstring[][]A list of glob patterns; matching route paths will be filtered from the sitemap. Note that you may need to include the base URL in here.
filenamestringsitemap.xmlThe path to the created sitemap file, relative to the output directory. Useful if you have two plugin instances outputting two files.
createSitemapItemsCreateSitemapItemsFn | undefinedundefinedAn optional function which can be used to transform and / or filter the items in the sitemap.



type CreateSitemapItemsFn = (params: {
siteConfig: DocusaurusConfig;
routes: RouteConfig[];
defaultCreateSitemapItems: CreateSitemapItemsFn;
}) => Promise<SitemapItem[]>;

This plugin also respects some site config:

  • noIndex: results in no sitemap generated
  • trailingSlash: determines if the URLs in the sitemap have trailing slashes
About lastmod

The lastmod option will only output a sitemap <lastmod> tag if plugins provide route metadata attributes sourceFilePath and/or lastUpdatedAt.

All the official content plugins provide the metadata for routes backed by a content file (Markdown, MDX or React page components), but it is possible third-party plugin authors do not provide this information, and the plugin will not be able to output a <lastmod> tag for their routes.

Example configuration​

You can configure this plugin through preset options or plugin options.


Most Docusaurus users configure this plugin through the preset options.

If you use a preset, configure this plugin through the preset options:

module.exports = {
presets: [
sitemap: {
lastmod: 'date',
changefreq: 'weekly',
priority: 0.5,
ignorePatterns: ['/tags/**'],
filename: 'sitemap.xml',
createSitemapItems: async (params) => {
const {defaultCreateSitemapItems,} = params;
const items = await defaultCreateSitemapItems(rest);
return items.filter((item) => !item.url.includes('/page/'));

You can find your sitemap at /sitemap.xml.