Formats, books, email, Office files, encodings and safety
Opens
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Markdown files | ✅ | ✅ | ✅ | ❌ |
| HTML pages | ✅ | ❌ | ❌ | ❌ |
| XML files | ✅ | ❌ | ❌ | ❌ |
| TEI editions | ✅ | ❌ | ❌ | ❌ |
| JSON files | ✅ | ❌ | ❌ | ❌ |
| YAML files | ✅ | ❌ | ❌ | ❌ |
| INI config files | ✅ | ❌ | ❌ | ❌ |
| CSV and TSV tables | ✅ | ❌ | ❌ | ❌ |
| Plain text files | ✅ | ❌ | ✅ | ❌ |
| Saved email | ✅ | ❌ | ❌ | ❌ |
| Web archives | ✅ | ❌ | ❌ | ❌ |
| Word documents | ✅ | ❌ | ❌ | ❌ |
| Excel workbooks | ✅ | ❌ | ❌ | ❌ |
| PowerPoint decks | ✅ | ❌ | ❌ | ❌ |
| OpenDocument files | ✅ | ❌ | ❌ | ❌ |
| EPUB books | ✅ | ❌ | ❌ | ✅ |
| TypeScript files | ✅ | ❌ | ❌ | ❌ |
| JavaScript files | ✅ | ❌ | ❌ | ❌ |
| JSON with comments | ✅ | ❌ | ❌ | ❌ |
| CSS stylesheets | ✅ | ❌ | ❌ | ❌ |
| Shell scripts | ✅ | ❌ | ❌ | ❌ |
| TOML config files | ✅ | ❌ | ❌ | ❌ |
| Rust source files | ✅ | ❌ | ❌ | ❌ |
| Python source files | ✅ | ❌ | ❌ | ❌ |
| SQL scripts | ✅ | ❌ | ❌ | ❌ |
| Diff files | ✅ | ❌ | ❌ | ❌ |
| Dotenv files | ✅ | ❌ | ❌ | ❌ |
| GraphQL schemas | ✅ | ❌ | ❌ | ❌ |
| Docker build files | ✅ | ❌ | ❌ | ❌ |
| Extensionless text files | ✅ | ❌ | ✅ | ❌ |
| UTF-8, UTF-16, UTF-32 | ✅ | ❌ | ✅ | ✅ |
| Keeps its encoding | ✅ | ❌ | ✅ | ❌ |
EPUB books
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Book as one page | ✅ | ❌ | ❌ | ❌ |
| Chapters in reading order | ✅ | ❌ | ❌ | ✅ |
| Linked contents page | ✅ | ❌ | ❌ | ✅ |
| Chapter headings from contents | ✅ | ❌ | ❌ | ❌ |
| Title and author byline | ✅ | ❌ | ❌ | ❌ |
| Pictures from the book | ✅ | ❌ | ❌ | ✅ |
| SVG covers shown | ✅ | ❌ | ❌ | ✅ |
| Publisher styles, your theme | ✅ | ❌ | ❌ | ✅ |
| Small caps and superscripts | ✅ | ❌ | ❌ | ✅ |
| Hidden parts stay hidden | ✅ | ❌ | ❌ | ✅ |
| No network on open | ✅ | ❌ | ❌ | ? |
| Web and email links | ✅ | ❌ | ❌ | ✅ |
| Book scripts never run | ✅ | ❌ | ❌ | ✅ |
| Damaged book explained | ✅ | ❌ | ❌ | ✅ |
| Encrypted book named | ✅ | ❌ | ❌ | ✅ |
| Obfuscated fonts read | ✅ | ❌ | ❌ | ✅ |
| Picture-heavy books drawn | ✅ | ❌ | ❌ | ✅ |
| Outline, minimap, find, pager | ✅ | ❌ | ❌ | ❌ |
Kindle books
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Kindle book as page | ✅ | ❌ | ❌ | ✅ |
| Locked book says why | ✅ | ❌ | ❌ | ✅ |
| Kindle library titles | ✅ | ❌ | ❌ | ? |
Book details
| Feature | Leaftext | Obsidian | Typora | Calibre |
| NCX and nav headings | ✅ | ❌ | ❌ | ✅ |
| Publisher classes mapped | ✅ | ❌ | ❌ | ✅ |
| Inline styles mapped | ✅ | ❌ | ❌ | ✅ |
| Byline skips drop cap | ✅ | ❌ | ❌ | ❌ |
| Empty chapters skipped | ✅ | ❌ | ❌ | ❌ |
| SVG covers kept | ✅ | ❌ | ❌ | ✅ |
| Comic pages drawn once | ✅ | ❌ | ❌ | ✅ |
| Books open on cover | ✅ | ❌ | ❌ | ✅ |
| First page at top | ✅ | ❌ | ❌ | ✅ |
| Every chapter outlined | ✅ | ❌ | ❌ | ✅ |
| Word counts in cards | ✅ | ❌ | ❌ | ❌ |
| Slide lists and tables | ✅ | ❌ | ❌ | ❌ |
| Removed bullets drawn plain | ✅ | ❌ | ❌ | ❌ |
| OpenDocument list openings | ✅ | ❌ | ❌ | ❌ |
| Cards only when cramped | ✅ | ❌ | ❌ | ❌ |
| Labels on bars | ✅ | ❌ | ❌ | ❌ |
Plain text
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Kept exactly as typed | ✅ | ❌ | ❌ | ❌ |
| Copy button | ✅ | ❌ | ❌ | ❌ |
| Offered, never default | ✅ | ❌ | ❌ | ❌ |
INI files
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Sections as headings | ✅ | ❌ | ❌ | ❌ |
| Keys as labels | ✅ | ❌ | ❌ | ❌ |
| Clickable link values | ✅ | ❌ | ❌ | ❌ |
| Comments shown in source | ✅ | ❌ | ❌ | ❌ |
| First equals sign splits | ✅ | ❌ | ❌ | ❌ |
| Title key heads page | ✅ | ❌ | ❌ | ❌ |
| Repeated keys in order | ✅ | ❌ | ❌ | ❌ |
| Keys keep their spelling | ✅ | ❌ | ❌ | ❌ |
| Edit keys in place | ✅ | ❌ | ❌ | ❌ |
| Saved as written | ✅ | ❌ | ❌ | ❌ |
Source files
| Feature | Leaftext | Obsidian | Typora | Calibre |
| File name heading | ✅ | ❌ | ❌ | ❌ |
| Theme syntax colors | ✅ | ❌ | ❌ | ❌ |
| Language badge shown | ✅ | ❌ | ❌ | ❌ |
| Copy button | ✅ | ❌ | ❌ | ❌ |
| Kept out of search | ✅ | ❌ | ❌ | ❌ |
XML
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Any XML document | ✅ | ❌ | ❌ | ❌ |
| TEI found by content | ✅ | ❌ | ❌ | ❌ |
| Plists, XHTML, DocBook | ✅ | ❌ | ❌ | ❌ |
| Parse errors located | ✅ | ❌ | ❌ | ❌ |
| Fields as labels | ✅ | ❌ | ❌ | ❌ |
| Records as tables | ✅ | ❌ | ❌ | ❌ |
| Elements as sections | ✅ | ❌ | ❌ | ❌ |
| Tag names as words | ✅ | ❌ | ❌ | ❌ |
| URLs become links | ✅ | ❌ | ❌ | ❌ |
| Sitemaps as tables | ✅ | ❌ | ❌ | ❌ |
| RSS and Atom feeds | ✅ | ❌ | ❌ | ❌ |
| Maven POM files | ✅ | ❌ | ❌ | ❌ |
| File name as title | ✅ | ❌ | ❌ | ❌ |
| Comments fold open | ✅ | ❌ | ❌ | ❌ |
| Comments editable in place | ✅ | ❌ | ❌ | ❌ |
TEI
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Main and long titles | ✅ | ❌ | ❌ | ❌ |
| Sanskrit titles italicized | ✅ | ❌ | ❌ | ❌ |
| Front matter folded | ✅ | ❌ | ❌ | ❌ |
| Divisions as headings | ✅ | ❌ | ❌ | ❌ |
| Verse stanzas quoted | ✅ | ❌ | ❌ | ❌ |
| Endnotes as footnotes | ✅ | ❌ | ❌ | ❌ |
| Cross-references linked | ✅ | ❌ | ❌ | ❌ |
JSON and YAML
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Data as a page | ✅ | ❌ | ❌ | ❌ |
| Keys as labels | ✅ | ❌ | ❌ | ❌ |
| Record lists as tables | ✅ | ❌ | ❌ | ❌ |
| Nested keys as sections | ✅ | ❌ | ❌ | ❌ |
| Keys read as words | ✅ | ❌ | ❌ | ❌ |
| Title key heads page | ✅ | ❌ | ❌ | ❌ |
| Keys in file order | ✅ | ❌ | ❌ | ❌ |
| Numbers kept as written | ✅ | ❌ | ❌ | ❌ |
| JSON comments allowed | ✅ | ❌ | ❌ | ❌ |
| YAML anchors and aliases | ✅ | ❌ | ❌ | ❌ |
| YAML merge keys | ✅ | ❌ | ❌ | ❌ |
| Multi-document YAML table | ✅ | ❌ | ❌ | ❌ |
| Alias bombs refused | ✅ | ❌ | ❌ | ❌ |
| Parse errors name line | ✅ | ❌ | ❌ | ❌ |
| Deep nesting refused | ✅ | ❌ | ❌ | ❌ |
| Edit JSON values | ✅ | ❌ | ❌ | ❌ |
| Edit YAML values | ✅ | ❌ | ❌ | ❌ |
HTML pages
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Page's own CSS | ✅ | ❌ | ❌ | ❌ |
| Own dark theme kept | ✅ | ❌ | ❌ | ❌ |
| Tab uses page title | ✅ | ❌ | ❌ | ❌ |
| No scripts or forms | ✅ | ❌ | ❌ | ❌ |
| Network addresses blocked | ✅ | ❌ | ❌ | ❌ |
| Own folder only | ✅ | ❌ | ❌ | ❌ |
| Find and outline inside | ✅ | ❌ | ❌ | ❌ |
| Select and follow links | ✅ | ❌ | ❌ | ❌ |
| Exports whole page | ✅ | ❌ | ❌ | ❌ |
| Mermaid inside HTML | ✅ | ❌ | ❌ | ❌ |
| Scroll kept across tabs | ✅ | ❌ | ❌ | ❌ |
| Source edits redraw live | ✅ | ❌ | ❌ | ❌ |
| Hidden panels stay hidden | ✅ | ❌ | ❌ | ❌ |
| Saved pages keep theme | ✅ | ❌ | ❌ | ❌ |
| Sprite icons drawn | ✅ | ❌ | ❌ | ❌ |
Email
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Subject as heading | ✅ | ❌ | ❌ | ❌ |
| Addresses as mail links | ✅ | ❌ | ❌ | ❌ |
| HTML body sanitized | ✅ | ❌ | ❌ | ❌ |
| Plain body with links | ✅ | ❌ | ❌ | ❌ |
| Inline images shown | ✅ | ❌ | ❌ | ❌ |
| Attachments with sizes | ✅ | ❌ | ❌ | ❌ |
| Routing headers hidden | ✅ | ❌ | ❌ | ❌ |
| No network reached | ✅ | ❌ | ❌ | ❌ |
| Mail forms dropped | ✅ | ❌ | ❌ | ❌ |
| Any legacy charset | ✅ | ❌ | ❌ | ❌ |
| Edit mail in place | ✅ | ❌ | ❌ | ❌ |
| Exact editable ranges | ✅ | ❌ | ❌ | ❌ |
| Controls dropped whole | ✅ | ❌ | ❌ | ❌ |
| Images from cid parts | ✅ | ❌ | ❌ | ❌ |
| Readable attachment sizes | ✅ | ❌ | ❌ | ❌ |
| Line endings kept | ✅ | ❌ | ❌ | ❌ |
| Eight-bit legacy bodies | ✅ | ❌ | ❌ | ❌ |
Office files
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Word headings and paragraphs | ✅ | ❌ | ❌ | ❌ |
| Eight bullet levels | ✅ | ❌ | ❌ | ❌ |
| Word tables drawn | ✅ | ❌ | ❌ | ❌ |
| Every sheet as table | ✅ | ❌ | ❌ | ❌ |
| Every slide drawn | ✅ | ❌ | ❌ | ❌ |
| Master slide bullets | ✅ | ❌ | ❌ | ❌ |
| Untitled slides titled | ✅ | ❌ | ❌ | ❌ |
| Presentation builds | ✅ | ❌ | ❌ | ❌ |
| Macros never run | ✅ | ❌ | ❌ | ❌ |
| Oversized parts refused | ✅ | ❌ | ❌ | ❌ |
| Only words written back | ✅ | ❌ | ❌ | ❌ |
| Styles and comments kept | ✅ | ❌ | ❌ | ❌ |
| Type on first sheet | ✅ | ❌ | ❌ | ❌ |
| Accent bar marks typing | ✅ | ❌ | ❌ | ❌ |
| Type in Word paragraphs | ✅ | ❌ | ❌ | ❌ |
| Type in spreadsheet cells | ✅ | ❌ | ❌ | ❌ |
| Edit slides where drawn | ✅ | ❌ | ❌ | ❌ |
| Part XML in source | ✅ | ❌ | ❌ | ❌ |
| Choose source slide/sheet | ✅ | ❌ | ❌ | ❌ |
| No sign-in needed | ✅ | ❌ | ❌ | ❌ |
| One zip reader | ✅ | ❌ | ❌ | ❌ |
| Every zip member kind | ✅ | ❌ | ❌ | ❌ |
| Unpacked only when read | ✅ | ❌ | ❌ | ❌ |
| Oversized members refused | ✅ | ❌ | ❌ | ❌ |
| Untouched parts copied exactly | ✅ | ❌ | ❌ | ❌ |
| Word numbering read | ✅ | ❌ | ❌ | ❌ |
| Removed bullets drawn plain | ✅ | ❌ | ❌ | ❌ |
| Repeated cells capped | ✅ | ❌ | ❌ | ❌ |
| Layout and master bullets | ✅ | ❌ | ❌ | ❌ |
| Picture bullets drawn | ✅ | ❌ | ❌ | ❌ |
| Titles from placeholders | ✅ | ❌ | ❌ | ❌ |
| Excel shared strings | ✅ | ❌ | ❌ | ❌ |
| Cells saved inline | ✅ | ❌ | ❌ | ❌ |
Encodings
| Feature | Leaftext | Obsidian | Typora | Calibre |
| Byte order marks | ✅ | ❌ | ✅ | ❌ |
| Both byte orders | ✅ | ❌ | ✅ | ❌ |
| Mark kept on save | ✅ | ❌ | ✅ | ❌ |
| Windows-1252 fallback | ✅ | ❌ | ✅ | ❌ |
| Binary files refused | ✅ | ❌ | ✅ | ❌ |
| Unknown extensions named | ✅ | ❌ | ❌ | ❌ |
| Invisible marks handled | ✅ | ✅ | ✅ | ❌ |
| Four-byte marks first | ✅ | ❌ | ✅ | ❌ |
| Zero byte means binary | ✅ | ❌ | ✅ | ❌ |
| Extensionless files tested | ✅ | ❌ | ❌ | ❌ |
| Unsavable characters named | ✅ | ❌ | ❌ | ❌ |
| Unreadable file explained | ✅ | ❌ | ✅ | ❌ |
Safety
| Feature | Leaftext | Obsidian | Typora | Calibre |
| YAML bomb refused early | ✅ | ❌ | ❌ | ❌ |
| Zip bombs refused | ✅ | ❌ | ❌ | ? |
| Columns past XFD refused | ✅ | ❌ | ❌ | ❌ |
| Rows capped at 16,384 | ✅ | ❌ | ❌ | ❌ |
| Encrypted books named | ✅ | ❌ | ❌ | ✅ |
| Book paths contained | ✅ | ❌ | ❌ | ? |
| Books size-capped | ✅ | ❌ | ❌ | ❌ |
| Fallback chains bounded | ✅ | ❌ | ❌ | ? |
| Saved-page SVG icons | ✅ | ❌ | ❌ | ❌ |
| Feature | Leaftext | Obsidian | Typora | Calibre |
| XHTML read as page | ✅ | ❌ | ❌ | ❌ |
| Own Markdown extensions | ✅ | ❌ | ❌ | ❌ |
| Bare addresses linked | ✅ | ✅ | ✅ | ❌ |
| Footnotes numbered by use | ✅ | ✅ | ✅ | ❌ |
| Picture sizes from headers | ✅ | ❌ | ❌ | ❌ |
| False sizes ignored | ✅ | ❌ | ❌ | ❌ |
| Alt text on hover | ✅ | ❌ | ❌ | ❌ |
| Drive paths in links | ✅ | ✅ | ✅ | ❌ |
| Frontmatter problems said once | ✅ | ✅ | ❌ | ❌ |
| Unknown cssclasses named | ✅ | ❌ | ❌ | ❌ |
| Colors stamped after sanitizing | ✅ | ❌ | ❌ | ❌ |
| Only note- classes | ✅ | ❌ | ❌ | ❌ |
| Pages keep theme attributes | ✅ | ❌ | ❌ | ❌ |
| Wiki link length capped | ✅ | ❌ | ❌ | ❌ |
| Terminal rendering | ✅ | ❌ | ❌ | ❌ |