Escaping from Evernote

Finally leaving Evernote and taking my data with me - even if it's a ton of work!

Escaping from Evernote

I have been an Evernote customer for 10 years. That is about as loyal as I am to any product or service, and is admirable for the lifetime of any tech product. I've recommended it to many other developers / hobbyists, used it with work teams, and relied upon it as an extended digital memory.

However, I've been unhappy with the unending feature-bloat and aggressive pushing of users to more expensive plans ( the now-extremely-limited free plan is pretty much useless ). At its core this is a straightforward technology and they should be spending more time improving the core feature set.

Specifically I could do without:

  • Synchronized multi-user editing
  • TODOs / reminders / calendar integration / alerts - I have different systems for these concepts
  • AI-powered search - *requiring that I allow a 3rd party data processor to read my notes

Ultimately I feel that my notes are my intellectual property and I'm not willing to have them be subject to vendor lock-in. I want to be in control of my content, including how and where the data is stored in the cloud.

Now in Evernote's defense ... they deserve credit for accelerating the transition to digital, personal note-taking and striking upon this niche before the larger tech companies realized it existed. All the big players now have a note app in their suite, which is really just some features on top some files stored in their cloud storage solution. For many users this works great because they're already paying for that cloud storage, and they have no plans to divorce their tech ecosystem. I worry about vendor lock-in and dislike fluff.

Also to Evernote's credit they created the ENEX file format , which provides a way of exporting the structured content represented by notes. It can be used for backups as well as moving notes to other destinations. The format encapsulates the note metadata ( including tags ) and embeds files as base64 encoded data. This isn't great for file size, but avoids the need to handle both note files and the files they link to. A single note or whole notebook can be exported as ENEX files.

Most other note application don't offer this gracious of an export feature. Once you have thousands of notes organized into notebooks, tagged and inter-linked - a PDF or HTML export is not very useful.

I feel like I should get out now before they realize that they've provided an escape route. Thankfully there are others who have braved the Ever-exodus and left some tools behind to make the task easier.

Finding an Alternative

Now that I've complained a bunch let met specify what I do want.

  • My requirements
    • desktop ( linux ) and mobile ( android ) clients which sync with each other
    • ability to self-host backend storage
    • end to end encryption
    • support for at least basic markdown: lists, tables, links, embedded images (and other types of files)
    • imports from .enex
    • exports to an accepted, interchange-able format, meaning markdown

I like the idea that I'm just modifying Markdown files, but I have to admit that it quickly gets more complicated than that

Introducing Joplin

This post is not going to cover the alternatives I considered. The easiest thing for me would be if Google offered what I described above ( since I'm already paying them for cloud storage ), but they don't. Instead the rest will be on migrating to Joplin, an open-source platform designed to welcome ex-Evernote users ( meaning it imports ENEX out of the box ).

Joplin website
Joplin, the open source note-taking application

Installing On Ubuntu 22.04

I installed:

wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash

Pretty easy.

Dropbox as Sync Target

Using a dropbox account with sufficient storage, follow this.

A note here on cost: It's $120 a year for 2TB of Dropbox "Plus", providing 2TB of space when I only currently need about 5GB. This is the same price at 9.99 per month as Evernote. This is not a cost-savings thing.

E2E encryption setup

Honestly I don't remember the steps to this but there is documentation.

Installing on Android

Google Play store. Configure to use Dropbox. You'll need to provide the password for the encryption key in order to decrypt the notes that sync down.

Export all data from Evernote

Evernote doesn't do ENEX exports from the web client. OH YEAH! I forgot about my MAIN GRIPE!!! I have to use this (decent) web interface to Evernote because they don't provide a Linux client! Don't ignore Linux users! Hate. Hate. Hate. I have asked and been ignored.

Initially I tried to use a Windows VM to do the ENEX export but couldn't get that working on Ubuntu for some hardware-related reason. Then I found a much better solution: evernote-backup

GitHub - vzhd1701/evernote-backup: Backup & export all Evernote notes and notebooks
Backup & export all Evernote notes and notebooks. Contribute to vzhd1701/evernote-backup development by creating an account on GitHub.

The perfect solution - great documentation and deployable with Docker

While this is all possible, its more work than the average person should have to do to migrate their note data right? Roll your sleeves up.

evernote-backup is a command line utility for

  1. syncing note data for an Evernote account to a local database and
  2. locally exporting that database to ENEX files

The documentation is great, including how to use it within Docker with this extra tip:

"To log in to Evernote using OAuth with Docker, you'll have to forward port 10500 for a callback:"

As the documentation suggests, just use these commands as one-offs. The container itself has a very specific interface so don't try to get creative. I setup a directory for task as ~/evernote_export and navigate into it before running the following steps.

1 init-db

This first command initializes a local database to store the note content and starts an interactive authentication session with Evernote.

docker run --rm -t -v "$PWD":/tmp -p 10500:10500 vzhd1701/evernote-backup:latest init-db --oauth

It requires your regular account credentials, including a 2-factor token if you use one. Within the Evernote web UI you'll give permission to this process as a trusted 'app'.

2 sync

Now to get that note content.

docker run --rm -t -v "$PWD":/tmp -p 10500:10500 vzhd1701/evernote-backup:latest sync

3 export

This creates ENEX files from the local sqlite database

docker run --rm -t -v "$PWD":/tmp -p 10500:10500 vzhd1701/evernote-backup:latest export ./enexports

Reading database en_backup.db...
Exporting notebooks...
[####################################] 14/14
All notes have been exported!

With the docker volume mapping, those (notebook) files wind up being exported to ~/evernote_export/enexports/

Import Notebooks into Joplin

On the desktop client it is easy to import ENEX into Joplin.

Depending on the size of your notebooks, the encrypting and uploading to the "sync target" (Dropbox in my case) can take a bit. I had to manually feed 14 notebook files but the upload speed was really the bottleneck.

The most hipster note example I could dig up, coffee roasting batch notes. Notice that notebook is still associated, original creation date, tags and images present.

Final Thoughts

As a feature-for-feature replacement ( of the features I want ), and from a data-preservation perspective, this is nearly perfect.

I'll need to do some more testing before bailing out of Evernote entirely but this is looking really promising. Update to follow.

Nice To Haves?

  • draggable bulleted lists
  • inter-note links retained?
  • shoot a picture from camera into note
  • a few things will be missing
    • PIN protected app - officially not supported
    • external sharing / publishing of notes