With the release of iOS 9 and OS X 10.11 in 2016, Apple introduced a new version of Notes. It added a number of new features for formatting, drawing and sync using iCloud instead of via IMAP. It was lightweight, fast and simple. I started using it shortly afterwards and now have almost 1,000 notes ranging from book highlights to saved web pages to meeting notes to journal articles.
Unfortunately, the iOS 13 and macOS 10.15 releases have been incredibly buggy. I have found that sync is inconsistent across devices (my MacBook, iPad and iPhone each register different numbers of notes) and some notes are not syncing at all. Search also stopped working before fixing itself, and now returns inferior results.
Considering how much information I have stored in Apple Notes, this made me reconsider what I wanted from a note taking app.
My requirements for a note taking app
- Simplicity: I only require basic formatting, images and tables. I’m not interested in fancy fonts or colours because the system is better at ensuring the formatting works across devices, screen sizes and rendering into the future e.g. if I ever need to increase font sizes. 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 the content on any platform.
- Non-proprietary format: The “new” Apple Notes app moved away from IMAP to an iCloud based format. This made sync work better (until recently) but was necessarily a proprietary database format. I can’t easily see or edit the individual notes on disk to make backups or import to another app. They are contained in a SQL Lite database in ~/Library/Group Containers/group.com.apple.notes alongside attachments and images organised by internal note IDs but it’s usually dangerous to meddle with app files like this. 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 have been keeping a backup of all my Apple Notes to date. Ideally the app will allow editing of individual files on disk because then I can choose my own sync service and run backup as part of my normal approach using Arq but should at least allow export of content to multiple formats.
- Regular updates / actively maintained: The problem with Apple software is that their main revenue is generated by the core OS, not any of the apps. They are there to compliment the OS but there is no competitive incentive to keep them up to date, add new features and 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 company I get it from to be properly incentivised to maintain it i.e. I need to pay them directly for it. 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.
- Search: My approach to note taking is to save the full text and associated files of things I find interesting or useful so I can search them in the future. Spotlight Search on macOS is very good (and has some advanced options). Even though I keep my files well organised, I regularly use it to find things because it is quicker and searches inside documents. For some reason, Apple Notes are not searchable from Spotlight though, so I have to search twice – in Spotlight and in Notes.app. I would prefer to have everything searchable from Spotlight, or any other search tool.
- Cross-platform: This is not a requirement but rather a “nice to have” if the app I use on macOS also has an iOS equivalent. If all the above requirements are met, I can easily edit open file formats from different apps on different platforms. My Macbook Air (13″ 2018) is only a year old so I have no plans to replace it soon, although have had to send it in for 1 keyboard replacement already. I don’t mind the feel of this keyboard but the reliability is poor. Given the state of Apple software quality and the general problems with the Macbook keyboards, I have been following Microsoft’s Surface products with interest. The Surface Laptop 3 is very nice. I’ve been into the London Microsoft store to have a play and I’m eager to see the Surface Pro X when it is released. I’m just unsure about Windows. Over a decade ago it was Windows Vista that forced me to move to Mac due to the poor quality. I’m not quite there with macOS yet but am unhappy with it.
All together I have been re-evaluating my choice of key software to ensure that I’m tied to the Apple ecosystem as little as possible. I already use Office365 for my email and calendar but have also started to move my files to OneDrive from iCloud Drive (I’m glad I didn’t try the recent macOS betas!). What’s the difference? I pay Microsoft for these services and they are regularly updated (unlike iCloud for Windows) and maintained, probably because they directly generate $billions of direct revenue.
Ultimately, my goal is to be flexible in which platform I use, selected based on the best core OS and hardware. I don’t want to be restricted by apps and file formats that only work on a single platform. macOS remains the best OS for now (including for privacy) but I don’t want to be locked to it.
Evaluating note taking apps
To skip to the conclusions, these are the two best notes apps for Mac:
- Bear: Simple, well designed UI, actively maintained, markdown export but proprietary database. Mac / iOS only.
- iA Writer with your own cloud drive (I use OneDrive). Edits files on disk in Markdown format with simple, well designed apps for macOS, Windows, Android and iOS. This is was using when I originally wrote this post but as of 2020-03-11 I have switched to VS Code (see below).
For more detailed individual app comments, see below.
I am now using VS Code with several markdown extensions(see detailed comments below). As a developer, I am comfortable with the more technical interface compared to Bear or iA Writer, which are both still great options if you want everything done for you out of the box. However, the customisability of VS Code, combined with its cross-platform consistency, means it is now my markdown note editor of choice.
Bear was my favourite app. Good tag support, Markdown rendering, strong search (including Spotlight integration), encrypted notes, embedded images and attachments, and multiple export options. I particularly liked the helper mechanism when linking between notes, which maintains the link even if you rename a note.
It is fully supported and actively developed for the Apple ecosystem. The entire company is based around the product and has a subscription business model, suggesting they are likely to be able to keep things going. The iOS and iPad apps work well and sync across from my Mac was always reliable. It actually uses iCloud behind the scenes which makes Apple Notes failure to sync more unusual.
Bear would be my recommendation for someone who was happy with staying on Mac/iOS. If needed you can export to various different formats. I used it for a whole month (which is the length of the free trial – sync is not available in the free version) and it worked well.
The main reason I decided not to continue using it is that Bear uses a proprietary data format so it can sync with iCloud. This makes sense because their time is better spent on the app functionality rather than making cloud sync work, but I ultimately decided that I valued having open, plain text files more than the extra functionality. If I do eventually move to Windows then I would be unable to move my notes easily. Having an open format was the key to selecting iA Writer instead.
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 but 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.
I really like the UI on macOS because it fits in perfectly with the system design guidelines. It is very lightweight and simple to use and fits all my criteria for editing files on disk with Markdown. It is very minimalist with few settings, forcing you to focus on the task at hand. There are also apps for macOS, Windows, iOS and Android.
iA Writer does not support attachments and the embedded image support is limited, but that actually forces you to store those files on disk (so files like PDFs can be searched by Spotlight and edited directly e.g. for highlighting, which doesn’t work if you open PDFs from within a Bear note). Naming binary files like images becomes important so they can be properly searched.
If you use iA Writer on iOS with iCloud then deals with sync for you but there is a limitation with using external file sources such as OneDrive with the iOS app – you have to manually find and add them into the app to edit them, which is a hassle. Otherwise, files are stored on disk and so I can sync them with OneDrive and run my normal backups. Since they are plain text Markdown, I can edit them in any app.
I would like to see the ability to nest tags and add emoji to them, plus helpers for Markdown formatting e.g. linking to other notes and improved image support. However, those limitations are minor enough to overlook and pick iA Writer as my Apple Notes replacement.
Update 2020-03-11: I am now using VS Code instead of iA Writer. See below.
Notable is still very early in development, and the rough edges show e.g. when copy/pasting it would paste text 3 times. It also uses Electron and has many weird UI elements showing through the cross-platform layer, for example the popover menus for attachments don’t have the same behaviour as menus should on macOS.
The management of attachments was not as good as Typora – it would copy them to an ‘attachments’ directory but the management of those files was very basic. Removing the attachment from the note did not delete it on disk.
This app is too early to take over such an important use case and has no clear business model yet (donations and a pending application to Y Combinator).
Included with my Office365 subscription, OneNote has been improving rapidly and now has a much simpler UI and faster sync. One of the great features is character recognition in images, allowing them to be searched as if they were in plain text.
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.
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.
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.
It also uses Electron and I really hate Electron based apps. They remind me of Java apps that almost get the native OS style right, but not quite. They feel brittle, tend to have poor performance and I found that Typora was buggy (the macOS version is in beta). I understand why developers use Electron because it allows you to build cross-platform apps using web technologies, but I’ve had bad experiences with them e.g. the poor performance of Slack.
VS Code + Markdown extensions
The great thing about writing notes as Markdown in plain text files is if I find a better editor, I can just switch to it and all my files are readily accessible. As such, as of 2020-03-11, I am now using VS Code as my note editor of choice. It supports markdown out of the box, including with a live preview, however there are several extensions which add extra functionality.
The final plugin is the crucial one because it allows me to take advantage of organising my 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 I was using for iA Writer – simple #hashtags – is not part of the Markdown format. You could try and find (or write) a VS Code extension to parse all tags in that format from existing files, but I have opted to gradually transition to 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, I assume to help with the cross-platform support it enjoys. However, unlike many Electron apps, VS Code ties into the native UX of the OS it is running on and has good performance. I don’t know of any other Electron-based app that is as good – none of the other Electron notes apps in this review were up to the level of quality I want in an app I use every day.
Worth a mention
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 active beta now. It’s not open for public use at time of writing so I couldn’t try it yet. Since it supports Markdown, when it is released I will just be able to point it to the files I’m editing with iA Writer.
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.
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). It doesn’t use simple plain text files on the filesystem which is one of my requirements (and the desktop apps are Electron) – I don’t really want to be messing around running my own server and MySQL database for notes. Potential option for power users but not what I’m looking for.