Back to blog

2026-03-07

llms.txt: what it is good for (and what is not proven)

Machine-readable site summary, narrative control, extended text. Disclaimer: no public proof that llms.txt changes ranking in ChatGPT or Perplexity. How Snowinch serves it (Nitro, not public/).

Problem you solve: you want a canonical plain-text file with links and blurbs that automated tools (crawlers, assistants, internal pipelines) can read without heavy HTML parsing.

What is not proven (being explicit): as of 2026 there is no public vendor documentation proving that /llms.txt alone changes ranking or how often a consumer model (ChatGPT, Perplexity, Gemini, …) cites your brand. There is no published “llms.txt ranking factor”.

What is still worth doing: keep a summary + long-form artefact updated as a source of truth for people building datasets, support flows, or proprietary integrations — and to reduce ambiguity when a system reads your site.

What to put in the file (content)

  • Who you are, what you do, links to marketing pages with one-line descriptions.
  • Contacts and legal lines if partners/compliance need them.
  • A link to /llms-full.txt (or equivalent) if you ship a long transcript.
  • Blog / portfolio entries that are actually public, with short meta (like a sitemap, but plain text).

Typical Markdown-ish structure (plain text is fine):

# Brand name

One line on what you do.

## Pages
- /en/services — …
- /it/services — …

## Blog
- /en/blog/slug — title and SERP description

llms.txt vs classic SEO

AspectSEO (Google Search)llms.txt
GoalIndexing + ranking on SERPsText corpus reusable by tools
Evidence of impactPublic Google guidanceNo public consumer-LLM ranking standard
FormatHTML + structured dataPlain text / light Markdown
MaintenanceOngoing (content + technical)When key pages change

llms.txt does not replace meta tags, canonicals, hreflang, or performance — it complements them.

Implementation on Nuxt / Nitro (Snowinch)

On this site /llms.txt is not a public/ file: it is a Nitro route that generates text at runtime so it stays aligned with blog, portfolio, and i18n (see server/routes/llms.txt.get.ts and utils/buildLlmsSnowinch.ts in the repo). Same pattern for /llms-full.txt.

Why avoid a duplicate public/llms.txt: it conflicts with the dynamic route and risks stale content vs deploy.

Real example (Snowinch)

The public summary is served at:

https://www.snowinch.com/llms.txt

Open it in a browser: UTF-8 text, sensible Cache-Control, no auth. The extended transcript is /llms-full.txt on the same host.

Operational checklist

  1. 200 OK on /llms.txt, Content-Type: text/plain; charset=utf-8.
  2. Consistency with the sitemap and pages that are actually public (no drafts).
  3. Update when services, pricing, team, or blog slugs change.
  4. Do not promise unmeasurable effects on consumer LLMs in sales decks.

Summary

  • llms.txt = machine-readable site documentation — cheap and useful.
  • Do not sell it as a guaranteed AI-search SEO lever.
  • On stacks like Nuxt: prefer server-side generation (or a build step) over a forgotten static file in public/.

Want to ship ideas like these into your product?

Share context, constraints, and goals. We will tell you if partnering makes sense and how to frame the first step.