Skip to main content

The best note taking apps for Mac – markdown, open format, cross platform

·

Back in Nov 2019 when I first wrote this blog post, the context for rethinking my note taking setup was based around growing problems with Apple’s software quality.

Having enjoyed Apple’s minimalist approach to the new Notes app launched as part of the 2016 release of iOS 9 and OS X 10.11, and having built up >1k notes ranging from book highlights to saved web pages to meeting notes to journal articles, bugs in iOS 13 and macOS 10.15 triggered my search for alternatives.

Apple sorted out a lot of those issues in subsequent releases – sync bugs, search bugs, crashes – but it was too late. I had already started a search for an Apple Notes alternative that used Markdown, was cross platform, and allowed me to control the source files.

This is an updated blog post (Jun 2022) that reviews the last few years of trying different note taking apps and what I finally ended up switching to.

tl;dr #

The best note taking apps for Mac are CraftObsidianLogseq and iA Writer. Read on for more details.

Screenshot of Apple Notes
Apple Notes on macOS 11.6. A very simple interface.

Requirements for a note taking app #

Simplicity + Cross Linking #

I want to write my notes in plain text with basic formatting. I’d like to be able to embed images (files managed by the app), make lists and include headings to structure the notes. Tables are nice but optional.

This means using Markdown formatting saved to a plain text file. Markdown is a well understood format that has many apps that can edit and render on any platform. This is the best way to ensure the files are accessible into the future and can be migrated to different apps if necessary.

In recent years, the idea of cross-linking, backlinks and wiki-style linking has become common. This has never been possible in Apple Notes – each note is independent, and remains so even in the latest release – but products like Roam Research have made this technique popular. The main benefit is being able to discover unlinked references to other notes you’d forgotten. The magic is that it happens automatically when you use the same phrasing or keywords. Cross-linking between notes is therefore a requirement for me.

Screenshot of backlinks in Craft
Backlinks showing up at the bottom of a note in Craft.

Non-proprietary format #

The “new” Apple Notes app moved away from IMAP to iCloud sync. This worked better (until the bugs started appearing), but is a proprietary database format. I can’t easily see or edit the individual notes on disk to make backups or export. They are contained in a SQLite database in ~/Library/Group Containers/group.com.apple.notes alongside attachments and images organised by internal note IDs. It’s usually dangerous to meddle with app files like this. In the latest macOS releases, there are even restrictions on accessing the directory!

Apple Notes doesn’t have an export option except individual notes as PDFs. The only way around this is using the Apple Privacy data download service which allows you to export Apple Notes as HTML with their associated attachments. This is how I was keeping a backup of all my Apple Notes.

Another advantage of using files on disk is that I can control how they sync. The app may provide its own sync service, but I want the option to choose Dropbox, Google Drive, iCloud Drive or some other system. Indeed, for privacy reasons I have been using [Syncthing connected over a private P2P network using Tailscale. This means most of my files are entirely private and encrypted and can sync very fast over my local network. There are tradeoffs e.g. no mobile apps or web UI, but I use OneDrive for those files that I need to share or access elsewhere. Files on disk can also be backed up independently. I use a combination of Apple Time Machine and Arq.

Screenshot of the Syncthing admin panel
Syncing files over my private P2P encrypted network using Syncthing and Tailscale.

Having now tried many different note taking apps, being able to test alternatives is easier if I can drop the existing files in. Markdown handles all the formatting, so the files themselves must be accessible. This means the app should just work with plain files on disk.

However, the problem with Markdown is that it is interpreted and rendered slightly different by each app. The basic formatting is always the same – bold, headers, lists, etc – but the more advanced functionality, like cross links, folders, embedded images, all tend to have their own custom implementation. This makes it a pain to move them between apps because you end up having to refactor your tags or links.

One solution to this is a container standard called TextBundle. The content is still in Markdown, but the links and related assets are in their own format. This means you can let the app implement its own proprietary rendering, storage and sync, but still be able to get your data out.

This is where TextBundle comes in. TextBundle brings convenience back – by bundling the Markdown text and all referenced images into a single file. Supporting applications can just exchange TextBundles without asking for additional permissions. Beyond being a simple container, TextBundle includes a standard to transfer additional information – to open up new possibilities for future integration.

You can then benefit from a better UX and advanced features which would be difficult to achieve with Markdown alone. Quite a few apps support TextBundle, including Craft and Bear.

Regular updates / actively maintained #

The problem with Apple software is that their main revenue is generated by hardware sales and a bundled OS, not any of the apps. This is changing with Apple TV+ and some iCloud services, but they are primarily there to compliment the OS. There is no competitive incentive to keep them up to date, add new features or fix bugs.

The annual update cycle is a legacy from the old days of shipping physical software. This makes sense for annual iPhone hardware refreshes, but is totally outdated for shipping software. Microsoft updates Office every month and Windows every 6 months. How do you report bugs or get support for Apple Notes? You can’t.

My experience with the poor quality of these latest Apple releases has changed my approach – if I am going to rely on software then I want the developer to be properly incentivised to maintain it i.e. I need to pay them for it.

For example, this is one reason why I use and pay for 1Password vs using Apple iCloud Keychain (as well as all the other features 1Password has). It’s also why I don’t mind the move to subscription business models for software.

Cross-platform #

This is not a requirement, but a “nice to have” if the app I use on macOS also works on mobile, Linux, the web, etc. I regularly switch between different OSs, particularly trying out different Linux distros, so I want to be able to work with my notes on whatever system I’m currently on.

The web is great for this, and is one reason why Electron has become so popular. The worst Electron apps are slow, buggy, bulky, and have a weird UX that doesn’t fit the platform. But there are good ones, and they’re getting better. VS Code is an example of a great Electron app. Microsoft Teams not so much. But it is possible, and that brings cross-platform support.

Note taking app reviews #

All this means dropping out of the Apple ecosystem, switching my notes to Markdown and aiming for them to be simple files on disk. I’d like it to be open source, but if I can manage the files then that matters less. And I want to be able to pay (or donate).

Ultimately, my goal is to be flexible about the platform I use, selected based on the best core OS and hardware. I don’t want to be restricted by proprietary apps and file formats. The Apple Silicon M1 MacBook Air has brought me back to using macOS as my daily driver OS, but I don’t want to be locked to it.

The best note taking apps for Mac #

Based on reviewing all the apps below, these are the best notes apps for Mac:

  1. Craft
    Craft is the best notes app for macOS – it is truly Mac-native and fits into the Apple design guidelines perfectly. It supports Markdown as well as different types of content block. The main downside is it uses its own proprietary JSON-based fileformat which goes against my “Markdown only” requirement. It defaults to their cloud sync, but you can use an entirely local source if you don’t want your data stored on their service. The UX is good, very macOS, and it has options to export to Markdown, TextBundle and others. A recent update added calculation functionality to tables, but Notion remains significantly ahead when it comes to working with built-in databases. We use Notion extensively at Console where the database functionality is invaluable, but for my personal notes I prefer to keep away from storing data exclusively in the cloud.
  2. Obsidian
    Hits all my requirements – a simple, Markdown editor that opens files on disk, is regularly updated and cross-platform. It is Electron, but has become much faster than when I originally tried it back in 2019. Syncing with Kindle works either through the Kindle Sync plugin or via the official Readwise plugin if you use that for managing Kindle highlights (which I do). This is why it beats Logseq. The 1.0 release introduces a brand new UI design which makes it feel much more integrated into the OS. Notion and Craft both support slash commands which you can use as you type in the editor. Obsidian supports those as well, but only for global commands and not formatting - this seems like a weird omission. Tables are very basic and don’t come anywhere close to what you can do with the new formulas functionality in Craft, let alone Notion’s databases. Sync is end-to-end encrypted, but you just have to trust their implementation because it’s not open source.
  3. Logseq
    I used Logseq for a long time before switching to Obsidian because of the community plugins. It’s a great app that hits all my requirements. The UI is more minimalist than Obsidian, but can get messy due to how it parses Markdown as blocks in the editor. It’s also open source.
  4. iA Writer
    A good native macOS experience with simple, well designed apps for macOS, Windows, Android and iOS. However, even though it includes tag parsing, quick open/search and working with files on disk, it is mainly designed as a tool for writing (in Markdown). It’s amazing for that purpose, and does a good job at being a note-taking app, but it’s a bit of a hack. A recent update adds wiki-style backlinks and they say they’re going down the route of being a knowledge manager. It’ll be interesting to see how it develops.

Craft #

I had been using Obsidian as my primary note-taking app for over 6 months before I discovered Craft. It quickly imported my Markdown files and as I got into testing it, the high quality UX became apparent. Coming from the Electron-based Obsidian, the native macOS UI was much more responsive and completely aligned with the system design. Colours, fonts, shortcuts, tabs are all consistent with other apps on Mac and the editor works really well. Content blocks mean you can create structure and add decorations to make things stand out.

Little touches make the difference – like how search highlights results within the preview window, or the ability to look into a linked note by hovering, or sub-notes within notes that you can link from within the text. More examples include embedded dates link together consistently, daily notes show up on the in-app calendar, you can auto-create notes from your linked calendar events, create deeplinks into a note.

The table functionality recently got a boost, but it’s still limited compared to the advanced databases in Notion (which I use to manage Console). I expect this will continue to get better, though.

All of this comes together for a really great experience on the Mac. They also have an iOS version which has lots of similar touches optimised for mobile. Plus a web version! Feature parity is not quite there with the desktop or mobile apps, but you can access and edit all your notes from any web browser with basically no real loss of functionality. This includes sharing notes with others (anyone can view, but they require a free Craft account to edit and collaborate).

The main downside is that Craft uses its own JSON-based document format. You can see this when you use an “external space” where the files exist on disk and you can sync them yourself rather than using Craft’s service (this disables sharing and the web UI). It almost stopped me from switching, but the ability to easily export everything to Markdown, TextBundle, PDF or Word reassured me I could get my data out if needed.

That, and the lack of plugins. This is where Obsidian shines and I am going to miss the ability to pull in my Kindle highlights automatically from Readwise.

Screenshot of Craft
A note in Craft

Obsidian #

I originally looked at Obsidian back in 2019, but it was very slow due to being built in Electron. I also didn’t like the way it implemented tagging. It supported everything I wanted – Markdown editing of files on disk with backlinks and powerful search, but the performance was the blocker.

This has now changed. Obsidian have resolved all the performance concerns I had, and significantly polished the UI to make it much closer to the minimalism of iA Writer and Logseq. The new theme in 1.0 is a major improvement. It supports modern features like wiki-style backlinks and discovery of notes, search and a command palette + quick search. The table functionality is very limited though - it really is just tables. Craft is a bit better there, but Notion is the best there is. If you don’t need structured data then it doesn’t really matter.

Obsidian is cross platform and includes an optional paid sync service, which is useful if you want to use their mobile app. I rarely take notes on mobile so I don’t need it, instead syncing everything using [Syncthing connected to a private network using Tailscale. It’s marketed as end to end encrypted, which is great, but you have to trust them on that because it’s not open source.

But the killer functionality comes from the community plugins, and the Kindle Sync plugin in particular. I used that until I switched my Kindle highlights management to Readwise, who have their own official plugin Obsidian plugin for sync.

I also particularly like Obsidian’s split view – reminds me of tiling window managers on Linux!

Obsidian is not open source. It’s not a requirement because I have full control over my data, but I have a philosophical preference for using open source products that are part of my core workflow. There’s no requirement to pay, or even sign up for any type of account. But I understand that this is a business, and I’m happy they offer paid options.

Screenshot of Obsidian 1.0
Obsidian note with the preview editor which renders as you type. This is the new 1.0 theme on macOS

Logseq #

Logseq was my first experience of the power of linked and unlinked references, also known as backlinks. I had been drawn into the concept by Roam Research, but wanted a note-taking app that allowed me to control my data as files on disk.

Logseq is an open source alternative to Roam Research. It’s built on web tech as a local app in Electron. It has more of a minimalist interface than Obsidian, but the block editor and UX design for linked references can make it feel messy. It’s also open source.

I like how it is focused on the daily journal style of note-taking (you can also create independent pages), which links into how it does todo-list management. You can add a note, set it as a TODO, then mention a date in the future, and it’ll surface an appropriate in-UI reminder as you get closer to the date. This works really nicely.

I also like the native Zotero integration. This connects to the Zotero API to provide in-app search of your reference library, which it can then import as a new note. It attaches the PDF to the note and has a built-in reader which can export highlights directly into the noteZotero 6 has a similar feature, but importing into the notes app is really useful. No other app integrates as well.

I really like Logseq and if you don’t need Kindle Highlight Sync (or other plugins) – Obsidian’s killer feature – then it is difficult to pick between them.

Screenshot of Logseq
A Logseq note created from Zotero with embedded PDF reader and highlight extraction.

iA Writer #

Although not originally designed for note taking, back in 2018 iA Writer added support for #hashtags which makes it much more suitable as a notes app. The subsequent addition of wiki-style backlinks in the release of iA Writer 6 suggests they’re thinking more about how it can be used as a note taking or knowledge management app.

Like Craft, I really like the UI on macOS because it fits in perfectly with the system design guidelines. It is very lightweight, simple to use and fits all my criteria for editing files on disk with Markdown. It is minimalist with few settings, forcing you to focus on the task at hand. There are apps for macOS, Windows, iOS and Android.

iA Writer does not support attachments and the embedded image support is limited, which forces you to store those files on disk. Naming becomes important for binary files like images so they can be properly searched.

Notes are stored on disk so you can use any sync service you like, but there is official support for services like iCloud Drive and OneDrive. They are plain text Markdown so I can edit them in any app.

I would like to see the ability to nest tags and helpers for Markdown formatting e.g. improved image support. This is where iA Writer reveals itself as a tool for writing, not for note-taking, compared to Craft which has significantly more advanced features. It’s still a hack to use it for notes. This is fine if you’re coming from Apple Notes which also has no concept of backlinks, but once you have tried tools like Obsidian and Logseq it’s difficult to go back.

Screenshot of iA Writer
iA Writer on macOS 11.6

Other note taking apps I tried #

VS Code + Markdown extensions #

VS Code supports markdown out of the box, including live preview, however it is a code editor and not designed for note-taking. There are two approaches you can take to adapt it to be better for the task.

The first is to use Dendron, an extension specifically designed to add notes functionality. It supports graph views, daily journals, backlinks, tags and enhanced Markdown editing. If you want everything out of the box, this is the extension to go with.

Alternatively, you can install several independent plugins:

The final plugin is crucial because it allows organising notes by tag. Of course, VS Code’s command bar is excellent at search so I could just navigate files by name (or text search), but it is sometimes useful to be able to see and view all associated notes in a list.

Unfortunately, the tag format supported by iA Writer – #hashtags – is not part of the Markdown format. Instead you will need to use the Markdown metadata format by including tags in a YAML block at the start of each file. The advantage of using this format is that it is generally supported by other Markdown parsers, so if I wanted to switch to something new in the future there is a greater chance of it being supported with no changes.

VS Code does use Electron behind the scenes. However, unlike many Electron apps, VS Code ties into the native UX of the OS it is running on and has acceptable performance. This is a rare example of a well-built Electron app, most of which are slow and buggy.

Ultimately I decided I wanted a separate app that was designed specifically for the use case, and kept my code editor just for coding. But this could be a good option if you like living in VS Code!

Screenshot of VS Code + Markdown
Taking notes using VS Code + Markdown extensions on Windows.

Evernote #

Years ago this was the first notes app I ever used, however it was notoriously buggy and I gave up. The company has been through some challenging times. It still uses a proprietary note format and database which rules it out. I didn’t bother to try it because of the history of poor quality software.

OneNote #

Included with my Office365 subscription, OneNote has been improving rapidly and now has a much simpler UI and fast sync. One of the great features is character recognition in images, allowing them to be searched as if they were in plain text.

Screenshot of OneNote web
OneNote Web UI

Notes can only be in a single section or Notebook (like Apple Notes) whereas I feel that tags are more flexible approach to organising things. OneNote supports tags but they are hard coded to specific types, which suggests there’s still a lot of legacy cruft still behind the scenes.

OneNote on the web looks good with the new simplified UI and the Mac app also works nicely, particularly with dark mode. However, compared to all the other notes apps it is always slow to launch. I find this lag exists with all Microsoft apps on Mac – they are very heavyweight.

Screenshot of OneNote on macOS
OneNote on macOS

Using it with Office365 creates the Notebook file in your OneDrive but this is just a URL file that opens the web UI when you load it. There’s no actual content in the file which means that OneNote is using a proprietary database behind the scenes.

Although OneNote is a regularly updated application that works cross-platform (and has a decent app for iOS as well), the lack of open file format means I can’t back up the files and extract my data whenever I want. Like Apple Notes, there is no export functionality. I don’t want to move from Apple’s proprietary format to Microsoft’s, so this rules it out.

Screenshot of the OneNote URL file
OneDrive OneNote URL File

Worth a mention #

  • Bear was originally my #1 note taking app before I realised the importance of editing the data files on disk. Bear has a great native experience on macOS and includes apps for all the important Apple platforms. It has a great editor that works in Markdown but is also a live preview, so you can use the markup if you want but let it get out the way. My main issue is that it uses a proprietary database for storing everything, even if you can export to a range of formats, and exporting everything is more of a pain than Craft. It also supports the TextBundle format. But if you don’t care about that, Bear is a great product.
  • Typora was promising because it is a good Markdown editor with cross-platform apps that manages files on disk. I particularly liked how it managed attachments for notes, creating a .assets folder with the same name as the parent note. However, it doesn’t have very advanced file management features for the library/list of notes and there’s no support for tags or backlinks. It looks good just for Markdown, but then I might as well use iA Writer.
  • Inkdrop is an app I’ve heard about because of the blogging of its main (Japan-based) developer. It fits most of my requirements and the UI looks great, but uses a proprietary format rather than files on disk. The format is JSON and you can set up your own CouchDB server to run the sync services, but that isn’t something I’m interested in doing.
  • nvALT hits all of my requirements except tag support, but is quite an old app (and looks it). The UI is why I excluded it, but I am keeping an eye on nvUltra which is the replacement in beta. Unfortunately, it’s been in beta for years, so I’m not sure where development is going.
  • Scrivener might be great for complex writing projects but it is far too sophisticated for a notes app.
  • Simplenote is worth a look because they have well maintained apps and Markdown editing available for free. I excluded it because of the proprietary database format but generally like what Automattic do, however the apps don’t seem to be actively developed as they have not received any major updates for a long time.
  • Standard Notes looks interesting because it pledges privacy and longevity with how it manages your notes files. It has options to store attachments in Dropbox, OneDrive or Google Drive as well as automated backups there, but ultimately stores notes in a proprietary format (even if that format is open and you can run your own server because the code is open source). The desktop apps are Electron and I found them to be very slow and inconsistently designed. A potential option for power users but not what I’m looking for.