Kanban without the noise. Single file, your folder, your data — no servers, no accounts, no telemetry.
What you can do
.kanzen.json files in a folder you pick — sync them via Dropbox / iCloud / git for free.This intro only shows once. The ? button in the header has the full help.
What's your name? It's used to track who made changes to cards. You can change it later in settings.
Stored locally only. KanZen has no servers, no accounts, no telemetry.
Deploy your own Worker (~3 min, free tier) to sync boards across devices. KanZen never sees your passphrase — boards are AES-GCM encrypted client-side. Setup guide
Device id:
Kanban without the noise. Single HTML file, your folder, your data. No server, no account, no board limits.
Click 📁 to connect a folder. KanZen writes each board as a sorted-key, pretty-printed .kanzen.json file you can read, back up, sync with Dropbox / iCloud / Syncthing / git — multi-device for free, no server. The folder handle is remembered between sessions in browsers that support it (Chrome). Without a folder, boards live in this browser's IndexedDB and you can still export them as JSON anytime.
When a folder is connected, KanZen polls the disk every 5 seconds. If another tool (or another device via git/Dropbox) changes a board file, KanZen reloads it automatically and toasts "Board updated from disk". Your own writes are write-locked for 2 s so you never see your own save bounce back at you.
For boards you collaborate on via git, Settings → Team mode splits the board into a folder: _board.json (columns, members, labels), cards/<id>.json (one file per card), and _activity.jsonl (append-only log). Each card edit only rewrites that card's file, so two people editing different cards never produce a merge conflict. Lossless toggle in both directions.
Optional. Deploy your own tiny Cloudflare Worker (3-minute setup) and configure it in Preferences → Cloud sync. Boards are AES-GCM encrypted client-side with a passphrase you control — KanZen never sends the passphrase to the Worker, so even with full Worker access nobody can read your boards. The cloud icon in the header turns green when synced.
Auto-save runs every 5 seconds when there are unsaved changes; destructive actions (delete card / column / board) save immediately. Snapshots (📸) capture the full board so you can compare or restore. Auto-snapshot before destructive actions is on by default.
Nothing leaves your machine. Even share URLs encode the board into the hash fragment, which is never sent to any server — not even to the host where this site lives.
| 📁 | Connect folder. Save boards to disk as .kanzen.json files. |
| 📸 | Snapshots. Take, restore, or compare snapshots — card-level diff with added / removed / modified. Auto-snap before destructive actions and optional daily auto-snap. |
| 📜 | Activity feed. Every change to the board with relative timestamps. |
| 🔗 | Share. The whole board encoded into a URL hash fragment, optionally AES-GCM-encrypted with a passphrase. Compressed with the browser-native CompressionStream API (zero CDN dependencies on modern browsers), with a size gate (green ≤8 K, yellow ≤64 K, blocked beyond). QR code for in-person handoff. |
| ⚙ | Settings. Board name, columns, WIP limits, members, labels, background (8 gradients, 8 solids, custom). |
| ⇅ | Import / export. KanZen JSON, CSV, Markdown, or Trello JSON import. |
| ↶ ↷ | Undo / redo. 50 deep per board. |
| ⤓ | Install. Add as an app (only appears when the browser exposes the prompt). |
| ◐ | Theme. Toggle dark / light. |
Click any card to edit. You get a markdown description (live preview), checklist with progress bar, due date, priority, labels, members, file attachments (embedded in the board JSON), and threaded comments. The card face shows label chips, priority badge, due date, members, checklist progress, attachment count, and 💬 comment count.
Add, rename, reorder by dragging the header, collapse to save space. Set a soft WIP limit per column — KanZen highlights it when you exceed it but doesn't block you.
Drag cards between or within columns. Drag column headers to reorder columns. On the calendar view, drag a card between days to update its due date.
Switch between Board (kanban), List (sortable table — click any column header to sort), and Calendar (month grid — drag a card between days to set its due date) using the pills on the right of the filter bar. The view sticks per board.
Filter by label, priority, due-date bucket (overdue / today / this week / no date), or member. Non-matching cards dim instead of hiding, so you keep the board's shape and your WIP limits stay meaningful.
Press / to focus the search box. Matches both card titles and descriptions; same dimming behaviour as filters.
| N | New card in the focused column (or first column) |
| E / Enter | Edit focused card |
| / | Focus search |
| ← → ↑ ↓ | Move card focus |
| Cmd/Ctrl+Z | Undo |
| Cmd/Ctrl+Shift+Z | Redo |
| Esc | Close modals |
Long-press any card to bring up a "Move to…" popover with all other columns.