Writing and editing
Typing in the page, tables, the format bar, flowcharts, source, saving and relational tables
New documents
| Feature | Leaftext | Obsidian | Typora | Calibre |
| New document plus | ✅ | ✅ | ✅ | ❌ |
| Opens ready to type | ✅ | ✅ | ✅ | ❌ |
| Untitled names numbered | ✅ | ✅ | ? | ❌ |
| No file until saved | ✅ | ❌ | ✅ | ❌ |
| Save As picks place | ✅ | ❌ | ✅ | ❌ |
| Mac format menu | ✅ | ❌ | ❌ | ❌ |
| Takes real name | ✅ | ✅ | ✅ | ❌ |
| New file in folder | ✅ | ✅ | ✅ | ❌ |
Writing in the page
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Type in the page | ✅ | ✅ | ✅ | ❌ |
| Blocks edited in place | ✅ | ✅ | ✅ | ❌ |
| Markup kept for you | ✅ | ✅ | ? | ❌ |
| Exact byte splices | ✅ | ✅ | ? | ❌ |
| Untouched text untouched | ✅ | ✅ | ? | ❌ |
| Checkboxes save instantly | ✅ | ✅ | ✅ | ❌ |
| Task date menu | ✅ | ❌ | ❌ | ❌ |
| Cell edits keep spacing | ✅ | ❌ | ❌ | ❌ |
| Alignment markers survive | ✅ | ✅ | ✅ | ❌ |
| Enter splits blocks | ✅ | ✅ | ✅ | ❌ |
| Shift+Enter line break | ✅ | ✅ | ✅ | ❌ |
| Backspace merges blocks | ✅ | ✅ | ✅ | ❌ |
| Enter continues lists | ✅ | ✅ | ✅ | ❌ |
| Other blocks show source | ✅ | ✅ | ✅ | ❌ |
| Code edits without fences | ✅ | ❌ | ✅ | ❌ |
| Diagram source or editor | ✅ | ✅ | ✅ | ❌ |
| Right-click never types | ✅ | ✅ | ✅ | ❌ |
| Lossless blocks only | ✅ | ❌ | ❌ | ❌ |
| No typing ring | ✅ | ❌ | ❌ | ❌ |
| Typing reaches buffer | ✅ | ❌ | ❌ | ❌ |
| Opens locked | ✅ | ✅ | ❌ | ❌ |
| Alert markers kept | ✅ | ✅ | ✅ | ❌ |
XML in place
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Type XML sentences | ✅ | ❌ | ❌ | ❌ |
| Explains source fallback | ✅ | ❌ | ❌ | ❌ |
| Enter repeats element | ✅ | ❌ | ❌ | ❌ |
| Type XML cells | ✅ | ❌ | ❌ | ❌ |
| Comma values separate | ✅ | ❌ | ❌ | ❌ |
| Rename element everywhere | ✅ | ❌ | ❌ | ❌ |
| Invalid names refused | ✅ | ❌ | ❌ | ❌ |
| Type attribute values | ✅ | ❌ | ❌ | ❌ |
| Closing quote refused | ✅ | ❌ | ❌ | ❌ |
| Type XML comments | ✅ | ❌ | ❌ | ❌ |
| Double dashes refused | ✅ | ❌ | ❌ | ❌ |
Full-window table
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Expand table button | ✅ | ❌ | ❌ | ❌ |
| Same look, whole window | ✅ | ❌ | ❌ | ❌ |
| Cards layout kept | ✅ | ❌ | ❌ | ❌ |
| Long cells fold | ✅ | ❌ | ❌ | ❌ |
| Seven-character minimum columns | ✅ | ❌ | ❌ | ❌ |
| Ctrl-wheel wide cells | ✅ | ❌ | ❌ | ❌ |
| Glossary over table | ✅ | ❌ | ❌ | ❌ |
| Ctrl-click keeps table | ✅ | ❌ | ❌ | ❌ |
| Three ways out | ✅ | ❌ | ❌ | ❌ |
Renaming and email
| Feature | Leaftext | Obsidian | Typora | Calibre |
| File name heading shown | ✅ | ✅ | ❌ | ❌ |
| Rename from heading | ✅ | ✅ | ❌ | ❌ |
| Rename followed everywhere | ✅ | ✅ | ❌ | ❌ |
| Titled headings edit | ✅ | ? | ? | ❌ |
| Rename sheets from headings | ✅ | ❌ | ❌ | ❌ |
| Type mail in place | ✅ | ❌ | ❌ | ❌ |
| Mail line endings kept | ✅ | ❌ | ❌ | ❌ |
| Enter splits paragraphs | ✅ | ❌ | ❌ | ❌ |
| Move mail paragraphs | ✅ | ❌ | ❌ | ❌ |
| Coded parts explained | ✅ | ❌ | ❌ | ❌ |
| No mail format bar | ✅ | ❌ | ❌ | ❌ |
| Legacy charset preserved | ✅ | ❌ | ❌ | ❌ |
| Missing characters named | ✅ | ❌ | ❌ | ❌ |
Frontmatter fields
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Click values to type | ✅ | ✅ | ❌ | ❌ |
| Enter keeps, Escape abandons | ✅ | ? | ❌ | ❌ |
| Save from a field | ✅ | ❌ | ❌ | ❌ |
| Date field calendar | ✅ | ✅ | ❌ | ❌ |
| Shared values listed | ✅ | ? | ❌ | ❌ |
| Real tick boxes | ✅ | ✅ | ❌ | ❌ |
| Removable tag chips | ✅ | ✅ | ❌ | ❌ |
| No guessed controls | ✅ | ? | ❌ | ❌ |
| Rename a field | ✅ | ✅ | ❌ | ❌ |
| Remove a field | ✅ | ✅ | ❌ | ❌ |
| Suggested field names | ✅ | ✅ | ❌ | ❌ |
| Start new frontmatter | ✅ | ✅ | ✅ | ❌ |
| Chips hold commas | ✅ | ✅ | ❌ | ❌ |
| Comments and order kept | ✅ | ❌ | ✅ | ❌ |
| Empty frontmatter removed | ✅ | ✅ | ❌ | ❌ |
| Hidden when locked | ✅ | ? | ❌ | ❌ |
| Only read names offered | ✅ | ? | ❌ | ❌ |
| Nested fields refused | ✅ | ? | ❌ | ❌ |
| Real dates checked | ✅ | ✅ | ❌ | ❌ |
| Obsidian types honored | ✅ | ✅ | ❌ | ❌ |
Deleting
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Emptied blocks removed | ✅ | ? | ? | ❌ |
| Blank lines never stack | ✅ | ❌ | ? | ❌ |
| Highlights cross blocks | ✅ | ✅ | ✅ | ❌ |
| Cross-block delete joins | ✅ | ✅ | ✅ | ❌ |
| Uncuttable blocks whole | ✅ | ? | ? | ❌ |
| One undo per delete | ✅ | ✅ | ✅ | ❌ |
| Empty file, blank page | ✅ | ✅ | ✅ | ❌ |
| Select-all widens | ✅ | ❌ | ❌ | ❌ |
| Locked pages copy | ✅ | ✅ | ✅ | ❌ |
| Opens on release | ✅ | ❌ | ❌ | ❌ |
| Double-click selection kept | ✅ | ✅ | ✅ | ❌ |
| Links never open blocks | ✅ | ✅ | ✅ | ❌ |
| Merge unopened blocks | ✅ | ❌ | ❌ | ❌ |
| Ctrl+Z restores deletes | ✅ | ✅ | ✅ | ❌ |
| Footnotes type naturally | ✅ | ✅ | ✅ | ❌ |
| Loose lists type naturally | ✅ | ✅ | ✅ | ❌ |
| Multi-paragraph items use source | ✅ | ❌ | ❌ | ❌ |
| Last block editable | ✅ | ✅ | ✅ | ❌ |
| Footnote lines follow markers | ✅ | ? | ? | ❌ |
Block gutter and adding blocks
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Margin handle and plus | ✅ | ❌ | ❌ | ❌ |
| Follows the pointer | ✅ | ❌ | ❌ | ❌ |
| Drag blocks to move | ✅ | ❌ | ❌ | ❌ |
| Escape cancels drag | ✅ | ❌ | ❌ | ❌ |
| Works mid-edit | ✅ | ❌ | ❌ | ❌ |
| Markdown and XML blocks | ✅ | ❌ | ❌ | ❌ |
| Plus on empty lines | ✅ | ❌ | ❌ | ❌ |
| Plus waits below | ✅ | ❌ | ❌ | ❌ |
| Between any blocks | ✅ | ❌ | ❌ | ❌ |
| Kinds row unfurls | ✅ | ❌ | ❌ | ❌ |
| Thirteen block kinds | ✅ | ❌ | ❌ | ❌ |
| Placeholder until typing | ✅ | ❌ | ❌ | ❌ |
| Five XML block kinds | ✅ | ❌ | ❌ | ❌ |
| Rolling gray placeholder | ✅ | ❌ | ❌ | ❌ |
Pictures in notes
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Choose a picture | ✅ | ✅ | ✅ | ❌ |
| Paste picture address | ✅ | ✅ | ✅ | ❌ |
| Paste pictures | ✅ | ✅ | ✅ | ❌ |
| Saved beside note | ✅ | ✅ | ✅ | ❌ |
| Named after note | ✅ | ❌ | ❌ | ❌ |
| Keeps picture format | ✅ | ? | ✅ | ❌ |
| Duplicates stored once | ✅ | ❌ | ❌ | ❌ |
| Unsaved notes asked | ✅ | ❌ | ✅ | ❌ |
| Pasted text stays | ✅ | ✅ | ✅ | ❌ |
| Picked files referenced | ✅ | ✅ | ✅ | ❌ |
| Paths written for you | ✅ | ✅ | ✅ | ❌ |
| Spaces written safely | ✅ | ✅ | ✅ | ❌ |
| Delete from right-click | ✅ | ? | ✅ | ❌ |
| Pasted pictures recognized | ✅ | ✅ | ✅ | ❌ |
Badge and bar boxes
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Badge tone picker | ✅ | ❌ | ❌ | ❌ |
| Live badge preview | ✅ | ❌ | ❌ | ❌ |
| Badge marks offered | ✅ | ❌ | ❌ | ❌ |
| Never a list item | ✅ | ❌ | ❌ | ❌ |
| Tone, label, amount | ✅ | ❌ | ❌ | ❌ |
| Live bar preview | ✅ | ❌ | ❌ | ❌ |
| Enter writes row | ✅ | ❌ | ❌ | ❌ |
| Escape folds away | ✅ | ❌ | ❌ | ❌ |
Table editing
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Tab walks cells | ✅ | ✅ | ✅ | ❌ |
| Enter moves down | ✅ | ? | ? | ❌ |
| Tab adds rows | ✅ | ✅ | ✅ | ❌ |
| Caret lands at end | ✅ | ? | ? | ❌ |
| Row and column grips | ✅ | ✅ | ✅ | ❌ |
| Drag rows and columns | ✅ | ✅ | ✅ | ❌ |
| Drop outside cancels | ✅ | ? | ? | ❌ |
| Align columns | ✅ | ✅ | ✅ | ❌ |
| Sort writes file | ✅ | ✅ | ❌ | ❌ |
| Stable sorting | ✅ | ? | ❌ | ❌ |
| Add and delete rows | ✅ | ✅ | ✅ | ❌ |
| Last row protected | ✅ | ? | ? | ❌ |
| Copy as CSV | ✅ | ❌ | ❌ | ❌ |
| Markdown tables when unlocked | ✅ | ❌ | ❌ | ❌ |
| File order restorable | ✅ | ❌ | ❌ | ❌ |
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Five column totals | ✅ | ❌ | ❌ | ❌ |
| Number and rule together | ✅ | ❌ | ❌ | ❌ |
| Totals kept right | ✅ | ❌ | ❌ | ❌ |
| Quiet total bar | ✅ | ❌ | ❌ | ❌ |
| Totals hold in sorts | ✅ | ❌ | ❌ | ❌ |
| Hand-written TBLFM rules | ✅ | ❌ | ❌ | ❌ |
| References and ranges | ✅ | ❌ | ❌ | ❌ |
| Four operations, brackets | ✅ | ❌ | ❌ | ❌ |
| Decimals follow inputs | ✅ | ❌ | ❌ | ❌ |
| Bad rules ignored | ✅ | ❌ | ❌ | ❌ |
| Edits recalculate formulas | ✅ | ❌ | ❌ | ❌ |
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Bar over selection | ✅ | ❌ | ❌ | ✅ |
| Bold button | ✅ | ❌ | ✅ | ❌ |
| Italic button | ✅ | ❌ | ✅ | ❌ |
| Strikethrough button | ✅ | ❌ | ? | ❌ |
| Code button | ✅ | ❌ | ✅ | ❌ |
| Link button | ✅ | ❌ | ✅ | ❌ |
| Lit current format | ✅ | ❌ | ? | ❌ |
| Press again removes | ✅ | ❌ | ✅ | ❌ |
| Joins code spans | ✅ | ? | ? | ❌ |
| Selection kept after | ✅ | ? | ? | ❌ |
| Link box prefilled | ✅ | ❌ | ? | ❌ |
| Badge from bar | ✅ | ❌ | ❌ | ❌ |
| Block type buttons | ✅ | ❌ | ✅ | ❌ |
| Grays at limits | ✅ | ❌ | ? | ❌ |
| Heading level steps | ✅ | ✅ | ✅ | ❌ |
| Copy as words | ✅ | ❌ | ✅ | ✅ |
| Theme-color highlight | ✅ | ✅ | ✅ | ✅ |
| Overlapping highlights join | ✅ | ? | ? | ? |
| Annotate as footnote | ✅ | ❌ | ❌ | ❌ |
| Remove notes easily | ✅ | ❌ | ❌ | ✅ |
| Notes leave with markers | ✅ | ❌ | ❌ | ? |
| Annotate while locked | ✅ | ❌ | ❌ | ✅ |
| One undo each | ✅ | ✅ | ✅ | ❌ |
| Keyboard formatting | ✅ | ✅ | ✅ | ❌ |
| Backticks fenced safely | ✅ | ? | ? | ❌ |
| No empty formatting | ✅ | ? | ? | ❌ |
Padlock and undo
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Page and source padlocks | ✅ | ❌ | ❌ | ❌ |
| Padlocks remembered | ✅ | ❌ | ❌ | ❌ |
| New documents unlocked | ✅ | ❌ | ❌ | ❌ |
| Locked yet interactive | ✅ | ✅ | ❌ | ❌ |
| Absent when uneditable | ✅ | ❌ | ❌ | ❌ |
| Flipping keeps place | ✅ | ✅ | ✅ | ❌ |
| Locked source says so | ✅ | ❌ | ❌ | ❌ |
| Tray per view | ✅ | ❌ | ❌ | ❌ |
| Undo button | ✅ | ❌ | ❌ | ❌ |
| Redo button | ✅ | ❌ | ❌ | ❌ |
| Word-at-a-time undo | ✅ | ❌ | ? | ❌ |
| Undo groups end sensibly | ✅ | ? | ? | ❌ |
| Whole-edit undo after | ✅ | ❌ | ❌ | ❌ |
| Save clears history | ✅ | ❌ | ❌ | ❌ |
| Flowchart own history | ✅ | ❌ | ❌ | ❌ |
| Undo file deletes | ✅ | ❌ | ❌ | ❌ |
| Per-document undo | ✅ | ✅ | ✅ | ✅ |
| Redo keeps displaced | ✅ | ? | ? | ❌ |
| Save clears both | ✅ | ❌ | ❌ | ❌ |
| Typing runs grouped | ✅ | ✅ | ✅ | ❌ |
| Offsets checked | ✅ | ❌ | ❌ | ❌ |
| One-byte task flips | ✅ | ✅ | ? | ❌ |
| One date spelling | ✅ | ❌ | ❌ | ❌ |
| Tasks named by place | ✅ | ❌ | ❌ | ❌ |
| Blocks mapped to bytes | ✅ | ❌ | ❌ | ❌ |
| Nested footnotes mapped | ✅ | ❌ | ❌ | ❌ |
| Hidden blocks undrawn | ✅ | ❌ | ❌ | ❌ |
Flowchart editor
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Start from insert row | ✅ | ❌ | ❌ | ❌ |
| Open from any diagram | ✅ | ❌ | ❌ | ❌ |
| Canvas beside Mermaid text | ✅ | ❌ | ❌ | ❌ |
| Each follows other | ✅ | ❌ | ❌ | ❌ |
| Movable divider | ✅ | ❌ | ❌ | ❌ |
| Canvas minimum width | ✅ | ❌ | ❌ | ❌ |
| Nothing written until Save | ✅ | ❌ | ❌ | ❌ |
| Save lands in place | ✅ | ❌ | ❌ | ❌ |
| Cancel writes nothing | ✅ | ❌ | ❌ | ❌ |
| Mermaid's own drawing | ✅ | ❌ | ❌ | ❌ |
| Mermaid refusals explained | ✅ | ❌ | ❌ | ❌ |
| Double-click adds box | ✅ | ❌ | ❌ | ❌ |
| Shape picker sheet | ✅ | ❌ | ❌ | ❌ |
| Shapes grouped by purpose | ✅ | ❌ | ❌ | ❌ |
| Resizable shape picker | ✅ | ❌ | ❌ | ❌ |
| Plus adds joined box | ✅ | ❌ | ❌ | ❌ |
| Drag to connect | ✅ | ❌ | ❌ | ❌ |
| Loop to same box | ✅ | ❌ | ❌ | ❌ |
| Select to reshape | ✅ | ❌ | ❌ | ❌ |
| Link, icon, picture fields | ✅ | ❌ | ❌ | ❌ |
| Rename boxes in place | ✅ | ❌ | ❌ | ❌ |
| Drop box onto line | ✅ | ❌ | ❌ | ❌ |
| Move between groups | ✅ | ❌ | ❌ | ❌ |
| Wide line hit area | ✅ | ❌ | ❌ | ❌ |
| Repoint line ends | ✅ | ❌ | ❌ | ❌ |
| Box right-click menu | ✅ | ❌ | ❌ | ❌ |
| Delete boxes | ✅ | ❌ | ❌ | ❌ |
| Own undo and redo | ✅ | ❌ | ❌ | ❌ |
| Pointer hint line | ✅ | ❌ | ❌ | ❌ |
| First box sets direction | ✅ | ❌ | ❌ | ❌ |
| Flow control turns | ✅ | ❌ | ❌ | ❌ |
| Mermaid lays out | ✅ | ❌ | ❌ | ❌ |
| Pan any diagram | ✅ | ❌ | ❌ | ❌ |
| Zoom and Ctrl-scroll | ✅ | ❌ | ❌ | ❌ |
| Header moves window | ✅ | ❌ | ❌ | ❌ |
| Five export formats | ✅ | ❌ | ❌ | ❌ |
| Typed ending wins | ✅ | ❌ | ❌ | ❌ |
| Forty-seven shapes | ✅ | ❌ | ❌ | ❌ |
| Every connector style | ✅ | ❌ | ❌ | ❌ |
| Line labels and stretch | ✅ | ❌ | ❌ | ❌ |
| Animated lines | ✅ | ❌ | ❌ | ❌ |
| Self-loops drawn | ✅ | ❌ | ❌ | ❌ |
| Subgraph directions | ✅ | ❌ | ❌ | ❌ |
| Quoted and Markdown labels | ✅ | ❌ | ❌ | ❌ |
| Colors carried through | ✅ | ❌ | ❌ | ❌ |
| Front matter kept | ✅ | ❌ | ❌ | ❌ |
| Sized boxes fail closed | ✅ | ❌ | ❌ | ❌ |
| Names stopping line | ✅ | ❌ | ❌ | ❌ |
| Other diagrams previewed | ✅ | ❌ | ❌ | ❌ |
| Spelling tidied on save | ✅ | ❌ | ❌ | ❌ |
| Picker quarter height | ✅ | ❌ | ❌ | ❌ |
| Fields in picker head | ✅ | ❌ | ❌ | ❌ |
| More columns when short | ✅ | ❌ | ❌ | ❌ |
| Canvas press closes picker | ✅ | ❌ | ❌ | ❌ |
| Invisible hit lines | ✅ | ❌ | ❌ | ❌ |
| Lines brighten on hover | ✅ | ❌ | ❌ | ❌ |
| Hint names gestures | ✅ | ❌ | ❌ | ❌ |
| Self-loop support | ✅ | ❌ | ❌ | ❌ |
| Drop targets light | ✅ | ❌ | ❌ | ❌ |
| Pictures stay on shrink | ✅ | ❌ | ❌ | ❌ |
| Shape pictures redrawn | ✅ | ❌ | ❌ | ❌ |
| Drawings cached, capped | ✅ | ❌ | ❌ | ❌ |
| Menu names gestures | ✅ | ❌ | ❌ | ❌ |
Flowchart shapes
Flowchart lines and layout
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Solid lines | ✅ | ❌ | ❌ | ❌ |
| Dotted lines | ✅ | ❌ | ❌ | ❌ |
| Thick lines | ✅ | ❌ | ❌ | ❌ |
| Invisible lines | ✅ | ❌ | ❌ | ❌ |
| Arrow, circle, cross ends | ✅ | ❌ | ❌ | ❌ |
| Two-way lines | ✅ | ❌ | ❌ | ❌ |
| Label a line | ✅ | ❌ | ❌ | ❌ |
| Reverse a line | ✅ | ❌ | ❌ | ❌ |
| Take box out | ✅ | ❌ | ❌ | ❌ |
| Add box before, after | ✅ | ❌ | ❌ | ❌ |
| Duplicate a box | ✅ | ❌ | ❌ | ❌ |
| Delete box or line | ✅ | ❌ | ❌ | ❌ |
| New group from box | ✅ | ❌ | ❌ | ❌ |
| Move into group | ✅ | ❌ | ❌ | ❌ |
| Take out of group | ✅ | ❌ | ❌ | ❌ |
| Rename a group | ✅ | ❌ | ❌ | ❌ |
| Ungroup, keep boxes | ✅ | ❌ | ❌ | ❌ |
| Top-down layout | ✅ | ❌ | ❌ | ❌ |
| Bottom-up layout | ✅ | ❌ | ❌ | ❌ |
| Left-to-right layout | ✅ | ❌ | ❌ | ❌ |
| Right-to-left layout | ✅ | ❌ | ❌ | ❌ |
| New flowchart | ✅ | ❌ | ❌ | ❌ |
Code view
| Feature | Leaftext | Obsidian | Typora | Calibre |
| One-press source view | ✅ | ✅ | ✅ | ❌ |
| Stays in source | ✅ | ✅ | ✅ | ❌ |
| Theme syntax colors | ✅ | ✅ | ✅ | ❌ |
| Five languages colored | ✅ | ❌ | ❌ | ❌ |
| JSON comments colored | ✅ | ❌ | ❌ | ❌ |
| Others as plain text | ✅ | ❌ | ❌ | ❌ |
| Recolors on theme | ✅ | ✅ | ✅ | ❌ |
| Color squares shown | ✅ | ❌ | ❌ | ❌ |
| Color words ignored | ✅ | ❌ | ❌ | ❌ |
| Wrapped source lines | ✅ | ✅ | ✅ | ? |
| Pinned line numbers | ✅ | ✅ | ❌ | ? |
| Refusals explained | ✅ | ? | ? | ❌ |
| Source minimap | ✅ | ❌ | ❌ | ? |
| Place kept both ways | ✅ | ✅ | ✅ | ❌ |
| Exact spot returned | ✅ | ? | ? | ❌ |
Source editing
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Monaco editor built in | ✅ | ❌ | ❌ | ❌ |
| Locked source copies | ✅ | ❌ | ❌ | ❌ |
| Full editing basics | ✅ | ✅ | ✅ | ✅ |
| Tab indents lines | ✅ | ✅ | ✅ | ✅ |
| Colors as you type | ✅ | ✅ | ✅ | ✅ |
| Multi-megabyte files quick | ✅ | ? | ? | ? |
| Sends only edits | ✅ | ❌ | ❌ | ❌ |
| Buffers survive closing | ✅ | ❌ | ❌ | ❌ |
| Reading shows unsaved | ✅ | ❌ | ? | ? |
| Current heading pinned | ✅ | ❌ | ❌ | ❌ |
| Deeper headings stack | ✅ | ❌ | ❌ | ❌ |
| Five rows maximum | ✅ | ❌ | ❌ | ❌ |
| Click pinned heading | ✅ | ❌ | ❌ | ❌ |
| Pinned in source | ✅ | ❌ | ❌ | ❌ |
| Five-row source trail | ✅ | ❌ | ❌ | ❌ |
Typing help
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Note name completion | ✅ | ✅ | ❌ | ❌ |
| Aliases in completion | ✅ | ✅ | ❌ | ❌ |
| Heading completion | ✅ | ✅ | ❌ | ❌ |
| Anchor completion | ✅ | ✅ | ❌ | ❌ |
| Hover wiki openings | ✅ | ✅ | ❌ | ❌ |
| Broken links underlined | ✅ | ✅ | ❌ | ❌ |
| Duplicate names warned | ✅ | ❌ | ❌ | ❌ |
| Only on triggers | ✅ | ✅ | ❌ | ❌ |
| Wand toggles help | ✅ | ❌ | ❌ | ❌ |
| Checks off main thread | ✅ | ❌ | ❌ | ❌ |
| File names before aliases | ✅ | ? | ❌ | ❌ |
| Missing notes left alone | ✅ | ? | ❌ | ❌ |
| Cross-note heading completion | ✅ | ✅ | ❌ | ❌ |
Saving
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Save appears on typing | ✅ | ❌ | ❌ | ❌ |
| Green Save and dot | ✅ | ❌ | ❌ | ❌ |
| Undo clears unsaved | ✅ | ❌ | ? | ❌ |
| Ctrl+S saves | ✅ | ✅ | ✅ | ❌ |
| Refused saves explained | ✅ | ✅ | ✅ | ❌ |
| Edits kept on close | ✅ | ✅ | ✅ | ❌ |
| Own saves never reload | ✅ | ✅ | ✅ | ❌ |
| Original encoding saved | ✅ | ❌ | ✅ | ❌ |
| Missing file, nothing changed | ✅ | ? | ? | ❌ |
| Failed save indicators | ✅ | ✅ | ✅ | ❌ |
| Failed ticks reverted | ✅ | ❌ | ❌ | ❌ |
| Flowchart kept on failure | ✅ | ❌ | ❌ | ❌ |
| Image address kept | ✅ | ❌ | ❌ | ❌ |
| Clean buffers reload | ✅ | ✅ | ✅ | ❌ |
| Source refreshes in place | ✅ | ✅ | ✅ | ❌ |
| Background tabs refresh | ✅ | ✅ | ❌ | ❌ |
| Office files reload | ✅ | ❌ | ❌ | ❌ |
| Unsaved edits kept | ✅ | ❌ | ✅ | ❌ |
| Big documents fetched | ✅ | ❌ | ❌ | ❌ |
| Unsaved edits rendered | ✅ | ❌ | ❌ | ❌ |
| Plain-word refusals | ✅ | ❌ | ? | ❌ |
| Code edits as changes | ✅ | ❌ | ❌ | ❌ |
| First save asks | ✅ | ❌ | ✅ | ❌ |
| Cell writes keep spacing | ✅ | ❌ | ❌ | ❌ |
| Multi-block single undo | ✅ | ✅ | ✅ | ❌ |
| Field edits undo once | ✅ | ? | ❌ | ❌ |
| Block drags undo once | ✅ | ❌ | ❌ | ❌ |
| Refused ticks restored | ✅ | ❌ | ❌ | ❌ |
| Pending ticks keep Save | ✅ | ❌ | ❌ | ❌ |
| No redraw when unchanged | ✅ | ❌ | ❌ | ❌ |
| Shared source buffer | ✅ | ❌ | ❌ | ❌ |
| Exports off main thread | ✅ | ❌ | ❌ | ❌ |
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Source for every format | ✅ | ❌ | ❌ | ❌ |
| Office part XML | ✅ | ❌ | ❌ | ❌ |
| Book chapter source | ✅ | ❌ | ❌ | ✅ |
| Type into EPUB | ✅ | ❌ | ❌ | ✅ |
| Tables fully editable | ✅ | ✅ | ✅ | ❌ |
| Hidden HTML editable | ✅ | ✅ | ✅ | ❌ |
| Raw HTML read-only | ✅ | ❌ | ❌ | ❌ |
| HTML pages read-only | ✅ | ❌ | ❌ | ❌ |
| JSON values editable | ✅ | ❌ | ❌ | ❌ |
| YAML values editable | ✅ | ❌ | ❌ | ❌ |
| Read-only YAML explained | ✅ | ❌ | ❌ | ❌ |
| INI fully editable | ✅ | ❌ | ❌ | ❌ |
| Word paragraphs editable | ✅ | ❌ | ❌ | ❌ |
| Spreadsheet cells editable | ✅ | ❌ | ❌ | ❌ |
| Email lines editable | ✅ | ❌ | ❌ | ❌ |
| No data gutter | ✅ | ❌ | ❌ | ❌ |
Relational tables
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Lens bar on tables | ✅ | ❌ | ❌ | ❌ |
| Four table views | ✅ | ✅ | ❌ | ❌ |
| Sort and restore | ✅ | ✅ | ❌ | ❌ |
| Filter three ways | ✅ | ✅ | ❌ | ❌ |
| Several filters together | ✅ | ✅ | ❌ | ❌ |
| Column types recognized | ✅ | ❌ | ❌ | ❌ |
| Field picker per view | ✅ | ✅ | ❌ | ❌ |
| Views survive edits | ✅ | ❌ | ❌ | ❌ |
| Views never write | ✅ | ❌ | ❌ | ❌ |
| Links to other rows | ✅ | ❌ | ❌ | ❌ |
| Hover shows row | ✅ | ❌ | ❌ | ❌ |
| Missing rows marked | ✅ | ❌ | ❌ | ❌ |
| Describe writes correction | ✅ | ❌ | ❌ | ❌ |
| Malformed comments ignored | ✅ | ❌ | ❌ | ❌ |
| Cell pickers | ✅ | ❌ | ❌ | ❌ |
| Board drags write cell | ✅ | ❌ | ❌ | ❌ |
| One undo per change | ✅ | ❌ | ❌ | ❌ |
| Types guessed from values | ✅ | ❌ | ❌ | ❌ |
| Repeated values become choices | ✅ | ❌ | ❌ | ❌ |
| First column keys | ✅ | ❌ | ❌ | ❌ |
| Relations follow links | ✅ | ❌ | ❌ | ❌ |
| Rollup columns | ✅ | ❌ | ❌ | ❌ |
| Reciprocal columns | ✅ | ❌ | ❌ | ❌ |
| Multi-relation cells | ✅ | ❌ | ❌ | ❌ |
| Relation picker | ✅ | ❌ | ❌ | ❌ |
| Unknown types refused | ✅ | ❌ | ❌ | ❌ |
| Describe on command | ✅ | ❌ | ❌ | ❌ |
| Views survive redraw | ✅ | ❌ | ❌ | ❌ |
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Table right-click menu | ✅ | ✅ | ✅ | ❌ |
| Link right-click menu | ✅ | ✅ | ✅ | ? |
| File right-click menu | ✅ | ✅ | ✅ | ❌ |
| Folder right-click menu | ✅ | ✅ | ✅ | ❌ |
| Picture right-click menu | ✅ | ✅ | ✅ | ✅ |
| Tab right-click menu | ✅ | ✅ | ❌ | ❌ |
| Task date menu | ✅ | ❌ | ❌ | ❌ |
| Vault panel menu | ✅ | ✅ | ❌ | ❌ |
| Insert row menu | ✅ | ❌ | ❌ | ❌ |
| Diagram export menu | ✅ | ❌ | ❌ | ❌ |
| Favorite repoint menu | ✅ | ❌ | ❌ | ❌ |
| Put back favorites | ✅ | ❌ | ❌ | ❌ |
| Blank-page right-click menu | ✅ | ✅ | ✅ | ❌ |
Built for agents
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Agent reaches document | ✅ | ✅ | ❌ | ❌ |
| Run page scripts | ✅ | ✅ | ❌ | ❌ |
| Read document source | ✅ | ✅ | ❌ | ❌ |
| Splice with fingerprint | ✅ | ❌ | ❌ | ❌ |
| Tick tasks by place | ✅ | ✅ | ❌ | ❌ |
| Save through page | ✅ | ? | ❌ | ❌ |
| Export to named path | ✅ | ? | ❌ | ❌ |
| Play pointer gestures | ✅ | ✅ | ❌ | ❌ |
| Quit like closing | ✅ | ? | ❌ | ❌ |
| Local question pipe | ✅ | ✅ | ❌ | ❌ |
| Close ends reliably | ✅ | ? | ❌ | ❌ |
| Agents edit documents | ✅ | ✅ | ❌ | ❌ |
| Agents tick tasks | ✅ | ✅ | ❌ | ❌ |
| Seventeen document tools | ✅ | ❌ | ❌ | ❌ |
| Written agent workflow | ✅ | ? | ❌ | ❌ |
| Untitled saves refused | ✅ | ❌ | ❌ | ❌ |
| Drawings described to agents | ✅ | ❌ | ❌ | ❌ |