Platinum.ai
← Guides

Platinum.ai · 8 min read

How to Upload and Serve Your llms.txt File

Put your AI Website Profile at /llms.txt so crawlers and assistants can find it: core rules, quick verification with curl, and notes for WordPress, Vercel, Webflow, and more.

What you'll learn

  • Serve plain text at https://yourdomain.com/llms.txt with no login.
  • Use Content-Type text/plain; charset=utf-8.
  • A file at a subpath, such as /docs/llms.txt, covers the pages beneath that path.

Your llms.txt file is your AI Website Profile in one place. This page explains how to host it so tools can fetch it reliably. Keep it UTF-8 encoded and updated when your business facts change. The specification sets no maximum file size, but the point of the file is that it fits comfortably in an agent's context window, so stay curated rather than exhaustive.

Rules to satisfy first

  1. URL: https://yourdomain.com/llms.txt at the site root (no HTML wrapper, no forced login).
  2. Format: plain text. Prefer response header Content-Type: text/plain; charset=utf-8.
  3. Public: no cookies or sessions required to read the file.
  4. Stable path: keep /llms.txt as the long-term URL; avoid query strings.
  5. Scope: a file covers the URLs beneath its own path, so /llms.txt describes the whole site and /docs/llms.txt describes only /docs/. Where both exist, agents use the more specific one.

Why not /.well-known/llms.txt

You may see advice to mirror the file under /.well-known/. The specification considered and rejected that location: well-known URIs exist only at the origin root, so anyone who controls just a path on a shared host (a GitHub Pages project site, for example) could never publish one. Scoping a profile to the path it sits in is the whole point, and a single root location cannot express it. A mirror does no harm if you already have one, but /llms.txt is the address to treat as canonical.

Verify after upload (any host)

In a terminal, replace your domain and run:

curl -I https://yourdomain.com/llms.txt
# Expect: HTTP 200 and Content-Type: text/plain

curl -s https://yourdomain.com/llms.txt | head -n 5

If you see a 404, HTML, or a redirect chain that ends in the wrong content type, fix hosting before worrying about SEO extras.

FTP, cPanel, or generic hosting

  1. Open your web root (same folder as index.html, often public_html).
  2. Upload the file named exactly llms.txt.
  3. Set permissions to 644 so the web server can read it.
  4. If .txt files download oddly, add a plain-text rule in .htaccess for Apache, for example Files llms.txt with ForceType text/plain.

WordPress (self-hosted)

Upload llms.txt next to wp-config.php via FTP or a file manager plugin, then open https://yourdomain.com/llms.txt in the browser. Clear or bypass caching plugins for .txt if the wrong version appears.

Vercel, Netlify, GitHub Pages

Place the file in your published static root (for example public/llms.txt). Commit and deploy. On Netlify you can add a _headers file if you need to force text/plain. On Vercel, public/ maps to the domain root.

Firebase Hosting

Put llms.txt in your public folder. In firebase.json, add hosting headers for /llms.txt with Content-Type text/plain; charset=utf-8 and a sensible Cache-Control. Deploy and test with curl.

Webflow

Use Site Settings and the LLMs.txt upload area when available, publish to your custom domain, then verify. Subdomain-only staging may not mirror production behavior.

When root upload is impossible

Some builders cannot place files at domain root. Host the file on infrastructure you control (for example a small static bucket or worker) and add discovery signals: a <link rel="describedby" href="…/llms.txt"> element in your head if your platform allows custom markup, a line in robots.txt pointing to the file URL, and optionally a sitemap url entry. The rel="describedby" relation is the one named in the specification, so prefer it over an invented rel value. Native root hosting is still the goal when your platform adds support.

Common problems

  • 404 or catch-all rewrite to index: add an exception so /llms.txt is not handled by your SPA router.
  • HTML returned instead of text: you created a CMS page; upload a static file instead.
  • Stale content: purge CDN cache after updates.