Honest status · not marketing
Tine vs Logseq, today
Tine matches Logseq by default and round-trips the same Markdown files, so the goal is convergence. But it isn't finished. Here's where it's at parity, where it's scoped, where it deliberately goes further, and what it won't do — grounded in what the app actually does, not a wish-list.
"Logseq" here means the classic file / Markdown Logseq — the one that
reads a folder of .md files, which Tine is file-compatible with. Logseq's
newer database version is a different product and isn't the comparison target. The full
Tine feature list lives in FEATURES.md;
this page is the curated, gap-focused view.
id:: on demand and keeps it stable, so the reference survives restarts and round-trips to Logseq.key:: value properties, edited inline, with the same on-disk format Logseq uses.{{query (and (task TODO) (priority A))}}, page-refs, block/page properties, scheduled/deadline ranges, boolean and/or/not, and sort-by. That's the bulk of real-world use, and there's a visual query builder so you don't have to remember the syntax. The gap is raw Datalog ([:find … :where [?b :block/…]]): a one-click ⚙ advanced button drops a ready-to-edit template (and a ← Simple button converts it back to the visual builder), and Tine translates the common clause heads (task, priority, page-ref, property, page-property, page-tags, page, namespace, scheduled, deadline, journal, between) but skips arbitrary entity–attribute joins, custom rules, and :result-transform/:view — and it tells you which clauses ran and which it ignored, instead of guessing a wrong answer. You can also summarize results (count/sum/average, group-by) with no code. Queries even run in the HTML export.:result-transform or :view function inside the query — an escape hatch most users never touch, with no native no-code path, so this is a step beyond Logseq.Editing & the outliner
The core writing experience.
| Feature | Logseq | Tine | Notes |
|---|---|---|---|
| Outlining — nest, fold, zoom, move blocks | ✓ | ✓ | Keyboard-first; drag to reorder. |
| Bold / italic / strikethrough / highlight / inline code | ✓ | ✓ | Cmd+B/I plus a floating selection toolbar; **/==/~~ wrap the selection as you type. |
Raw inline HTML (<ins>, <sup>, <kbd>…) | ✓ | ✓ | Renders live, sanitized to a safe allowlist (formatting tags + <img>/<a>); scripts, event handlers and style are stripped (#16; new in 0.3.5). Two Logseq-parity notes: a bare <img> is literal in Logseq too (only a self-closed <img/> renders), and ^x^/~x~ aren't sub/superscript in either — use the HTML tags or $math$. |
| Slash command menu | ✓ | ✓ | Blocks, headings, tasks, dates, code, math… A dedicated template picker is still being polished. |
Auto-pair brackets / [[ ]] | ✓ | ✓ | Page-ref pairing is always on; general auto-pairing is a toggle. |
| Block references & embeds | ✓ | ✓ | ((ref)), {{embed}}; copy ref/embed from the right-click menu. |
| Page & block properties | ✓ | ✓ | Same key:: value on-disk format. |
Content & rendering
What a block can show. Every row here is verified against the live Feature showcase.
| Feature | Logseq | Tine | Notes |
|---|---|---|---|
| Headings, lists, blockquotes, HR | ✓ | ✓ | |
| Code blocks + syntax highlighting | ✓ | ✓ | |
| Tables (with column alignment) | ✓ | ✓ | |
| LaTeX math (inline + display) | ✓ | ✓ | KaTeX. |
| Images (inline, sized) & media | ✓ | ✓ | Video/audio embeds; PDF too (below). |
| Callouts / admonitions | ✓ | ✓ | #+BEGIN_NOTE and [!NOTE]. |
| Task markers + checkboxes | ✓ | ✓ | TODO/DOING/NOW/LATER/WAITING/DONE/CANCELED; click the box to toggle. |
Priorities [#A] | ✓ | ✓ | |
| SCHEDULED / DEADLINE + repeaters | ✓ | ✓ | Repeating tasks roll forward on completion. |
| Logbook / time tracking | ✓ | ✓ | Task-marker transitions clock in/out into an OG-compatible :LOGBOOK: drawer with computed durations (on by default, toggle in Settings; drawers round-trip and stay hidden). |
| Footnotes | ✓ | ✓ |
Pages, journals & links
| Feature | Logseq | Tine | Notes |
|---|---|---|---|
| Journals / daily notes | ✓ | ✓ | Multi-day feed, configurable title/file formats. |
Page links, tags, namespaces (a/b/c) | ✓ | ✓ | Namespace tree in the sidebar. |
| Aliases | ✓ | ✓ | alias:: resolves in search + refs. |
| Linked & unlinked references | ✓ | ✓ | |
| Favorites | ✓ | ✓ | |
| Graph view (node-link) | ✓ | ✗ | Not yet — researched; a local-neighborhood view is the likely first bite. |
Queries
| Feature | Logseq | Tine | Notes |
|---|---|---|---|
| Simple & compound queries (DSL) | ✓ | ✓ | task / priority / property / page-ref / scheduled / deadline / between / sort-by, with and/or/not. |
Advanced Datalog ([:find …]) | ✓ | ◑ | Tine translates the common clause heads (task, priority, page-ref, property, page-property, page-tags, page, namespace, scheduled, deadline, journal, between, and/or/not) onto its engine; raw entity–attribute joins ([?b ?a ?v]) and custom rules aren't mapped. A one-click "⚙ advanced" button in the builder drops a ready-to-edit template, and it reports which clauses ran vs. were ignored — never a silently-wrong result. |
| Query result tables / views | ✓ | ◑ | Results render as blocks or a sortable table, with a visual builder. Logseq's :view (a Clojure fn that draws a custom table/layout) and :result-transform (a Clojure fn that reshapes the result list) aren't run. |
| Math / aggregation on results | ✗ | ✓ | Tine's builder has a no-code ∑ summarize (count / sum / average a property, group-by page or property). Logseq has no native no-code path — it means writing a Clojure :result-transform. |
Search, assets & export
| Feature | Logseq | Tine | Notes |
|---|---|---|---|
| Global search / quick switcher (Ctrl+K) | ✓ | ✓ | |
| PDF viewer + annotation / highlights | ✓ | ✓ | Highlights become blocks, same as Logseq. |
| Asset handling (images, files) | ✓ | ✓ | Paste an image → saved to assets/. |
| HTML publish / export | ✓ | ✓ | Facets, queries, and embeds all render — resolved against your graph at publish time. This site's demo is Tine's own export. |
| PDF export | plugin | ✓ | Logseq has no native PDF export — only a community plugin. Tine has it built in: right-click a page → Export to PDF… (whole page, print dialog → Save as PDF). |
| Copy as Markdown / Rendered | ✓ | ⊕ | Tine adds a Rendered copy (paste formatted into email/docs). |
| Org-mode graphs | ✓ | ✓ | Reads/writes .org; per-graph preferred format. |
Extensions & themes
Both apps are extensible, but the APIs and trust models are different.
| Feature | Logseq | Tine | Notes |
|---|---|---|---|
| Plugin platform | ✓ | ◑ | Tine 0.6 starts an experimental signed catalogue of bounded WebAssembly guests and inert token themes. It is intentionally not compatible with Logseq's mature @logseq/libs ecosystem; ports use Tine's narrower host-owned API. |
| Custom CSS and themes | ✓ | ✓ | Tine reads graph logseq/custom.css, aliases common --ls-* variables, and also offers inert token-theme packages. Graph CSS remains last in the cascade. |
Where Tine goes further ⊕
The reason Tine exists is speed — and a few conveniences beyond Logseq.
| Feature | Logseq | Tine | Notes |
|---|---|---|---|
| Performance on large graphs / older machines | ◑ | ⊕ | The founding goal: a native Rust core + a lean UI, tuned for machines Logseq bogs down on. |
| Sheets — grids, field tables & boards | ✗ | ⊕ | Render a bullet and its children as a spreadsheet-style grid, a typed field table, or a Kanban board — with formula columns, filters, aggregates, group-by, and CSV/TSV import. Stays plain Markdown plus tine.* properties Logseq ignores. |
| Split view | ◑ | ⊕ | Independent panes, each with its own tabs and history; Ctrl+click opens beside, drag a tab across, keyboard pane/seam navigation. Logseq has only the single right sidebar. |
| No-code query math & grouping | ◑ | ⊕ | The ∑ summarize control counts / sums / averages a property and groups results with no code; in Logseq this needs a Clojure :result-transform / :view. |
| Editor tabs | plugin | ⊕ | Built in (Logseq needs a community plugin): middle-click / Ctrl+W, reorderable, restored on launch. |
| Global quick capture | ◑ | ⊕ | tine --capture mini-window into today's journal. |
Typographic replacements (-> → →) | ◑ | ⊕ | Optional render-time only; your .md keeps the ASCII. |
Deliberately not doing
Logseq features that are out of scope by design — so a gap here is a choice, not a to-do.
- Whiteboards — a whole separate canvas app; not Tine's focus.
- Flashcards / spaced repetition — a large subsystem better served by dedicated tools.
- Logseq / Obsidian plugin API compatibility — Tine's capability-limited WebAssembly platform is deliberately narrower; existing plugins do not run unchanged.
- Real-time multi-user collaboration — Tine is local-first over your own file sync (Syncthing/Dropbox/git), not a live shared server.
- The database version of Logseq — Tine targets the file/Markdown model on purpose; that's what keeps your notes as plain files you own.
As of Tine v0.6.0 · July 2026. This page is maintained by hand and will drift as features ship — FEATURES.md is the source of truth.