Open Source Note Taking Apps

I try to find a good open-source replacement for the big closed source, online-only services like OneNote, Evernote and Simplenote.

I’ve done this a few times in the past and wanted to check back in on the state of development. This time around I have tried out a couple of good open source candidates listed at the alternativeto page for OneNote, as well as org mode and Vivaldi, because I suspect people would have suggested those anyway.

A screenshot of OneNote showing off various features such as inking and tags
OneNote has all the features I need, but is there something open source that can compete with it?

Summary

These are the key features I’m looking for in a note taking app. I’ve compared the various offerings to see how they hold up.

Basic note taking

I want to be able to write with my drawing tablet or my phone, add arbitrary styling to notes, use emoji to highlight certain parts of notes, switch fonts (useful for learning Japanese), and choose if stuff I paste is displayed as-is or stripped of styling.

AppInkFormattingEmojiFontsPaste Formatting
ZimxRich textB&WOne Global Fontx
Xournal++✓ + Pressure sensitivitySVG FormattingB&Wx
Notebook PEAxBasic rich textB&WOne Global Fontx
CherryTreexRich textB&WOne Global Font
JoplinxMarkdownOne Global Font, CSS for render
BasketxBasic rich textx
org-mode emacsxorgxOne Global Fontx
VivaldixMarkdownOne Global Font
OneNote✓ + Handwriting recognitionOffice Document Formatting

Advanced content features

I use lots of tables in my notes, attach images inline, use TODO checkboxes. I occasionally use equations I’d like to see inline. I don’t want my note layout to be constrained to a single vertical page of text, and would like to be able to customise the appearance of the page, often with ruled lines (when I’m handwriting).

AppTablesImagesTODOsEquationsArbitrary layoutPage Styles
Zim✓ plugin✓ No drag handles✓ plugin, texxCustom CSS
Xournal++xx✓ tex✓ Within pageCustom Rules per page
Notebook PEAxxxxxx
CherryTree✓ No drag handlesxxCustom themes
Joplin✓ texxCustom CSS
BasketxxxCustom themes per page
org-mode emacs✓ text only✓ No drag handles✓ plugin, texxCustom themes
Vivaldi✓ No drag handlesxxCustom themes
OneNote✓ + OCR✓ tex, WYSIWYGCustom Rules & themes per page

Organisation & Files

I need my notes to be organisable in a hierarchy and searchable. I would prefer my notes be readable and backupable in an open format, and not require me to manually save every time I make a change.

Import and Export are not so important to me day-to-day but if I’m switching between apps it does become important.

Passwords and encryption ae not important to me – I can do that at a disk level if I want. But this is often advertised by note taking apps, so I’ve included the comparison.

AppHierarchySearchFilesSavingPasswordsImportExport
ZimWiki files on diskLivexTextWeb, Text, Markdown, Latex
Xournal++xxZipped XMLAutoxPDFPDF, Image
Notebook PEAxxRTF on diskManual✓ Mandatory per notexText
CherryTreeZipped SQL or XMLAuto✓ Full NotebookText, HTML, MD, some open source note appsText, HTML, PDF
JoplinFiles on disk or synced to serverLive✓ Full NotebookMd, EvernoteMd, HTML, PDF
BasketxXML on diskLive✓ Per sectionText, some open source note appsHTML
org-mode emacsxorg textManual✓ Per notexHTML, Md, Latex
VivaldiJSONLivexxx
OneNote✓ up to 4Online & disk, Closed formatLive✓ Per sectionxDocX, PDF, HTML

Usability & Application

I want an interface I can tailor to me, quick command palettes and keyboard shortcuts. The app needs to be usable without spending a lifetime learning its quirks, and work on Windows and ideally also Android.

I’ve included extra info in the comparison about how the app is built (people often love to hate electron apps, so that seems important to bear in mind), the status of its manual and help pages, and whether it is still being developed.

AppCustomisable ToolbarsCommand PaletteKeyboard shortcutsUsabilityAppOSHelpAndroidDevelopment
ZimToggleablexGoodGTKAll, some Linux requirementsLocalxactive
Xournal++x✓ OKPoorGTKAll, some Linux requirementsPartial onlineactive
Notebook PEAxxxPoorJavaAll with JavaPartial onlinexinactive
CherryTreeGoodGTKAllOnlinexactive
Joplin✓ OKGoodChromiumAllOnlineactive
Basketx✓ OKPoorQtLinux, WSLman pagexinactive
org-mode emacsxxPoorNativeAll, some Linux requirementsLocalxactive
VivaldiGoodChromiumAllOnlineactive, closed source
OneNoteGoodNativeWindowsPartial onlineactive, closed source

Detailed Breakdown

Zim

Zim is a wiki editor for the desktop. It is open source and available for most operating systems. It follows all the usual conventions of wiki editing and has lots of plugins available. I could see myself using it regularly, though I would need to find workarounds for some usability problems I’ve noticed.

The system for managing Wikis makes for a good analogue of individual notebooks, with as many sections and as much nesting as you want. It is also designed with later web publishing in mind, and much of the formatting follows web standards, though you are limited to only available HTML elements. Nothing more granular.

The table editor is awful and doesn’t support ↹ tabbing. The plugins that are available often have Linux library dependencies so even after you install the app you may find certain plugins non-functional.

Xournal++

Xournal++ is a fork of the earlier app xournal. It is open source and available for most operating systems. It works well with a tablet, but it’s not an application I can see myself using to replace my existing note taking apps. It feels more like a drawing and graphics program masquerading as a note taking app. For example, when resizing a text block instead of text reflowing, it scales.

It feels like a good analogue for drawing of sketching on paper, and has a workflow designed for annotating PDFs. The pressure sensitive inking is a nice touch.

It does not work as a notebook, where you may want to keep lots of text alongside sketches. It is awkward that you are limited to sheets of paper and that there is no option for an infinite canvas.

The UX is bad. It lacks a lot of contextual awareness, so you have to keep manually switching tools as you change what you’re doing. I’m getting some GIMP feelings from this.

Notebook PEA

This is a note taking app for the ultra-paranoid. It is designed so that notes are never unencrypted, except in memory.

This looks like a student’s first java project, and the user interface is just awful to use.

As a note taking app it is no better than a regular notepad, the only advantage it really offers is as a wrapper for encryption.

It has zero support for advanced note taking features like tables, embedded images, or complex formatting of any kind.

CherryTree

A note taking app that was clearly written by nerds. It’s not for notes, but nodes.

It is a well designed hierarchical note taking system. It has good support for lots of different formatting and inline tables. Though it also lacks drag handles for images.

It offers an import feature, which is nice, however the only big service it imports from is Evernote. If you want to come from OneNote, it says you have to go via Evernote, which is annoying.

The file types are either zipped SQL database or XML. The manual says that for a database you need to clean it every now and then, and that you shouldn’t use XML for large files. This seems needlessly complex and makes me concerned for the integrity of my notes.

Joplin

Joplin is an electron app that edits markdown. The first time I saw it I thought “This is just like VS Code”. The only extra interesting things it offers are attachments (converted to base64 files), a WYSIWYG editor (that the website warns against using as in some cases What You See Is Not What You Get).

To see your files, you need to turn sync on (even the local filesystem needs to be “synced” to). It’s just markdown, for some reason attachments are turned into base64.

Notes organisation is decent. You can nest notebooks, but then notes are in a flat structure. It also has a tag system.

Joplin was the only open source app I tested that had a first party android app.

Basket

Basket is the only note taking application that I’ve seen even come close to OneNote’s idea of canvases where you can place arbitrary text wherever you want.

That said, the whole interface is incredibly clunky to use, and after the initial release nearly a decade ago it doesn’t seem to have had a new update since.

This is unfortunate as I feel that with the might of KDE development teams behind it, baskets could well have been the replacement I was after.

org-mode

org-mode is a text file format. It’s main implementation is via emacs.

I have tried to get used to emacs several times, but quite frankly I see no reason to use it. The emacs concepts of buffers (and the UI in general) is simply unintuitive, and I don’t have the patience nor time to learn it.

org-mode is a text file markdown-like language with some extra toys thrown in. It can hook into basically anything Linux via script segments.

Maybe if I was forced to spend time at a command line, but for day to day note taking on the desktop? No thank you.

Vivaldi

The Vivaldi browser contains a built-in note editor. It uses markdown and has a visual editor. Files are all stored on disk in a single json file for some reason, and export to individual files is not ready yet.

For basic note taking and referencing websites it works well. When I need to type something lengthy with newlines into a web chat box, but I don’t want to accidentally send it, I can use notes. It is also really useful for holding snippets that I need to re-use elsewhere, as they can be easily inserted via the context menu.

But due to the lack of ink support, difficult to use inline image attachments, I can’t use it as my go-to for more detailed notes.

OneNote

Developed by Microsoft, OneNote (from the Desktop Office suite, not the standalone or web app) is hands down the best note taking app I’ve found.

Formatting is everything you would expect from an office document editor, with styles and fonts and inline formatting. It has a built-in equation editor, table editor, you can easily attach images, which can searched through OCR. Ink support is excellent and it has decent handwriting recognition. Context switching between ink and keyboard/mouse makes it easy to use.

The interface is clean, intuitive, and easy to use, while also being extremely customisable. The WYSIWYG editor means I don’t have to fiddle around with HTML or Markdown, I can just write my notes exactly the way I want them. There is little restriction to how I can lay things out, which is much more freeing for quickly jotting something down.

It’s not perfect, though. It relies on synchronising to OneDrive so if you don’t have a Microsoft account you’re out of luck. And there is no portable note format, so your notes are stuck in the Microsoft ecosystem, at their mercy should they ever want to break OneNote (which they have already tried to do on one occasion). The big killer is it doesn’t support Linux Desktops, I’ve only been able to use it on Android or Windows.


Summary

From my experimentation, Zim, CherryTree and Joplin look to be the most promising of the apps I’ve tried at this time. But all of them still lack the polish and depth that OneNote has, and some key features like arbitrary element placement with easy editing and formatting, and some more advanced features like OCR for attached images.

For now though, I think I’ll probably just stick with OneNote. It just works. And until it doesn’t, it’s by far the best choice for me.

Join the Conversation

  1. Hi, I recommend that you learn about Logseq. Plain text tends to have a longer life and how to use plain text effectively to organize your notes, I think, is much more valuable and meaningful.

    1. Plain text is likely to be long living, but I don’t think that necessarily precludes more advanced formats. XML (used by Xournal++) is pretty stable and I’d argue just as likely to be long lived and supported.

      Logseq looks ok, lots of different integrations and tools. One to watch as it develops.

  2. There’s a less well-known wiki software that’s actually much better in functionality than Zim is but looks a bit older (because it *is* old) and it’s called WikidPad (notice Wikid not Wiki). I’ve used it for the past year and it’s so much better than Zim. Has a lot more functionalities and I think if someone wanted to get it updated they could prolly just throw an e-mail to the devs.

Comment

Vivaldi