Logseq

logseq.comcontributed by Samuele Ongaro

YES

Replaceable in one session with an AI coding agent.

An outliner for notes and daily journals over local Markdown files, where every bullet is addressable and can be referenced from anywhere else.

Promptfree, for everyone, and the only version there is
Build me the sync I need instead of paying for Logseq: my outline, in Markdown files I own, on every device, encrypted.

Read this first: Logseq's app is free and its files are plain Markdown on your disk — the only paid part is encrypted sync. The cheapest honest answer is Syncthing between your own devices, which is free, has no server, and works. Build this when you want a sync service of your own, or when you want the block-level graph queryable from somewhere other than the app.

STACK
- Node 20+ with Fastify
- SQLite through better-sqlite3, WAL mode, with FTS5
- Local disk or an S3-compatible target for encrypted blobs
- Caddy in front

THE SHAPE OF THE DATA
- The source of truth is a directory of Markdown files. Never a database that the files are exported from. If this service disappears, the notes are still there and still readable in any editor — that property is the whole reason to use this kind of tool
- files: id, user_id, path, sha256, bytes, ciphertext_path, updated_at, deleted_at
- blocks: id, file_id, uuid, parent_uuid, position, content, level, refs_json, properties_json — the parsed outline, derived from the file and rebuildable at any time
- refs: from_block_uuid, to_page_or_block, kind — page reference, block reference, tag, or embed
- pages: id, name, name_lower, file_id, is_journal, journal_date, properties_json
- queries: id, name, expression — saved queries
- The blocks table is a cache. Delete it and rebuild from the files; if you ever cannot, the design has gone wrong

BLOCK IDENTITY, WHICH IS THE HARD PART
- Every block that is referenced gets a stable identifier written into the file itself as a property. That is how a reference survives the block being moved, edited or reordered
- A block never referenced needs no identifier — do not litter the files
- Reparsing a file must map existing identifiers back to their blocks, and a lost identifier is a broken reference somewhere else. Test that: move a block between files and confirm every reference to it still resolves

SYNC
- Encrypt on the client. The server stores ciphertext and cannot read a note, and no feature is ever added that would require it to
- Per-file, with a content hash, a change counter and a device identifier
- The change feed is ordered by a server-side counter, never by a device clock — clocks disagree and a timestamp-ordered feed silently skips changes
- Conflicts are never resolved by the server. It stores what it is given; the client writes a conflict copy beside the original and says so. A sync that silently picks a winner will eventually eat a paragraph, and you will not notice for a month
- Resumable uploads, quotas enforced on write, and a per-device list you can revoke

THE GRAPH
- Linked references per page, computed from refs
- Unlinked references: a mention of a page name without a link, offered rather than created
- Backlinks with the surrounding block for context, which is what makes them readable
- A query language over pages, properties, tags, dates and block content, with the queries stored in the notes themselves — so a query is a note, not a setting

JOURNALS
- One page per day, created lazily on first write
- Date properties parsed from natural forms, and a scheduled or deadline property surfacing on the right day
- A tomorrow view and an overdue view, both queries rather than features

SEARCH
- FTS5 over block content, page names and properties, with filters
- Instant, and it must include the blocks nested deepest — a search that only matches top-level bullets is useless in an outliner

THE WEB VIEW
- Read-only, for the case where you want a note on a machine without the app. It works only on notes deliberately published as plaintext, because everything else is ciphertext to the server
- Publishing is an explicit action with a warning, recorded, and revocable

ESCAPE
- There is nothing to escape from: the files are already yours, in Markdown, on your disk. Say that in the README, and make sure it stays true
- An export that produces the same directory, so a backup restores into any editor

OPERATIONS
- .env: DATABASE_PATH, STORAGE_PATH, BASE_URL, SESSION_SECRET, MAX_FILE_BYTES, S3_*
- Migrations on boot, each once
- Nightly backup of ciphertext, safe to store anywhere, with a tested restore
- A careful orphan sweeper — an over-eager one deleting a live file is the worst bug this service can have
- Health endpoint

WHAT MATTERS MOST
Conflict handling and block identity. Build the conflict-copy path and the identifier mapping first, then edit the same note on two devices while both are offline and bring them back. And be honest about whether this is worth building: for two devices and one person, Syncthing already does it.

Give me the repository, migrations, .env.example, the parser with its tests, and a README that opens with the Syncthing alternative.

What you lose

  • Encrypted sync handled for you, which is the only paid part of the product
  • Block-level references and queries, which are more than a folder of files gives you
  • Mobile apps that keep the outline usable on a small screen

If you would rather not build

  • Obsidian, if you prefer documents to outlines
  • A plain folder of Markdown, which is what both of these are

What it costs

as published on their pricing page

PlanBilled monthlyBilled yearlyLast read
—$5/mo——

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

Logseq

$0

The app itself, free and open source; only sync is charged for.

logseq/logseqfree · open source

Syncthing

$0

Peer-to-peer sync with no server, which is what the fee replaces.

syncthing/syncthingfree · open source

Why this verdict

our own opinion · changed only by a person

86/100

Verdict yes at 86. The editor is free, so this is a sync fee and a publishing convenience — both are a weekend, and the allow-list rule for publishing matters.

History

tracked since 10 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 2/day
views01230 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about Logseq

answered from the record above

Is Logseq free?

No — the plan we track is $5 a month. The app is free and open source; Logseq Sync is around $5/month for encrypted sync across devices.

Can you replace Logseq by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 86 out of 100, build time one session. Read what you lose before you decide.

How much does Logseq cost?

$5 a month on Sync — $60 a year. Recorded 10 Aug 2026.

What do you lose by replacing Logseq?

Encrypted sync handled for you, which is the only paid part of the product; Block-level references and queries, which are more than a folder of files gives you; Mobile apps that keep the outline usable on a small screen. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Logseq?

Yes: Logseq, Syncthing. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 40 in Notes, docs & writing

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc