Agent Ready HTML

Next.js (App Router defaults): what an agent reads

In short

Next.js does not generate llms.txt. Next.js totals 7 of 16 on the eight numeric keys, from a test build of Next.js 16.4.5. It also does not negotiate markdown without a rewrite and handler. Next.js: In the App Router, layouts and pages are Server Components by default, and Client Components plus the RSC payload are used to prerender HTML.

rubric.txt nextjs-app-router

initial_html_by_default  = 2
real_status_codes        = 2
llms_txt_generation      = 0
llms_txt_linking         = 0
markdown_negotiation     = 1
jsonld_output            = 1
openapi_exposure         = 0
fenced_code              = 1
total                    = 7 of 16

Test build of 16.4.5, 2026-11-04.

Next.js (App Router defaults) Framework, Vercel

React framework whose App Router renders Server Components by default and prerenders HTML; markdown negotiation and llms.txt are patterns the developer adds.

Work left to the developer: Medium: write llms.txt and a markdown route, add the Accept rewrite, link the file, and keep content in Server Components.

The nine scores

KeyScoreEvidenceSource
Content in the initial HTML2, on by defaultTest build, Next.js 16.4.5, 2026-11-04: the App Router pages were prerendered as static content with the H1 in the HTML.nextjs.org/docs/app/getting-started/server-and-client-c…, 2026-11-04
Real status codes2, on by defaultTest build: next start answered a made-up path with 404 directly. notFound() inside a page renders the 404 UI.nextjs.org/docs/app/api-reference/functions/not-found, 2026-11-04
llms.txt generation0, not offeredTest build: public/ held only images; no llms.txt, robots.txt or sitemap. A file or a route handler is written by hand.nextjs.org/docs/app/getting-started/route-handlers, 2026-11-04
llms.txt linking0, not offeredTest build: nothing links an llms.txt and none exists.nextjs.org/docs/app/getting-started/route-handlers, 2026-11-04
Markdown on request1, with setupTest build: Accept: text/markdown returned text/html. Next.js runs its own server by default, so a rewrite that tests the Accept header, plus a route handler, can answer it without a separate host.nextjs.org/docs/app/api-reference/config/next-config-js…, 2026-11-04
JSON-LD output1, with setupTest build: no JSON-LD emitted. A script element can be rendered from a Server Component.nextjs.org/docs/app/getting-started/server-and-client-c…, 2026-11-04
OpenAPI exposure0, not offeredTest build: no OpenAPI file or link; Next.js has no first-party feature for one.nextjs.org/docs/app/getting-started/route-handlers, 2026-11-04
Fenced, tagged code1, with setupTest build: there is no Markdown pipeline without MDX setup; a hand-written code element kept its language class.nextjs.org/docs/app/guides/mdx, 2026-11-04
Work left to the developerMedium: write llms.txt and a markdown route, add the Accept rewrite, link the file, and keep content in Server Components. Based on the test build above and the documentation pages cited for each key.nextjs.org/docs/app/api-reference/config/next-config-js…, 2026-11-04

Test build

Next.js 16.4.5, built on 4 November 2026. create-next-app with TypeScript and the App Router, one extra page with a pre and code block, next build, next start. What it emitted:

  • The home page and /guide were prerendered as static content with the H1 in the HTML.
  • public/ held only images; no llms.txt, robots.txt or sitemap.
  • A made-up path returned 404 directly from next start.
  • Accept: text/markdown on / returned text/html.
  • There is no Markdown pipeline without MDX setup; a hand-written code element with a language class kept its class.
  • No JSON-LD and no OpenAPI file.

Scoring rules for every key are on the method page.

What the documentation says

Each statement below carries its source and the date read. Statements a vendor makes about itself are labelled as vendor claims.

  • In the App Router, layouts and pages are Server Components by default, and Client Components plus the RSC payload are used to prerender HTML. [primary source] source, read 4 November 2026.
  • notFound() renders the 404 page and injects a robots noindex meta tag; it must be called in the render path. [primary source] source, read 4 November 2026.
  • Vercel implemented markdown content negotiation on its own Next.js blog and changelog with a rewrite in next.config.ts and a route handler. [primary source, 2026-02-03] source, read 4 November 2026.
  • nextjs.org/docs/llms.txt was 51,255 bytes with 305 links on 2026-11-04. [primary source] source, read 4 November 2026.

What it does not do

  • Does not generate llms.txt.
  • Does not negotiate markdown without a rewrite and handler.

Compare and replace

Sources

  1. Next.js: Server and Client Components https://nextjs.org/docs/app/getting-started/server-and-client-components, read 4 November 2026
  2. Next.js: notFound https://nextjs.org/docs/app/api-reference/functions/not-found, read 4 November 2026
  3. Vercel: Making agent-friendly pages with content negotiation https://vercel.com/blog/making-agent-friendly-pages-with-content-negotiation, read 4 November 2026
  4. nextjs.org https://nextjs.org/docs/llms.txt, read 4 November 2026
  5. nextjs.org https://nextjs.org/docs/app/getting-started/route-handlers, read 4 November 2026
  6. nextjs.org https://nextjs.org/docs/app/api-reference/config/next-config-js/rewrites, read 4 November 2026
  7. nextjs.org https://nextjs.org/docs/app/guides/mdx, read 4 November 2026
  8. nextjs.org https://nextjs.org/, read 4 November 2026

Last reviewed 4 November 2026