Slash menu & drag handles
Type / for any block. Grab a handle to move it.
There is no feature gate and no paid tier. What follows is what you get when you install Salt.md.
A block editor built on BlockNote, with the pieces you expect from a modern document tool.
Type / for any block. Grab a handle to move it.
Headings, lists, checklists, quotes, code with syntax highlighting, tables, images, callouts, toggles and columns.
Mention a page with @, and see everything that links back to the one you are reading.
Emoji or uploaded icons, cover images, and a description under the title.
Discuss inline, resolve when done. Visible in the document and on database cards.
Every page keeps revisions. Compare and restore an older state.
Any page can become a database. Rows are pages themselves, so a record can hold a whole document.
Text, number, select, multi-select, date, checkbox, URL, person, relation, rollup and formula.
Table, Kanban board and gallery. Each view keeps its own filters, sorts and visible columns.
Drag cards between columns, scroll columns independently, and pick your own column colours.
Stack conditions per view. Large databases page in as you scroll instead of loading everything at once.
Share a form that writes rows into a database, without giving anyone an account.
Subscribe to a date property as an iCal feed in your usual calendar app.
Multi-user from the ground up, with the sync server built into the same process.
See who else is on the page and where they are typing.
Yjs merges concurrent edits, including ones made while offline.
Owner runs the instance, admin manages accounts and workspaces without reaching anyone's content, workspace admin owns their own workspace, member and viewer get what they are given.
An owner can take read-only access to a workspace they are not in: time-boxed to two hours, with a written reason, logged, and the workspace admins are emailed and can end it early.
Keep a page to yourself inside a shared workspace, and every account gets a space nobody else can be added to.
Disabling an account is the default. Deleting one shows what hangs off it first and asks for a successor to take over shared workspaces.
Read-only sharing by link, optionally password-protected and with an expiry date.
Who changed what, and whether it was a human or an agent.
The parts that decide whether self-hosting is pleasant or a second job.
Statically linked, no CGO, frontend embedded. Copy it to a server and run it.
Built-in backup and restore that are safe to run against a live instance.
argon2id password hashing, TOTP two-factor, optional Google and Microsoft sign-in.
Ctrl/Cmd + K over SQLite FTS5, including the text inside uploaded PDFs. It finds the paragraph, not just the page, and the index handles German as well as English.
Interface, dates and times follow the reader, automatically or by hand. Adding a language is one command, and the build fails if a user-visible string was left behind.
Installs as a PWA and keeps working when the connection drops.
Point TLS certificates at it, or let it open a Cloudflare tunnel for you.
Install it, open the browser, create your admin account. If you do not like it, delete one directory and it is gone.
$ curl -fsSL https://raw.githubusercontent.com/salt-md/salt.md/main/install.sh | sh