Skip to main content

evernote2unbent

Move your Evernote notes into Unbent — notes, notebooks, tags and attachments — without exporting an ENEX file first.

Evernote has no export API, so every other route runs through the desktop client's File → Export, which is manual, unreliable past a few thousand notes, and produces multi-gigabyte files you then have to feed somewhere. This syncs your account with evernote-backup and uploads straight from its local database.

Install

uv tool install evernote2unbent

Or with pipx:

pipx install evernote2unbent

Use

evernote2unbent migrate

That signs you in to Evernote, syncs your account to a local database, then uploads everything to Unbent. It asks which Unbent instance to use the first time and remembers the answer.

Start with one notebook to see the result before moving everything. The sync still fetches your whole account — it is the upload that is scoped:

evernote2unbent migrate -n "Some Notebook"

Interrupted runs are safe to repeat: the sync is incremental, and notes that already landed are skipped rather than duplicated.

Doing the steps separately

migrate runs evernote-backup for you. If you already use it, or want the ENEX files too, run the halves yourself:

evernote-backup init-db
evernote-backup sync
evernote2unbent upload

Re-running is safe

Unbent keys each note on a hash of its title and body, so a note that already landed is skipped rather than duplicated. That makes an interrupted upload resumable by simply repeating the command — and a note whose attachments failed partway gets only the missing files on the next run.

Nothing here deletes or modifies anything in Evernote.

Options

Flag Meaning
-d, --database The database evernote-backup sync wrote (default en_backup.db)
-n, --notebook Only this notebook. Repeatable
-t, --tag Only notes with this tag. Repeatable
--include-trash Include notes from Evernote's trash
--url Instance for one command, without storing it

Signing in

login prints a short code and a link. Approving it in a browser you are already signed in to grants an ordinary session — no password is typed into the terminal, and no long-lived key is pasted from a settings page.

The token is stored in ~/.config/unbent/credentials.json at mode 0600, keyed by instance so a token for one server is never sent to another. logout forgets it locally; signing out everywhere in Unbent revokes it for real.

Which instance

There is deliberately no default. A guessed instance means a forgotten flag can send a migration to a server you did not choose, and that failure is silent, because uploading to the wrong Unbent still succeeds.

The answer is stored in ~/.config/unbent/config.json — plain JSON, mode 0644, separate from the credentials file so changing a URL never means opening one with a token in it.

evernote2unbent set-url https://unbent.app
evernote2unbent show-config

$UNBENT_URL overrides it for a shell session, --url for a single command.

What gets converted

Notes arrive as Markdown. The conversion happens server-side in Unbent, which is why this package does not implement one: Unbent's own importer already has a tested ENML converter, and a second implementation here would drift from it.

Attachments upload separately as raw bytes and are linked from the note body by their content hash, which is how an inline image ends up in the right place.

Credit

The hard part — Evernote authentication, the Thrift API client, and incremental sync — is evernote-backup by vzhd1701, used here as a dependency rather than forked. This package adds an uploader and a CLI on top of it and modifies none of it.

If you want ENEX files rather than a migration, use evernote-backup directly; it does that well and this is not a replacement for it.

License

MIT

Metadata

Release files for evernote2unbent 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evernote2unbent 0.1.1
File Size Uploaded
evernote2unbent-0.1.1.tar.gz 53.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for evernote2unbent 0.1.1
File Interpreter ABI Platform
evernote2unbent-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 71.4 kB

Release files / evernote2unbent-0.1.1.tar.gz

Download URL evernote2unbent-0.1.1.tar.gz
Size 53.6 kB
Tags Source
SHA-256 checksum
How to use checksums
dc0b7acb19fd3ad36f507d9b1be707218093f05de3e752738a4110ba623bb172
BLAKE2b-256 checksum
How to use checksums
68ca0b84c25df0a1d786eab0fb3f559551548bfe92453c2150a898501135cec8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / evernote2unbent-0.1.1-py3-none-any.whl

Download URL evernote2unbent-0.1.1-py3-none-any.whl
Size 17.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb1288bc6a1827aec88715033237358b55de1ad7399c719c7a8b654a9cff884d
BLAKE2b-256 checksum
How to use checksums
d1a2a0d41192708ead26e2e252826bc21187337dbc9f496ad98c0f4e3f5a6b59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page