Miss any of our Open RFC calls?Watch the recordings here! »


1.1.0 • Public • Published

npmv1 All Contributors

You can make donations for the maintenance of the project. Donate

Simple sitemap.xml mapper for Next.js projects.


This module have been created to be used at node server side of NextJs. It is meant to be used in server.js so that when the server is initialized it will only run once. If you place it in any of the request handler of the node server performance may be affected.

Usage for static HTML apps

If you are exporting the next project as a static HTML app, create a next-sitemap-generator script file in the base directory. The option pagesDirectory should point to the static files output folder. After generating the output files, run node your_nextjs_sitemap_generator.js to generate the sitemap.

Usage with getStaticPaths

If you are using next@^9.4.0, you may have your site configured with getStaticPaths to pregenerate pages on dynamic routes. To add those to your sitemap, you need to load the BUILD_ID file into your config whilst excluding fallback pages:

const sitemap = require("nextjs-sitemap-generator");
const fs = require("fs");
const BUILD_ID = fs.readFileSync(".next/BUILD_ID").toString();
  baseUrl: "https://example.com",
  pagesDirectory: __dirname + "/.next/serverless/pages",
  targetDirectory: "public/",
  ignoredExtensions: ["js", "map"],
  ignoredPaths: ["[fallback]"],


// your_nextjs_sitemap_generator.js
const sitemap = require('nextjs-sitemap-generator');
  alternateUrls: {
    en: 'https://example.en',
    es: 'https://example.es',
    ja: 'https://example.jp',
    fr: 'https://example.fr',
  baseUrl: 'https://example.com',
  ignoredPaths: ['admin'],
  extraPaths: ['/extraPath'],
  pagesDirectory: __dirname + "\\pages",
  targetDirectory : 'static/',
  sitemapFilename: 'sitemap.xml',
  nextConfigPath: __dirname + "\\next.config.js",
  ignoredExtensions: [
  pagesConfig: {
    '/login': {
      priority: '0.5',
      changefreq: 'daily'
  sitemapStylesheet: [
      type: "text/css",
      styleFile: "/test/styles.css"
      type: "text/xsl",
      styleFile: "test/test/styles.xls"
console.log(`✅ sitemap.xml generated!`);

OPTIONS description

  • alternateUrls: You can add the alternate domains corresponding to the available language. (OPTIONAL)
  • baseUrl: The url that it's going to be used at the beginning of each page.
  • ignoreIndexFiles: Whether index file should be in URL or just directory ending with the slash (OPTIONAL)
  • ignoredPaths: File or directory to not map (like admin routes).(OPTIONAL)
  • extraPaths: Array of extra paths to include in the sitemap (even if not present in pagesDirectory) (OPTIONAL)
  • ignoredExtensions: Ignore files by extension.(OPTIONAL)
  • pagesDirectory: The directory where Nextjs pages live. You can use another directory while they are nextjs pages. It must to be an absolute path.
  • targetDirectory: The directory where sitemap.xml going to be written.
  • sitemapFilename: The filename for the sitemap. Defaults to sitemap.xml. (OPTIONAL)
  • pagesConfig: Object configuration of priority and changefreq per route.(OPTIONAL)
  • sitemapStylesheet: Array of style objects that will be applied to sitemap.(OPTIONAL)
  • nextConfigPath(Used for dynamic routes): Calls exportPathMap if exported from nextConfigPath js file. See this to understand how to do it (https://nextjs.org/docs/api-reference/next.config.js/exportPathMap) (OPTIONAL)


For now the ignoredPaths matches whatever cointaning the thing you put, ignoring if there are files or directories. In the next versions this going to be fixed.


Thanks goes to these wonderful people (emoji key):

Daniele Simeone




Goran Zdjelar




Stewart McGown


Jordan Andree




This project follows the all-contributors specification. Contributions of any kind welcome!


npm i nextjs-sitemap-generator

DownloadsWeekly Downloads






Unpacked Size

203 kB

Total Files


Last publish


  • avatar