Free & open source

Hand your client the site, not the code.

CraftPages opens the plain-HTML site you built and lets your client edit it like a document: text, images, SEO and a blog in your own design. Nothing is written until they click Save all, and the layout stays yours. It publishes to Cloudflare or any web host over FTP.

Editing your own site? It works the same, and it's free either way.

Go on, click the headline and type

index.html
Crumb & Co.MenuVisitOrder

Fresh sourdough, every morning at 7

Slow-fermented for 36 hours, baked in the old brick oven on Mill Street.

Order for tomorrow

Country loaf

€6.50

Rye & seeds

€7.00

Cinnamon knots

€3.20

A working copy of the editor. Change the headline, add or remove a loaf: nothing is written until Save all, and Discard brings it all back.

Your HTML is the site.

Hand-coded, exported from a builder, or made by an AI: static sites are fast, cheap and safe. Changing one was the hard part. CraftPages is the editor they were missing.

  • No databasePosts, pages and settings are files in your folder.
  • No serverNothing to install, update or patch on your host.
  • No lock-inUninstall the app and the site is exactly as it was, plus your edits.

Set it up once. Hand it over.

  1. You open the site folder

    Any plain-HTML site: hand-coded, exported from a builder, or made by an AI. Nothing to convert, no templates to write, no git needed.

  2. Your client clicks and edits

    Text, links, images, SEO and blog posts, right on the page. The header and footer change on every page at once. The layout and the code stay as you built them.

  3. They publish

    One click to Cloudflare, free, or to their hosting over FTP or SFTP. Only changed files upload, and every publish is kept so you can put an older one back.

Safe for them. Complete for you.

What your client gets

Edit on the page
Click a heading or paragraph and type. Only the bytes they change are touched; the rest of the file stays identical.
Add, copy, reorder
Cards, team members, menu items: duplicate one, edit it, move it, delete one. Your markup, your classes.
Images that behave
Uploads are resized, stripped of location data, and saved as JPEG when that's smaller.
Nothing to break
Edits wait as drafts until Save all, survive restarts, and every save can be undone.

What you get

Many sites, many accounts
Each project publishes to its own Cloudflare account or server: yours, or a client's.
SEO checks
Titles, descriptions, social images, headings, alt text, broken links and orphan pages, each with a link to the fix.
Several languages
A folder per language, real pages linked with hreflang, a status for every translation and a language switcher in your own header.
Site search
A fast search box for visitors, built from the pages. No service to sign up for; it's a few static files.
Code when you need it
A page's HTML, CSS and JS in the editor from VS Code, with a live preview. Off for clients unless you turn it on.

A blog that looks like the rest of the site.

Pick a page for posts and one for the list, then point at where the title, date, cover and cards go. Posts are written in the WordPress block editor, and pasting from Google Docs just works.

CraftPages builds every post, the list with your own pagination, tag pages, an RSS feed and the sitemap, as plain HTML pages in the folder. Give a post a future date and it goes live then, right from your computer.

This site's blog is made the same way. Read the blog

Coming next: schedule page edits too, like a promo that goes live at 8 AM and comes down when the sale ends.

Publish to Cloudflare, or the hosting they already pay for.

Cloudflare hosts static sites for free, and CraftPages sets up the Worker for you. Already on shared hosting, cPanel or a VPS? Publish over SFTP, FTPS or FTP instead.

Only changed files upload, images before pages. Files CraftPages didn't upload are never deleted. Every publish is kept in the project's history, so an older version is one click from coming back.

Want faster pages? CraftPages can minify styles and scripts, cache them for a year, put small stylesheets into the pages and host Google Fonts on the site itself, all in the copy it publishes. Your files stay as you wrote them.

Several computers on one site? Sync keeps them in step through your own Cloudflare account or server. It's in beta.

Your AI changes the templates. You approve every change.

Words and pictures are yours to edit by hand. For structure (a new section, a pricing table, a whole new page) connect Claude Code, Claude Desktop, OpenAI Codex or another MCP client. It reads your site, sees what you clicked, and proposes changes.

You get a diff and a live preview, then accept, reject or revert. Nothing is written until you say so, and CraftPages never asks for an AI key.

How it compares.

CraftPagesPage buildersGit-based CMSWordPress
Works with the site you already haveYesNo, rebuild it on the platformNeeds a generator and gitNo
Safe to hand to a clientYes: drafts, Save all, undo; the layout stays yoursYes, inside their editorFor content fields, after a build setupWith care: plugins and updates
What you end up withYour own HTML filesA site on their hostingGenerator outputPHP and a database
Blog in your designYes, built from your pagesYesYes, with templatesYes, with a theme
Where it can liveCloudflare (free) or any host over FTP / SFTPTheir hosting onlyStatic hosts with a build stepPHP hosting
Server to maintainNoneNone, it's theirsNoneYes
PriceFree, open sourceMonthlyFree to paidFree, plus hosting

Questions.

Can my client use it?

Yes, that's what it's for. You set up the project and the hosting once; they install the app, open the folder and edit words, images and posts. The layout and code stay as you built them, and the code editor is off unless you turn it on. Each project can publish to its own Cloudflare account or server, so the hosting can be in the client's name.

Where can I host the site?

Anywhere that serves static files. Publishing is built in for Cloudflare, whose free plan hosts static sites at no cost, and for any web host with an FTP or SFTP login. Setting up Cloudflare takes about five minutes: here's how. For a web host, see publishing over FTP or SFTP.

Can two people, or two computers, work on one site?

Yes. CraftPages warns before anyone publishes over a version it didn't make, and sync keeps several computers in step through your own Cloudflare account or server, showing who has which page open. Git works too. How to share a site.

What kind of sites does it work with?

Plain HTML sites: hand-coded, exported from a builder or design tool, or generated by an AI. Sites built with a generator (Hugo, Astro, Eleventy) are better edited in their source files, since CraftPages would edit the output.

Is CraftPages a flat-file CMS?

In spirit: there's no database and your content lives in files. But a flat-file CMS like Grav or Kirby runs on a PHP server. CraftPages runs on your computer and your site stays fully static, so there's nothing to install or patch on the host.

Why does Windows warn me when I first open it?

The Windows installer isn't code-signed yet: click More info → Run anyway. The Mac app is signed and notarized by Apple, so macOS opens it without asking. The installation guide has the details, and the source code is public.

Why is it free?

CraftPages is open source under the GPL, like WordPress and the editor it borrows. Nothing in the app is locked. It's made by the people behind CraftForms, which adds forms and bookings to static sites.

What happens if I stop using it?

Nothing. The site is your HTML, edited in place. Delete the .sitecms folder and it's as if CraftPages was never there.

Download CraftPages.

Version 1.5. Free and open source. No account, no telemetry, no subscription.

CraftPages is a desktop app for macOS, Windows and Linux. Open this page on your computer to download it.

macOS

macOS 12 or later

Apple Silicon Intel

Apple Silicon is any Mac with an M chip (2020 and later).

Windows

Windows 10 or 11, 64-bit

Download installer

Updates itself when a new version is out.

Linux

x64

AppImage .deb (Debian, Ubuntu)

The AppImage updates itself.

The Mac app is signed and notarized by Apple. The Windows installer isn't signed yet, so Windows asks once before opening it. Installation guide · Set up Cloudflare · What's new in 1.5 · Source code