# Discovering llms.txt and Markdown versions of pages

> How an agent finds llms.txt and the Markdown version of a page under the second edition - rel=alternate and rel=describedby, the Link header, files in subpaths

Page: https://llms-full-txt.ru/en/specification/discovery/
Site index: https://llms-full-txt.ru/en/llms.txt

The [second edition of the proposal](https://llmstxt.org/) answers a question the first one skipped: an agent is already on a page, so how does it learn that a Markdown version exists and that an `llms.txt` sits nearby?

The answer is two ordinary link relations: `rel="alternate"` with the type `text/markdown` points to the Markdown version of the page, and `rel="describedby"` points to the `llms.txt` that covers it. They can go into the page code or into the server response header.

added in the second edition, August 10, 2026
## How it works

- What an agent learns from a page
- A page
- /docs/install.html
- the agent arrived here by a link
- Markdown version
- /docs/install.html.md
- the same text without styling
- The covering file
- /docs/llms.txt
- a map of the whole section

## Two ways to declare the relations

**In the page code**

```html title="install.html" {3-4}
<head>
  <title>Installation</title>
  <link rel="alternate" type="text/markdown" href="/docs/install.html.md">
  <link rel="describedby" href="/docs/llms.txt">
</head>
```

**In the response header**

```http title="Server response"
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Link: </docs/install.html.md>; rel="alternate"; type="text/markdown", </docs/llms.txt>; rel="describedby"
```

The header has two advantages. It can be added in the web server or CDN configuration without touching any page. And it works for files that have no `<head>`, such as the Markdown files themselves.

## Files in subpaths

`llms.txt` does not have to sit in the site root. A file covers the addresses under its path: `/docs/llms.txt` describes everything in `/docs/`.

When several files apply to a page, an agent takes the most specific one.

| Page | Files that apply | The one used |
|---|---|---|
| `/docs/api/auth.html` | `/llms.txt`, `/docs/llms.txt`, `/docs/api/llms.txt` | `/docs/api/llms.txt` |
| `/docs/guide.html` | `/llms.txt`, `/docs/llms.txt` | `/docs/llms.txt` |
| `/blog/post.html` | `/llms.txt` | `/llms.txt` |

The same rule lets those who control only a part of a site take part: a project on shared hosting with an address like `example.github.io/project/`, for instance.

## The address of the Markdown version

The second edition allows two forms.

| Page | Appended form | Replaced form |
|---|---|---|
| `/docs/page.html` | `/docs/page.html.md` | `/docs/page.md` |
| `/docs/` | `/docs/index.html.md` | `/docs/index.md` |

Whichever form a site picks, `rel="alternate"` saves the agent from guessing.

## Why not /.well-known/

There is a standard place for metadata files: the `/.well-known/` directory. The author of the proposal declined it for one reason: such addresses exist only at the site root. An `llms.txt` describes the path it sits in, and a single root location cannot express that.

## In practice

**Confirmed**

- The relations are described in the text of the second edition.
- `rel="alternate"` pointing to a Markdown version is found on several documentation sites, Anthropic among them.
- In our check of 46 sites on October 3, 2026, `rel="describedby"` was found on one: Cursor.

**Not proven**

- That agents already read these relations at scale. The edition is recent.

**What it does not mean**

- Some platforms send headers of their own: `rel="llms-txt"`, `rel="llms-full-txt"`, `X-Llms-Txt`. They are not part of the second edition.

## Next

- Every difference between the editions: [changes in v2](https://llms-full-txt.ru/en/specification/changes/).
- How to serve Markdown: [Markdown versions of pages](https://llms-full-txt.ru/en/guides/markdown-pages/).
- How to check the headers: [validating files and markup](https://llms-full-txt.ru/en/guides/validation/).
