Your HTML, untouched
Every page is a template in a real code editor—with Emmet, Prettier and a live preview. Shared CSS and JS files, snippets and components with slots.
A page tree, a real code editor and templates with data—from collections, REST APIs and workflows. No theme marketplace, no plugin zoo, no WYSIWYG that mangles your markup. One Go binary, one SQLite file, done.
Linux, Windows, macOS and Docker. Admin in English, German, French, Italian and Spanish.

IllusionCMS doesn’t try to be a website builder. It gives you a clean place for your HTML, CSS and JavaScript—and the data, automation and safety nets around it.
Every page is a template in a real code editor—with Emmet, Prettier and a live preview. Shared CSS and JS files, snippets and components with slots.
Collections with typed fields, any REST API as a data source and IllusionDB via workflows. data() and item() work the same everywhere.
Turn any snippet into a building block with typed parameters. Editors fill in forms—the markup stays yours.
Move from Webflow, WordPress or static HTML: page tree, CSS/JS, images and fonts are imported, links rewritten—repeatable without duplicates.
Linked translations for pages and entries. hreflang, language switcher and sitemap come automatically.
Node-based flows for forms, webhooks, schedules and email—with JavaScript nodes when you need them. No separate automation server.
Pages, snippets and building blocks use one familiar template language. Detail pages for blog posts or products are a single catch-all page.
route.slug and real 404ssrcset and WebP, generated automaticallyrobots.txt, Open Graph and redirects out of the box{% if route.slug %}
{% with post=item("blog", "slug", route.slug) %}
{% if not post %}{{ not_found() }}{% endif %}
<article>
<h1>{{ post.title }}</h1>
{% blocks post.content %}
</article>
{% endwith %}
{% else %}
{% include "blog/list" %}
{% endif %}
No database server, no queue, no cache cluster. Start the binary, put a reverse proxy in front—and sleep well.
Version history with restore, conflict warnings, automatic redirects and nightly backups.
Build locally, push to production with one click—or export a site as static HTML.
Media locally or on S3-compatible storage like Garage, AWS or R2—with a guided migration.
Visits, pages, referrers and countries as daily totals. No cookies, no raw data, no banner.
REST API with tokens, atomic batches with idempotency keys, schema endpoint and webhooks.
Files only for signed-in users or via expiring signed links—for drafts and downloads.
Each site has its own domains, sitemap, icon and 404 page.
Security headers, rate limiting, CSRF protection and optional headless mode.
Grab the archive for Linux, Windows or macOS—or the Docker package for Compose and Coolify.
One command. Data lives in a single folder.
$ ./illusioncms -addr :8080 -data ./data
Open /cms-admin, create your account—and start from scratch, import a site or load the demo website.
IllusionCMS is free. No account, no telemetry, no strings attached.