Goodbye Evernote, Hello Obsidian

Summary

I’ve been an Evernote subscriber and daily user for the past 14 years. I recently switched to Obsidian. Key reasons:

  • Obsidian has native clients on all platforms: Windows, Mac, Linux, Android and iOS, while Evernote doesn’t support Linux.
  • The Obsidian clients are lightweight and fast, while the Evernote client is bloated and slow.
  • Obsidian stores your notes in text markup, using filesystem files & folders, while Evernote uses an opaque proprietary format and stores it on their servers.
  • Obsidian enables you to organize your notes into folders with no arbitrary limits to nesting depth or complexity, while Evernote limits you to a 2-level hierarchy of Stacks and Notebooks.
  • Obsidian enables you to store your notes anywhere you want on your device (even SD cards on Android devices), while Evernote stores it internally.
  • Obsidian cleanly separates the function of syncing data across devices, giving you several different options. Evernote’s syncing is built-in and proprietary.
  • Obsidian is free unless you want enterprise support or to use their data sync.

I had been using Evernote for so long, and had so much data in their system, I thought I was stuck with them for life. I dreaded switching tools because the effort of doing so seemed intimidating and risky. I am willing to pay for software and services, if they solve an important problem for me, I use them frequently, and they work well. But Evernote started failing on that last point.

The end state is that it took me 2 days to make the switch. This includes exporting all my data from Evernote, preserving its structure (stacks, notebooks, tags), getting into all my devices, running Obsidian clients on each device, synchronizing the data, and testing the system.

Part 1: Why Switch?

For the first few years Evernote was great. The only thing I didn’t like is they didn’t have a Linux client. I found the open source Nixnote2 project and even contributed some features to it in 2017. I used this for a few years until Evernote released their own Linux client, at which point I joined their beta program and started using it. It worked well and note taking life was good!

Later, Evernote not only stopped supporting their Linux client but also disabled it. And Nixnote2 didn’t work as well as it did before, due to changes Evernote made to their APIs. So I was stuck with using Evernote only in the browser. It worked OK, but not as nice as the desktop client.

Meanwhile, the Evernote Android clients were getting progressively bloated and slow with every release. Touch the app to start it, and wait up to a full minute before it’s usable. And even then it’s painfully slow. Almost unusable.

Also, Evernote was prone to sync errors when you work on more than 1 device. Edit a note and later a duplicate copy shows up because some other device hadn’t stored its changes, one got stale, Evernote couldn’t merge them so that is up to you to do manually. Ugh.

Finally, Evernote jacked up their prices, more than doubling the price of a basic personal subscription and limiting its functionality in an attempt to up-sell.

At this point my annual subscription was a few weeks away from renewing so I decided to check out alternatives.

Part 2: Pick an Alternative

There are many options for note takers. My most important requirements are support for Linux, data sync across devices, and lightweight fast clients. Also important to me is using accessible data formats and control over my data – where it resides, how I sync, etc. Last is price. Free is nice and I don’t mind setting things up on my own. But I’m willing to pay if necessary and it gives benefits worth the cost.

Obsidian met all these requirements so I gave it a whirl. My plan was to get it working and use it for a few weeks before I had to decide whether to renew Evernote.

Part 3: Setting up Obsidian

I found several great walk-throughs online about all of this, available to everyone, so I’m only going to outline the steps I followed and add a few tips.

Step 1: Export your Evernote Data

I used Evernote-Backup from GitHub. I installed and ran it inside a Python virtualenv just to be clean and safe.

This connects to the Evernote API to extract all your data, stores it in a local SQLite3 database, and exports ENEX files from that database. It preserves your Evernote stacks & folders too.

Note: the –single-notes flag is a bit confusing. It extracts each notebook to a separate file and it stores the files in folders representing their structure in Evernote. So far, so good. But when you import this into Obsidian, it ignores the directory structure, the stacks & notebooks are ignored, and all your notes appear in one big flat directory. Ugh!

The default behavior (without the –single-notes flag) creates an ENEX file for each notebook. Within each file are XML elements marking the individual notes it contains. This means it creates fewer files, yet larger ones. When you import this into Obsidian, it recreates the notebook structure and it also breaks the individual notes into separate .MD files. This is what I wanted!

At this point all my Evernote data was imported into Obsidian, preserving the folders. And I could also browse it in the filesystem. Any changes I made on one side (Obsidian or filesystem) appeared nearly instantly in the other. Very nice!

Step 2: Set up Sync

Next you need to decide how you want to synchronize your data across devices. You have several options:

  • Obsidian Sync: built-in, seamless, but opaque, and costs $10 / month.
  • Google Drive (DropBox, Box, etc.): copy your entire Obsidian data (directory tree) to the cloud storage system of your choice, and use the apps of your choice to synchronize it across your devices.
  • Git: copy your Obsidian data to GitHub/GitLab and use the apps of your choice to clone, push, branch, etc. across your devices.
  • Local: use Syncthing to sync devices on a local network.

All of these options are described in detail with tutorials you can find online. I chose Google Drive and it works nicely. My preferred sync apps:

FolderSync Pro is a great app that is highly configurable. The setup I’m using for Obsidian is a 2-way sync, including deletes and hidden files, scheduled daily, with instant sync of local changes on the mobile device. Using MD5 checksums makes the sync more efficient (both FolderSync and Google Drive support them).

Yet I have found that OverGrive is smarter & faster than FolderSync. For example if I move a directory, OverGrive handles it with a single operation – fast and efficient. Foldersync Pro handles it by downloading all the files in the new location and deleting them from the old location – much slower!

Update: Out with Google Drive!

The Problem

After a month of note-taking across 4 devices, a bunch of spurious files started appearing in Google Drive. After some testing I discovered what is going on, though I don’t know why. Here’s a simple example:

Suppose you have 2 devices, A and B. Your notes are in the cloud C. That makes 3 versions of your notes: C is the master with complete copies residing on A and B.

We start with A, B and C being identical. Now you edit a note N on device A, which uploads N to C. This should update and replace file N on C, but instead Google Drive creates a new file called “N (1)”. This downloads to device B as a new file.

Now if you edit note N on device B, you won’t see the changes made from A because they’re in a different file “N (1)”. If you don’t notice that N is out of date and you change it, device B uploads N to C and Google Drive duplicates the file again, to “N (2)”.

Now note N is split across 3 files, each having different changes that you need to manually merge and delete the duplicates.

The Solution

There is no solution. This behavior is built into Google Drive and cannot be changed. It’s been repeatedly reported as bug but they haven’t fixed it and never will.

Fortunately, we have several choices for cloud storage. I stopped using Google Drive and switched to S3.

In with Amazon S3

Obsidian has a community plug-in called Remotely Save. It is a free, open source GitHub project. Well, not entirely free. Most of its capabilities are free but it has extended capabilities if you pay for it. Fortunately, its basic free capabilities include bidirectional sync to a variety of cloud storage providers.

Using S3 to store Obsidian notes is a bit more complex to set up than consumer services like Google Drive or Dropbox. With S3 you need an AWS account, you need to create S3 buckets, set their security, create IAM users, etc. This is the kind of basic cloud stuff software engineers do every day, but normal people might find it confusing.

I did all that and it’s all working in S3 across 4 devices (desktop, laptop, phone, tablet). So far, so good!

This solution has the added benefit of relying on an Obsidian plug-in, which works seamlessly within Obsidian on all my devices, so I don’t need other software like OverGrive or FolderSync to do the job.

Conclusion

Obsidian is a better note taking experience than Evernote. Sync is the part of Obsidian that you must figure out on your own. Amazon S3 works well for me and the activity costs about 12 cents per month on my AWS bill. That’s pretty cheap considering I am a daily active user syncing across 4 devices.

Obsidian notes are in .MD format so I can read and write them with pretty much any app outside Obsidian if I want to. I can organize my notes (move folders around, etc.) from within Obsidian, or in a file manager, or at the command line, whatever tool is best for the task. And I have more confidence in my data, since I have total control over where it’s stored and how I back it up.