Sitemaps still matter, for a boring reason
A sitemap enumerates your URLs so crawlers find pages that are weakly linked or newly published, rather than discovering them by luck.
Link-following has blind spots
Crawlers find pages by following links. Anything reachable only through a search box, deep pagination, or a filter combination may never be reached at all.
A sitemap is the direct answer: here is the list, no traversal needed.
It feeds your llms.txt too
A sitemap is the natural input for generating an llms.txt — the URL set, grouped by path prefix, is most of the structure you need.
Sites without a sitemap tend to end up with a thin llms.txt, because there is nothing to build the page list from.
Generating one
In Next.js App Router this is a file, not a build step:
// app/sitemap.ts
import type { MetadataRoute } from "next";
export default function sitemap(): MetadataRoute.Sitemap {
const now = new Date();
return [
{ url: "https://acme.com", lastModified: now, priority: 1 },
{ url: "https://acme.com/pricing", lastModified: now, priority: 0.9 },
];
}Does this apply to your site?
The free checker runs this check and eighteen others, then generates the files to fix whatever fails.
Run the checkerRelated
- What is llms.txt, and does your site need one?llms.txt is a markdown map of your site for AI assistants. Here's what goes in it, where it lives, and how it differs from robots.txt and sitemap.xml.
- Which AI crawlers is your robots.txt blocking?GPTBot, ClaudeBot, PerplexityBot and Google-Extended each read robots.txt. A single Disallow can make your site invisible to AI answers — often unintentionally.