# Free LLMs.txt Generator: Create Your llms.txt File in Seconds

> Source: https://hostinginfos.com/free-llms-txt-generator/  
> Last updated: 2026-10-22

function discover(body) { var raw = String(body.url || 'example.com').trim().replace(/^https?:\/\//i, '').split('/')[0].toLowerCase() || 'example.com'; var host = raw.replace(/^www\./, ''); var label = host.split('.')[0]; var o = 'https://' + host + '/'; var P = [ ['main', 'about-us'], ['main', 'features'], ['main', 'how-it-works'], ['products', 'pricing'], ['products', 'hosting'], ['docs', 'help/getting-started'], ['docs', 'faq'], ['blog', 'blog/what-is-web-hosting'], ['blog', 'blog/best-vps-hosting-providers'], ['blog', 'blog/how-to-choose-a-host'], ['blog', 'blog/website-speed-tips'], ['blog', 'blog/wordpress-security-checklist'], ['blog', 'blog/domain-name-guide'], ['other', 'resources/checklists/launch'], ['optional', 'contact-us'], ['optional', 'privacy-policy'], ['optional', 'terms-of-service'] ]; var max = parseInt(body.max, 10) || 30; var entries = P.slice(0, max).map(function (p) { return { u: o + p[1] + '/', s: 'preview', g: p[0] }; }); return { ok: true, site: { origin: o, host: host, name: cap(label), description: 'Sample description: ' + cap(label) + ' publishes helpful guides, reviews and tools. This line is auto-detected from your homepage meta description.', brands: [cap(label), label] }, mode: 'sitemap', source: o + 'sitemap.xml', found: 84, included: entries.length, entries: entries }; }

 

function meta(body) { var items = (body.items || []).map(function (it) { var p = ''; try { p = new URL(it.u).pathname; } catch (e) { /* ignore */ } var seg = p.replace(/\/+$/, '').split('/').pop() || 'home'; var host = ''; try { host = new URL(it.u).hostname.replace(/^www\./, '').split('.')[0]; } catch (e) { /* ignore */ } var title = seg.replace(/[-_]+/g, ' ').replace(/\b\w/g, function (c) { return c.toUpperCase(); }); return { u: it.u, t: title + ' | ' + cap(host), d: /privacy|terms/.test(seg) ? '' : 'Sample description for the ' + title.toLowerCase() + ' page, taken from its meta description.' }; }); return { ok: true, items: items }; }

 

window.fetch = function (url, opts) { var u = String(url); if (u.indexOf('https://preview.local/') === 0) { var body = {}; try { body = JSON.parse((opts && opts.body) || '{}'); } catch (e) { /* ignore */ } if (u.indexOf('llms-ping') > -1) { return wait(100, json({ ok: true })); } if (u.indexOf('llms-discover') > -1) { return wait(700, json(discover(body))); } if (u.indexOf('llms-meta') > -1) { return wait(350, json(meta(body))); } } return realFetch ? realFetch(url, opts) : Promise.reject(new Error('fetch unavailable')); }; })();

    LLMs.txt Generator 

Create a clean, AI-ready llms.txt file for any website in seconds. Enter your URL, review the result and download it.

   

## Generate llms.txt

 

Enter your website URL. We detect your sitemap, collect your key pages and build a structured file you can edit and download.

     

   

### Your llms.txt

    
    

 

**Next step:**  edit the text above if you like, then upload the file to the root of your website so it loads at `https://yourdomain.com/llms.txt`.

    

## How the LLMs.txt Generator Works

 

Four quick steps from URL to a ready-to-upload file.

  **1. Enter your URL** Type your main website address. No account or sign-up needed. **2. We find your pages** The tool reads your sitemap, or your homepage links if no sitemap exists. **3. We read the details** Page titles and descriptions are collected and grouped into clear sections. **4. Edit and download** Review the Markdown, tweak anything you want, then download llms.txt.    

## llms.txt Example

 

This is what a generated llms.txt file looks like: plain Markdown with a title, a short summary and grouped links.

 

```
# Example Site

> A short summary of what your website is about.

## Main Pages

- [About Us](https://example.com/about/): Who we are and what we do.
- [Pricing](https://example.com/pricing/): Plans and prices.

## Blog

- [How to Choose a Host](https://example.com/blog/how-to-choose-a-host/): A beginner-friendly guide.

## Optional

- [Privacy Policy](https://example.com/privacy-policy/)
```

   

## FAQs

 

Answers to the most common llms.txt questions. Still stuck? [Contact us](https://hostinginfos.com/contact-us/).

  What is llms.txt? 

`llms.txt` is a Markdown file that gives large language models a clean, curated overview of your website: who you are, plus links to your most important pages, without the clutter of navigation menus, scripts and layout code.

   How does this generator work? 

You enter your website URL. The tool looks for your sitemap (and falls back to your homepage links), reads each page’s title and meta description, groups the pages into sections such as Main Pages and Blog, and builds a Markdown file you can preview and download.

   Why should I add an llms.txt file to my website? 

It gives AI tools a focused, easy-to-read map of your best content, which may help them understand, summarize and reference your site more accurately. It takes minutes to create and costs nothing to publish.

   Where do I upload my llms.txt file? 

Upload it to the root of your domain so it is reachable at `https://yourdomain.com/llms.txt`. With cPanel, use File Manager and place it in `public_html`.

   Is llms.txt the same as robots.txt or sitemap.xml? 

No. `robots.txt` tells crawlers what they may access, `sitemap.xml` lists URLs for discovery, and `llms.txt` presents a curated, human-readable summary of your content in Markdown for AI systems.

   Do I need technical knowledge to use this tool? 

No. Enter your URL, generate the file, download it and upload it to your site root. If you can upload a file to your hosting account, you can do this.

   Will llms.txt improve my SEO rankings? 

There is no guarantee. Major search engines have not confirmed that they use llms.txt as a ranking signal, so treat it as a low-cost, forward-looking addition that may help AI tools understand your content, not as a ranking trick.

   Can I edit the generated file before uploading it? 

Yes. The result appears in an editable box. You can refine descriptions, remove pages or reorder sections before you download or copy it.

   Does this tool publish the file to my website automatically? 

No. It only generates the file. You download it and upload it to your site root yourself, which keeps you in full control of what gets published.

   Why are some of my pages missing? 

The tool includes up to the number of pages you choose, prioritising main pages and your newest posts. Pages missing from your sitemap, or blocked from public access, will not appear. Choose a higher page limit, or add pages to the file by hand.

   Does the tool store my website data? 

Page titles and descriptions are cached for about an hour to speed up repeat requests. Nothing is published, and only publicly accessible pages are read.

    

## Related Resources

 

Learn more about hosting and choosing the right provider for your website.

  [Guide  
 What Is Web Hosting? A Complete 2026 Guide  
 A plain-English guide to hosting types, renewal prices, uptime and choosing a host.  
 Read the guide →](https://hostinginfos.com/blog/what-is-web-hosting-a-complete-guide/)  
 [Hosting Providers  
 Best Managed Hosting Provider in 2026  
 Verified pricing, real renewal costs and overage rates, with the right pick for your budget.  
 See the top picks →](https://hostinginfos.com/blog/best-managed-hosting-provider/)  
 [Hosting Providers  
 Best Cloud Hosting Providers in 2026  
 Cloudways, DigitalOcean, Vultr, Kinsta and more, with real pricing and honest drawbacks.  
 See the top picks →](https://hostinginfos.com/blog/best-cloud-hosting-providers/)  
 [Hosting Providers  
 Best Node.js Hosting Providers in 2026  
 Real prices, renewal costs and the right host for APIs, Next.js and side projects.  
 See the top picks →](https://hostinginfos.com/blog/best-node-js-hosting-providers/)  
 [Hosting Providers  
 Best DeepSeek Harness Hosting Providers in 2026  
 Real prices, renewal costs and which host fits your setup and skill level.  
 See the top picks →](https://hostinginfos.com/blog/best-deepseek-harness-hosting-providers/)  
 [Guide  
 Website Builder Glossary: 60+ Terms Explained  
 Plain-English explanations of web design, SEO, security and e-commerce jargon.  
 Read the glossary →](https://hostinginfos.com/blog/website-builder-glossary/)    

## Need reliable hosting for your website?

 

Read our independent hosting reviews and comparisons, with real pricing, renewal costs and honest drawbacks.

 

[Hosting Reviews](https://hostinginfos.com/blog/category/hosting-reviews/)  
 [Hosting Providers](https://hostinginfos.com/blog/category/hosting-providers/)  
 [Free DNS Checker](https://hostinginfos.com/dns-checker-tool/)

  

 

var DISCOVER = root.getAttribute('data-discover'); var META = root.getAttribute('data-meta'); var LABELS = { main: 'Main Pages', products: 'Products & Services', docs: 'Docs & Support', blog: 'Blog', other: 'More Pages', optional: 'Optional' }; var ORDER = ['main', 'products', 'docs', 'blog', 'other', 'optional']; var BATCH = 5;

 

var form = root.querySelector('.hi-form'); var urlIn = root.querySelector('#hi-url'); var nameIn = root.querySelector('#hi-name'); var maxSel = root.querySelector('#hi-max'); var btn = root.querySelector('.hi-btn'); var statusBox = root.querySelector('.hi-status'); var prog = root.querySelector('.hi-progress'); var bar = root.querySelector('.hi-bar span'); var ptext = root.querySelector('.hi-ptext'); var result = root.querySelector('.hi-result'); var out = root.querySelector('.hi-out'); var stats = root.querySelector('.hi-stats');

 

function setStatus(msg, kind) { statusBox.textContent = msg || ''; statusBox.className = 'hi-status' + (msg && kind ? ' is-' + kind : ''); } function setBusy(on) { btn.disabled = on; btn.classList.toggle('is-loading', on); btn.firstChild.nodeValue = on ? 'Generating' : 'Generate'; } function setProgress(pct, text) { prog.hidden = false; bar.style.width = Math.max(0, Math.min(100, pct)) + '%'; ptext.textContent = text || ''; }

 

function post(url, data) { return fetch(url, { method: 'POST', credentials: 'same-origin', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify(data) }).then(function (res) { return res.text().then(function (txt) { var j = null; try { j = JSON.parse(txt); } catch (e) { /* not JSON */ } if (!res.ok || !j) { throw new Error((j && j.message) ? j.message : 'The server returned an unexpected response (' + res.status + '). Please try again.'); } return j; }); }); }

 

function norm(s) { return String(s || '').toLowerCase().replace(/[^a-z0-9]/g, ''); }

 

function cleanTitle(t, brands) { t = String(t || '').replace(/\s+/g, ' ').trim(); if (!t) { return ''; } var m = /^(.+?)\s+[|\u2013\u2014\u00b7\u2022-]\s+([^|\u2013\u2014\u00b7\u2022-]+)$/.exec(t); if (m) { var tail = norm(m[2]); for (var i = 0; i < brands.length; i++) { var b = norm(brands[i]); if (!b || !tail) { continue; } if (tail === b || (b.length >= 5 && tail.indexOf(b) > -1 && tail.length <= b.length + 12)) { t = m[1].trim(); break; } } } return t.length > 110 ? t.slice(0, 109).trim() + '\u2026' : t; }

 

function slugTitle(u) { try { var p = new URL(u); var seg = p.pathname.replace(/\/+$/, '').split('/').pop() || p.hostname; try { seg = decodeURIComponent(seg); } catch (e) { /* keep */ } seg = seg.replace(/\.[a-z0-9]+$/i, '').replace(/[-_]+/g, ' ').trim(); return seg.replace(/\b\w/g, function (c) { return c.toUpperCase(); }) || p.hostname; } catch (e) { return u; } }

 

function esc(s) { return String(s).replace(/\[/g, '(').replace(/\]/g, ')'); }

 

function build(d, meta, nameOverride) { var site = d.site; var brands = site.brands || []; var name = (nameOverride || site.name || site.host).trim(); var lines = ['# ' + name, '']; if (site.description) { lines.push('> ' + site.description, ''); } ORDER.forEach(function (g) { var items = d.entries.filter(function (e) { return e.g === g; }); if (!items.length) { return; } lines.push('## ' + LABELS[g], ''); items.forEach(function (e) { var m = meta[e.u] || {}; var title = cleanTitle(m.t, brands) || slugTitle(e.u); var desc = String(m.d || '').replace(/\s+/g, ' ').trim(); lines.push('- [' + esc(title) + '](' + e.u + ')' + (desc ? ': ' + desc : '')); }); lines.push(''); }); return lines.join('\n').replace(/\n{3,}/g, '\n\n').trim() + '\n'; }

 

async function generate() { var raw = urlIn.value.trim(); if (!raw) { setStatus('Please enter your website URL, for example example.com.', 'error'); urlIn.focus(); return; } setStatus('', ''); result.hidden = true; setBusy(true); setProgress(6, 'Finding your sitemap and key pages\u2026');

 

try { var d = await post(DISCOVER, { url: raw, max: parseInt(maxSel.value, 10) }); var total = d.entries.length; var meta = {}; var failed = 0;

 

for (var i = 0; i < total; i += BATCH) { var batch = d.entries.slice(i, i + BATCH); setProgress(12 + (i / total) * 83, 'Reading page details\u2026 ' + Math.min(i, total) + ' of ' + total); try { var r = await post(META, { items: batch.map(function (e) { return { u: e.u, s: e.s }; }) }); (r.items || []).forEach(function (it) { meta[it.u] = it; }); } catch (err) { failed++; if (/too many/i.test(err.message)) { break; } } } setProgress(100, 'Done'); out.value = build(d, meta, nameIn.value); var kb = (new Blob([out.value]).size / 1024).toFixed(1); var srcText = d.mode === 'sitemap' ? 'sitemap' : 'homepage links (no sitemap found)'; stats.textContent = 'Included ' + d.included + ' of ' + d.found + ' pages found via ' + srcText + ' \u00b7 ' + kb + ' KB'; result.hidden = false; if (failed) { setStatus('Some page details could not be read, so a few entries use titles taken from their URLs. You can edit them above.', 'warn'); } setTimeout(function () { prog.hidden = true; }, 600); } catch (e) { prog.hidden = true; setStatus(e.message || 'Something went wrong. Please try again.', 'error'); } finally { setBusy(false); } } form.addEventListener('submit', function (e) { e.preventDefault(); generate(); }); result.addEventListener('click', function (e) { var b = e.target.closest ? e.target.closest('[data-act]') : null; if (!b) { return; } var act = b.getAttribute('data-act'); if (act === 'copy') { var done = function () { b.textContent = 'Copied'; b.classList.add('is-done'); setTimeout(function () { b.textContent = 'Copy'; b.classList.remove('is-done'); }, 1500); }; if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(out.value).then(done, function () {}); } else { out.select(); try { document.execCommand('copy'); done(); } catch (x) { /* ignore */ } } } else if (act === 'download') { var blob = new Blob([out.value], { type: 'text/plain;charset=utf-8' }); var a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'llms.txt'; document.body.appendChild(a); a.click(); setTimeout(function () { URL.revokeObjectURL(a.href); document.body.removeChild(a); }, 500); } }); /* Preview convenience: pre-fill and run once so the result is visible immediately */ urlIn.value = 'hostinginfos.com'; generate(); })();
