Free tool · no email required

llms.txt generator for Shopify

Paste your sitemap. The generator sorts it into the structure a model can use — collections and policies first, duplicates and filtered URLs dropped, products capped — and then tells you the part every other generator leaves out: how to actually serve the file on a Shopify domain.

What an llms.txt file is

An llms.txt file is a plain-text, Markdown-formatted file at the root of a domain that tells a language model what the site is and which pages are worth reading. It was proposed in 2024 as a curated alternative to making a model crawl and guess. Where a sitemap lists every URL unranked, llms.txt is editorial: structure and priority, written on purpose.

Status, stated plainly. llms.txt is a proposal, not an adopted standard. Perplexity has said it supports the file. Google, OpenAI and Anthropic have not, and Google has said it does not use it for Search. Treat this as cheap insurance — an afternoon’s work, a text file — rather than a ranking mechanism. We publish one at /llms.txt on this site for the same reason. Checked 2026-09-09.

Generate the file.

Prefilled with a worked example — an illustrative sitemap extract, not a real store. Replace it with your own; everything stays in this browser tab.

Paste the contents of /sitemap.xml, one of the child sitemaps it links to, or simply a list of URLs one per line. Both formats are read.

Becomes the blockquote at the top of the file — the first thing a model reads. Concrete beats atmospheric.

Zero omits the section entirely. The collections are the map; the sitemap remains the full list.

llms.txt

# Example Brand

> Greens, protein and starter kits, shipped from Ohio.

Sold direct in the US and Canada. Subscriptions available on every product.

## Collections

The catalogue, by category.

- [Greens](https://example-store.myshopify.com/collections/greens)
- [Protein](https://example-store.myshopify.com/collections/protein)
- [Starter Kits](https://example-store.myshopify.com/collections/starter-kits)

## Policies

Shipping, returns and terms — the answers to half of every buying question.

- [Shipping Policy](https://example-store.myshopify.com/policies/shipping-policy)
- [Refund Policy](https://example-store.myshopify.com/policies/refund-policy)
- [Terms of Service](https://example-store.myshopify.com/policies/terms-of-service)

## Pages

- [About](https://example-store.myshopify.com/pages/about)
- [How it Works](https://example-store.myshopify.com/pages/how-it-works)

## Blog

- [Journal](https://example-store.myshopify.com/blogs/journal)
- [How Much Fibre](https://example-store.myshopify.com/blogs/journal/how-much-fibre)

## Products

- [Daily Greens](https://example-store.myshopify.com/products/daily-greens)
- [Whey Isolate](https://example-store.myshopify.com/products/whey-isolate)
- [Starter kit](https://example-store.myshopify.com/products/starter-kit)

## Notes

- llms.txt is a proposed convention, not an adopted standard. Support is partial.
- The sitemap remains the authoritative list of every URL on this store.

14 URLs kept · 5 dropped as duplicates, filters or cart routes

  • Collections 3
  • Policies 3
  • Pages 2
  • Blog 2
  • Products 3

How the file is built

Every other generator flattens your sitemap into a list. Shopify URLs are not a flat list — they are a grammar, and the grammar carries the structure a model cannot otherwise infer.

What goes in which section, and in what order
Section In this example Why it sits where it does
Collections 3 The map of the catalogue. Listed first, always.
Policies 3 Shipping, returns, terms — half of every buying question.
Pages 2 About, how it works, anything explaining the product.
Blog 2 Index and articles, if you publish any.
Products 3 Capped. The collections are the map; the sitemap is the full list.

What gets dropped, and why

  • Query strings ?variant=, ?sort_by=, ?filter.v… and pagination. All of them are the same page in a different order, and all of them canonicalise back to it.
  • The duplicate product route Shopify serves every product at both /products/x and /collections/y/products/x. The canonical points at the first, so the second is normalised onto it and de-duplicated.
  • /collections/all Every product, in no order, with no meaning. It is the opposite of what this file is for.
  • Cart, account, checkout and search Routes that only exist for a logged-in session. Nothing to read.

Where the file goes on Shopify

This is the part that makes most llms.txt generators useless to a Shopify store: a Shopify-hosted domain will not serve a root-level file. robots.txt.liquid is a specific, named exception, and an app proxy answers under /apps/ or /a/ — never at /llms.txt. So there are three real options and each costs something.

Three ways to serve it, checked against Shopify’s theme documentation on 2026-09-09
Option How it works What it costs
A reverse proxy in front of the domain If the domain already routes through Cloudflare, a Worker on the /llms.txt route returns the file directly. This is the only option that puts the file at the root of a Shopify-hosted store. Needs the domain on a proxy you control. Nothing changes in the theme.
A Shopify page, linked from robots.txt Publish the content as /pages/llms and add a comment line pointing at it in robots.txt.liquid. Not at the root, so a client looking only for /llms.txt will not find it. Installable today with no infrastructure. Half the value, honestly labelled.
The front end you already control A headless storefront, or a marketing site on its own host, can serve /llms.txt as a route like any other file. Only applies if something other than Shopify serves the domain.

The proxy route, in full

If the domain already runs through Cloudflare, this is a Worker on the /llms.txt route and nothing in the theme changes.

Cloudflare Worker

export default {
  async fetch(request, env, ctx) {
    const url = new URL(request.url);
    if (url.pathname === "/llms.txt") {
      return new Response(LLMS_TXT, {
        headers: {
          "content-type": "text/plain; charset=utf-8",
          "cache-control": "public, max-age=3600",
        },
      });
    }
    return fetch(request);
  },
};

// Paste the generated file here, or fetch it from https://pointerflow.com/llms.txt.
const LLMS_TXT = `...`;

What this will and will not do

It will not get you into ChatGPT. Google has said it does not use llms.txt for Search; OpenAI and Anthropic have not committed to reading it either. Perplexity has said it supports it. That is the whole of the publicly established position, and any claim beyond it is invention. The file is worth publishing because it costs an afternoon and describes your store accurately — not because a mechanism exists that rewards it.

It is not a substitute for the data on your product pages. A model answering “which greens powder has the most fibre” needs the fibre number in machine-readable form on the product page. No index file supplies that. If you only do one of the two, do the product data — that is what the readiness checker scores.

It goes stale. It is a static file describing a catalogue that changes. Regenerate it when the collection structure changes, not on a schedule — and if that sounds like something that should be generated at build time rather than pasted, it is. Ours is: src/pages/llms.txt.ts builds from the same data the pages do, so it cannot drift.

Definitions

llms.txt
A proposed convention: a Markdown file at a domain’s root describing the site and linking to the pages worth reading.
robots.txt
An adopted standard telling crawlers which paths they may fetch. Permission, not description.
Sitemap
A machine-generated list of every indexable URL. Complete, unranked and unexplained.
Canonical URL
The address a page declares as its real one when the same content is reachable at several. Shopify uses it to point collection-scoped product URLs back at /products/x.
App proxy
A Shopify feature that forwards requests under /apps/ or /a/ to a server you run. Useful, but never at the domain root.

Questions about llms.txt

What is an llms.txt file?

A plain-text file at the root of a domain that describes what the site is and links to the pages worth reading, in Markdown. It was proposed in 2024 as a way for a site to hand a language model a curated map instead of making it crawl and guess. Think of it as an index a human wrote on purpose, rather than a sitemap a machine generated.

Does anyone actually read it?

Partly. Perplexity has stated it supports llms.txt. Google, OpenAI and Anthropic have not committed to reading it, and Google has said publicly it does not use it for Search. So this is cheap insurance — a text file that costs an afternoon — and not a ranking mechanism. Anybody selling llms.txt as a way to get into ChatGPT is describing something that has not been demonstrated.

How is it different from robots.txt or a sitemap?

robots.txt says what a crawler may fetch. A sitemap lists every URL, unranked and unexplained. llms.txt is editorial: it says what the site is, which pages matter, and in what order — the judgement neither of the other two carries.

Where do I put it on Shopify?

This is the awkward part, and most generators skip it. A Shopify-hosted domain will not serve a root-level file — robots.txt.liquid is a specific named exception, and an app proxy answers under /apps/ or /a/, never at /llms.txt. Your realistic options are a reverse proxy on the /llms.txt route if your domain runs through one, publishing the content as a page and linking it from robots.txt, or serving it from a front end you control. All three are laid out on this page with what each one costs you.

Should I list every product?

No. A store with four thousand SKUs that lists all of them has published noise. The collections are the map — they tell a model how the catalogue is organised, which is the thing it cannot infer. The generator caps products for that reason, and the cap is yours to set.

Why does the file have fewer URLs than my sitemap?

Because the generator drops what a model gains nothing from: /collections/all, anything with a query string (filtered, sorted and paginated variants), cart and account routes, and the /collections/x/products/y duplicate Shopify emits for every product in every collection — whose canonical already points at /products/x.

Is anything sent to you?

No. The parsing and the file generation run in this tab. There is no endpoint behind the page and nothing is logged.

Find out what you’re losing.

Before you commit to anything, we tell you exactly what you’re losing and what it costs to stop it. Two weeks. Fixed fee. Credited in full against any build you go ahead with.

Fee
$1,500–$3,000, fixed
Duration
Two weeks
Credited
In full, against any build
You supply
Read access + one 45-minute call