What you'll learn
- Serve plain text at https://yourdomain.com/llms.txt with no login.
- Use Content-Type text/plain; charset=utf-8.
- Optional: mirror at /.well-known/llms.txt and link from robots.txt or sitemap when you can.
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 the file small (under about 100 KB), UTF-8 encoded, and updated when your business facts change.
Rules to satisfy first
- URL: https://yourdomain.com/llms.txt at the site root (no HTML wrapper, no forced login).
- Format: plain text. Prefer response header Content-Type: text/plain; charset=utf-8.
- Public: no cookies or sessions required to read the file.
- Stable path: keep /llms.txt as the long-term URL; avoid query strings.
- Optional: also serve the same file at /.well-known/llms.txt if your host allows it.
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 5If 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
- Open your web root (same folder as index.html, often public_html).
- Upload the file named exactly llms.txt.
- Set permissions to 644 so the web server can read it.
- 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. Add a rewrite from /.well-known/llms.txt to /llms.txt if you use the mirror path. 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: link rel in head if your platform allows, a line in robots.txt pointing to the file URL, and optionally a sitemap url entry. 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.