From Evernote to Obsidian

Within a month I experienced several ways to convert a single Evernote notebook (2k notes) to MD files.

  1. Import into Joplin (as markdown), export as markdown.
  2. Import into Notion, export as markdown.
  3. evernote2md - https://github.com/wormi4ok/evernote2md
  4. yarle - https://github.com/akosbalasko/yarle

Almost any tool loses something when exporting to MD files: timestamps, tags, highlighted text, code blocks, tables, etc. Evernote links (evernote:///view/…) between notes are never automagically converted to links between md files with relative paths . You may have to choose the least worst. :pensive:

Because tags were a must for me, before exporting to enex, I’ve directly accessed Evernote database file (sqlite) and updated the title field adding tags between []. Somehow it didn’t work as clean as I expected (notes weren’t detected as modified) so I was compelled to make a little change to each one within the Evernote app. I chose adding a single space (which automatically gets trimmed on save) at the end of the title. This marked the note as changed so it got synced with the updated title afterwards.

The following comparison is made from the results I’ve got with each method.

Joplin

Joplin as an editor is very limited: resources management is a mess, md files are mixed with plaintext files used as diffs, syncing gets corrupted.
Even though, this is my preferred in-transit app to get md files. :white_check_mark:

Pros exporting MD:

  • Excellent markdown quality even for tables!
  • Resources are stored into a single folder: _resources.

Cons exporting MD:

  • Exported MD filename has a max of 50 characters
  • Timestamps, tags, highlighted text and code blocks are not exported
  • Resource filenames are hashed (you cannot guess the content from the name)
  • Some resource filenames have “bin” extension or no extension at all. The link name inside the md file has the right one.

After exporting md files, I’ve post-processed each one using a perl script :scroll: to fulfill my needs:

  1. Create a line for tags obtained from the first line of the file (the title of the note)
  2. Rename it with full length title, previously cleaned with rules like the ones that evernote2md uses
  3. Prepend the title with a # to format it as a level 1 Heading

I’m working now on 2 additional scripts :scroll:

  • convert Evernote links to links between md files with relative paths
  • rename resources using the link name from the md file.

Notion

This is a great replacement for Evernote. You import directly from an Evernote account and you just keep writing. But somehow is huge for someone who just needs an editor for constructing a knowledge base from simple formatted notes. And your data belongs to the cloud. One of the biggest drawbacks is that Notion handles tags in a poor way: you must keep a Database page with the note-tag association. :face_with_raised_eyebrow:

Pros exporting MD:

  • Excellent markdown quality
  • Timestamps and code blocks are exported
  • Internal links between notes defined inside Notion are converted to links between md files with relative paths

Cons exporting MD:

  • Exported MD filename (as well as its resource folder) has a max of 50 characters and a hash identifier is added after that
  • Tags and highlighted text are not exported
  • Tables are converted to Inline-Databases in Notion and they are not exported to MD - you just get a link to a Notion url
  • A Full-page Database is only exportable as CSV, not Markdown
  • Resources are stored in an independent folder for each md file

evernote2md

This is a quite straightforward command line tool.

Pros exporting MD:

  • Exported MD filename has a max of 200 characters (+ good cleaning rules)
  • Resources are divided into 2 folders: image and file.
  • Resource filenames are readable - the same name it has when added to the note
  • Tags are added in a single line - each one as an inline code

Cons exporting MD:

  • Some erratic failures in the order and detection of file resources (not images) :warning:
  • Nested lists not fully supported
  • Task lists broken

yarle

This is the last one I found and although it claims a lot, it’s not ready now.

Pros exporting MD:

  • User-defined templates for metadata
  • Timestamps, tags, highlighted text are exported

Cons exporting MD:

  • It was hard to get it running the first time - the template was relative to the installation path not where I was executing it
  • Exported MD filename is converted to lowercase
  • Exported content has a lot of unnecessary escape characters (\)
  • Resources are stored into subfolders (one for each note) inside a single folder: _resources.
  • Some resources filenames have “octet-stream” extension or no extension at all. The link name inside the md file is also modified, so you may lose some extensions.
11 Likes

Thank you for the write-up.

Regarding “yarle”: The first two “con” issues are already fixed (at least in the master branch).

The evernote2md and yarle tools are open source. I expect they will become better over time, but this needs people contributing to the code or at least reporting bugs and issues via GitHub so that these can be fixed.

Hi @andrezgz!
Thank you for this comparison, thanks for checking Yarle!

@Cito has right, its funny, the first two cons were fixed during the days when you tested Yarle, yesterday I released a new version (3.2.1), so they are in the package as well. Moreover I tried to simplify the readme by mentioning non-install usage only.

About the other cons, could you please give more feedbacks about them, ideal would be with examples to fix them soon? Especially I interested in con3 with unnecessary escape characters, and the last one. About con4: I’m not sure why it is counted in as a con. I implemented the attachments in this way, because I did not want to add index files in case when two different attachments with the same filename are references from two notes.

Thank you for your help!

Hi @akos0215, I’m glad my feedback is useful and hope this one gives you more data to work with and get Yarle to a new level.

I did a quick test a few minutes ago (on a Windows machine), after updating yarle to the lastest version.

Executing yarle

I’ve noticed that change and tried to go with that alternative using this configuration

{
    "enexSource": "./test.enex",
    "templateFile": "./evernote.tmpl",
    "outputDir": "./md_yarle",
    ...
}

but it keeps trying to find the template inside ‘yarle-evernote-to-md’ folder.

C:\yarle\>npx -p  yarle-evernote-to-md yarle  --configFile test.json

Loading config from C:\yarle/test.json
Converting notes in file: ./test.enex
Converting note Evernote - Converting to Markdown...
Failed to convert note: Evernote - Converting to Markdown Error: ENOENT: no such file or directory,
open 'C:\Users\User\AppData\Roaming\npm-cache\_npx\4160\node_modules\yarle-evernote-to-md\dist/.././evernote.tmpl'

I temporarily fixed that, copying the template file where yarle is trying to find it.

Escaping characters

I do understand that characters like hash, square brackets, underscore or asterisk need to be escaped because they have special meaning inside md files. But I find it unneccesary in certain cases, and sometimes it breaks the content (I cannot copy a escaped url and use it directly on a browser, or copy & execute the sql code on a client)

  1. Example: Url with underscores

https://www.reddit.com/r/Evernote/comments/j87fb9/please_help_me_find_the_evernote_alternative/

is converted to

[https://www.reddit.com/r/Evernote/comments/j87fb9/please\_help\_me\_find\_the\_evernote\_alternative/](https://www.reddit.com/r/Evernote/comments/j87fb9/please_help_me_find_the_evernote_alternative/)
  1. Example: sql inside codeblock with underscores
# SQL comment
select * from note_attr set sync_required = 1, date_updated=now();

is converted to

\# SQL comment
select \* from note\_attr set sync\_required = 1, date\_updated=now();
  1. Example: javascript inside codeblock with square brackets
tinyMCE.execCommand('mceCodeEditor',false, tinymce.editors[1].id);

is converted to

tinyMCE.execCommand('mceCodeEditor',false, tinymce.editors\[1\].id);

Storing attachments

You are right. Maybe it’s not a con for everyone. Even though the conversion is done correctly, I find some difficulties when trying to keep improving my notes:

1 . When I need to add more attachments to a converted md file, I try to be consistent. So, new files should go into the specific folder created for that md file, and the md editors I tested don’t handle that well automatically - Obsidian has an option (Attachment folder path) that lets you configure a single location for that.
2. When I rename the md file, that associated folder will retain the original name. Obsidian handles well renaming linked md files and attachments, not this attachment folders.
3. If I ever need to link an existing attachment in another md file (not the original one), I will have to move it outside this folder, just to be consistent, and manually adjust links in the original md file.

Thaks for all your hard work!

1 Like

Hi @andrezgz!

Great, thank you for the details!

About the first problem (absolute paths), finally I understood that it’s not about the path of the enex file, but the template. Silly me, sorry for that. I released a new version (3.2.3) in which both of the enex and the template location are required to be specified as an absolute paths. (Btw I don’t get why I did not implement it including template paths previously. :confused: )
About the other issues: there is a feature request to handle plain urls according to the markdown standard, e.g. to generate them in format. When I implement that, I will skip escaping them, which will solve the issue you raised.
Code snippets: Similarly, we have a feat.request about code blocks, I’ll add to skip escaping to among its todo list.

About the attachments: your points are absolutely right, I did not consider these aspects at all. I’m thinking on a solution.

Thanks again for your feedbacks, I really appreciate it! :slight_smile:

3 Likes

Hi, I’m not really a techy person but am migrating from evernote to Obsidian for a number of reasons, including to future-proof my notes. I origiinally migrated my notes using Joplin, but it doesn’t do tags and I really would like my tags moved over. I only started using evernote to save quotes from my reading a little while ago, so I have under 400 notes, but it would be a pain to go through and re-tag them all.

So I tried using evernote2md but it doesn’t seem to work on my computer. It closes as soon as I open it for no apparent reason. I’ve tried running as administrator, troubleshooting, running in compatibility mode, etc. I have Windows 8.1. Anyone else have a similar problem? Know of any solutions?

I’m not even 100% sure I would know how to use it if I got it running but I’d like to try to figure it out.

Thanks for the help.

1 Like

@SotS - try Yarle. It has been further improved over the last months.

2 Likes

@SotS And feel free to ask if you have difficulties/feature requests around Yarle, I’m glad to extend its funcionailities in order to make it work better.

2 Likes

Hey there! :slight_smile: Some kind of “newbie” instruction would be really helpful. I can’t get it to run because of an unexpected identifier - and I am not sure how to fix this. (Total terminal noob). Thanks and greetings! :slight_smile:

Hi @changenow ,

I found a cool step-by-step guide about how to use Yarle here:

Of course, if you still have problems, don’t hesitate to reach me out here or on Github!
cheers!

5 Likes

I have started to use Yarle with the Mac app interface. It is early days but looking good so far.

Thank you @akos0215 for your work on it. I will feed back any issues into your GitHub page.

1 Like

Thank you @timlawson , looking forward to your feedback!

I’m still having issues with all these notes imported into Obsidian with YARLE. None of the images work in any of the notes, to start with. I’d like to address that before moving onto other issues.

Hi @mangosteel !

Could you please summarize your problems as an issue on Yarle’s github page? I used to check it more frequently than this forum.

Thanks a lot!

Hello. I am a new user of Obsidian. In order for me to start using Obsidian seriously, I need to, at least export one of my Evernote notebooks into Markdown file. I am using Yarle and I find that it is quite a good tool.

The thing that I like about Yarle is that it saved the Created Date and Modified Date into the file properties itself, so all my notes are not shown will today’s date in Windows Explorer.

However, I notice that the filename itself was created with the date and time. For example, my Hello World note will be exported as “20210630111111 Hello World.md” file. When I use Obsidian to open the files, I will see a lot of numbers (timestamp) on the left panel of Obsidian instead of the actual note’s title.

I am not a developer so I don’t dare to fork Yarle out and fix it. Any kind person here can at least point me to how I can make changes to Yarle to do it?

Hi @jalur ,

I answered your question on github : Welcome to Yarle Discussions! · Discussion #118 · akosbalasko/yarle · GitHub

1 Like

Hi there! Thank you everyone in this post. Great detailed info that should help me choose what option will work best for my situation.

I’m new to Obsidian and desperate to escape EN v10. To do that I need to convert somewhere in the neighborhood of 23k notes and ~15GB of data, about 12 years worth of info (hopefully I can just archive some of it at this point…). Thankfully, my workflows have always fit pretty comfortably into annual Notebooks with a few stray topical ones.

What I’m wondering is:

  1. is there a max size that is safe to convert at once?
  2. if notebooks are converted into separate vaults, are the links inside the various notes usable between vaults? I’m a heavy linker.

Thank you!

1 Like

The notebooks become folders, which you can put inside the same vault.

I just joined the forum. I’m also not a techy person but I need to learn to us Yarly to move my notes. Is there an option, as with Evernote2md (which also isn’t even loading for me), to convert Evernote tags to inline md text. I would like to have Evernote tags convert to [mdlinks] for Obsidian. Thanks

Hi @EggToastie ,

It looks like (I did not test it, but someone reported it on Github) that Yarle supports EN10+ (there were some differences in how the images are stored in the enex file in the various EN versions, but they were fixed).
So, to answer your questions:

  1. No Yarle does it as a stream, no max size limitation.
  2. unfortunatelly linking notes stored in different notebooks (and hence enex files) are still not supported, I feel the pressure to start working on it, you’re the 3rd who’s missing the same feature.

cheers,
akos