Skip to content

Free vs Pro

Markdown

There are two editions and one codebase. The free edition is MIT-licensed and is produced from the paid starter by a script that deletes files — not by a fork, and not by stripping marked regions out of shipped source.

The line between them, in one sentence: free is the presentation layer, paid is the monetisation layer. Free builds a real, good static directory. Paid turns that directory into a business that takes submissions, charges for them, and publishes itself.

Free (MIT) Paid
Data source Markdown files Markdown or D1, with the whole submit → pay → approve → publish loop
Pages listings, detail, categories, tags, search, blog same
SEO meta templates, chunked sitemap, RSS, static OG image, file-budget check plus programmatic SEO, the internal-link engine, generated OG images, the build-time SEO report
Monetisation none paid submission plans, featured placements, click tracking, the review-queue wait estimate with an upgrade offer
Ads the four placements and the /advertise/ page same
Submitters none — there is no form the two-step form, sign-in by emailed link or Google, an /account/ page listing their submissions
Admin none — it does not even deploy a Worker review queue, transactional email, a daily digest, a config-gap checklist
Themes 1 preset 3 presets
Tooling a basic AGENTS.md the CLI, the agent skills, this documentation site, lifetime updates
Newsletter third-party embed slot self-hosted D1 signup

The two strongest reasons to pay are on the paid side of that line and nowhere else: taking paid submissions, and capturing long-tail search traffic with generated pages. The free edition is not crippled to make a point — it is genuinely useful, and its job is to be good enough that the code quality speaks for itself.

This matters more than it looks, because it is what stops the two editions from drifting apart.

There are no @pro-start / @pro-end markers anywhere in the source, and none may be added. The free edition is produced by deleting whole files, listed in one manifest, with three facade modules — the listings loader, the feature registry and the integration list — each having a .free twin that replaces it wholesale.

Every entry in that manifest asserts. A delete path that matched nothing, a find-and-replace that matched nothing, a config field that was not there: all fatal. When the paid source moves underneath the derivation, it fails loudly rather than shipping a paid file inside the MIT tree or leaving an import pointing at a directory it just removed.

The free edition deletes every route with prerender = false, the whole server layer, the Worker entry point and the database. What is left is files. wrangler deploy --dry-run is the proof:

Free edition Paid starter
Worker script uploaded none yes
Upload size 0.34 KiB 2,074 KiB
Bindings none three

Zero bytes of Worker script means there is nothing to invoke, nothing to cold-start and nothing that can consume the request quota. It also means there is no submissions endpoint, which is the trade.

The free tree runs 524 of the paid tree’s tests — the suites whose subject was deleted go with it.

Start free if you want to read the code before paying for it, or if a static directory from Markdown is genuinely all you need. create-zerodirs gives you the free edition by default and the paid one with --pro.

Moving from free to paid later is not a migration you have to plan for. Your content, your site.config.ts and your public/ directory are the same in both, and those are the three things that are actually yours.

The free edition is MIT: do what you like, including commercially.

The paid starter is licensed per buyer — a perpetual licence to build unlimited sites for yourself or for clients. Reselling or redistributing the starter itself is not permitted. The demo content is separate again: the sample listings describe real products and are not licensed to you as editorial.