a Logseq
alternative,
honestly.
A privacy-first, open-source platform for knowledge management and collaboration.
what Logseq got right.
We're not here to bash. Logseq earned its users by nailing things outl stands on the shoulders of.
- ✓ Files live on your disk as markdown. Local-first by default.
- ✓ Open source under AGPL-3.0 — you can read and contribute.
- ✓ Outliner UX comparable to Roam with backlinks, daily journal, queries.
- ✓ A real plugin ecosystem with a marketplace.
where it breaks for an outliner power-user.
Your `.md` is polluted with UUIDs.
Logseq writes id:: 6601a2c1-... into every block of your file. Open it in VS Code, cat, mdbook, pandoc, hugo — it's full of metadata garbage that you didn't write. git diff shows UUID lines shifting around when you reorder a single bullet.
Sync is paid and uses file-rsync semantics.
Logseq Sync is a Pro-tier subscription. Worse, it's not a real merge algorithm — it's a file-flavored rsync. When two devices write the same file, the newer one wins. Same loss as Roam, just with the illusion of local files.
The DB version split the community.
Logseq's pivot to a database backend (instead of markdown files) was announced years ago and shipped half-broken for over a year. File-based users are stuck wondering if their format is still supported. The roadmap is in flux.
Mobile experience is famously fragile.
Years of GitHub issues complaining about sync drops, performance and missing features compared to desktop. The codebase being Electron-on-mobile via Capacitor doesn't help.
you `git diff` a single-block move.
You open pages/projects.md in VS Code, drag a bullet from the bottom to the top, save. git diff should show 1 line moved. Instead it shows ~12 lines changed: the id:: UUID lines under each affected block shift indentation, the collapsed:: flags re-emit, an HTML comment appears. Your version history is unreadable. Multiply by 50 edits per day.
outl's .md never contains UUIDs. Block IDs live in a separate .foo.outl JSON sidecar. git diff shows what you actually changed — nothing else.
Logseq vs outl
| feature | Logseq | outl |
|---|---|---|
| open source | AGPL-3.0 | MIT |
| ships as a native binary | ✕ electron | ✓ rust |
| clean markdown (no UUIDs) | ✕ | ✓ |
| tree-CRDT sync (provably correct) | ✕ | ✓ algorithm · sync transport phase 2 |
| code blocks that execute (5 langs) | limited | ✓ python, lisp, js, lua, rust |
| TUI / terminal editor | ✕ | ✓ vim keys + slash commands |
coming from Logseq?
one command.
outl import logseq ~/logseq-graph ~/notes