---
title: "Next.js: agent readability profile: Agent Ready HTML"
description: "Next.js scores 7 of 16 on the read-layer rubric: initial HTML, status codes, llms.txt, markdown, JSON-LD, OpenAPI and code. Read 2026-11-04."
canonical: https://agentreadyhtml.com/platforms/nextjs-app-router/
site: "Agent Ready HTML"
last_updated: 2026-11-04
section: "Platforms"
---

# Next.js: agent readability profile: Agent Ready HTML

> Next.js scores 7 of 16 on the read-layer rubric: initial HTML, status codes, llms.txt, markdown, JSON-LD, OpenAPI and code. Read 2026-11-04.

Source: https://agentreadyhtml.com/platforms/nextjs-app-router/
Site: Agent Ready HTML
Last reviewed: 2026-11-04

# 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

```text
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

| Key | Score | Evidence | Source |
| --- | --- | --- | --- |
| Content in the initial HTML | 2, on by default | Test 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 codes | 2, on by default | Test 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 generation | 0, not offered | Test 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 linking | 0, not offered | Test build: nothing links an llms.txt and none exists. | nextjs.org/docs/app/getting-started/route-handlers, 2026-11-04 |
| Markdown on request | 1, with setup | Test 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 output | 1, with setup | Test 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 exposure | 0, not offered | Test 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 code | 1, with setup | Test 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 developer |  | Medium: 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](https://agentreadyhtml.com/method/).

## 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](https://nextjs.org/docs/app/getting-started/server-and-client-components), 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](https://nextjs.org/docs/app/api-reference/functions/not-found), 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](https://vercel.com/blog/making-agent-friendly-pages-with-content-negotiation), read 4 November 2026.
-   nextjs.org/docs/llms.txt was 51,255 bytes with 305 links on 2026-11-04. \[primary source\] [source](https://nextjs.org/docs/llms.txt), 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

-   [Next.js (App Router defaults) against Astro](https://agentreadyhtml.com/compare/nextjs-app-router-vs-astro/)
-   [Next.js (App Router defaults) against Nuxt](https://agentreadyhtml.com/compare/nextjs-app-router-vs-nuxt/)
-   [Alternatives to Next.js (App Router defaults)](https://agentreadyhtml.com/platforms/nextjs-app-router/alternatives/)
-   [Next.js: vendor profile](https://agentreadyhtml.com/vendors/nextjs/)
-   [Vercel: vendor profile](https://agentreadyhtml.com/vendors/vercel/)
-   [Next.js (App Router defaults) home page](https://nextjs.org/)

## Sources

1.  [Next.js: Server and Client Components](https://nextjs.org/docs/app/getting-started/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) 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) https://vercel.com/blog/making-agent-friendly-pages-with-content-negotiation, read 4 November 2026
4.  [nextjs.org](https://nextjs.org/docs/llms.txt) https://nextjs.org/docs/llms.txt, read 4 November 2026
5.  [nextjs.org](https://nextjs.org/docs/app/getting-started/route-handlers) 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) 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) https://nextjs.org/docs/app/guides/mdx, read 4 November 2026
8.  [nextjs.org](https://nextjs.org/) https://nextjs.org/, read 4 November 2026

Last reviewed 4 November 2026

Edition

Crawl

2026-11-04

Page updated

2026-11-04

Method

How the viewer reads a page, how a file is graded and how a platform is scored: [the method page](https://agentreadyhtml.com/method/).
