Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

yarle-evernote-to-md

akosbalasko1.1k(MIT OR Apache-2.0)6.16.0TypeScript support: included

Yet Another Rope Ladder from Evernote

evernote, enex, converter, md, markdown, enex to md

readme

logo

Last Commit Version Documentation Maintenance License: MIT GitHub All Releases


Download YARLE, the ULTIMATE CONVERTER OF EVERNOTE notes here:


Get YARLE for Mac Get YARLE for Windows Get YARLE for Linux (.rpm) Get YARLE for Debian (.deb)



Features:

Yarle can convert:

  • :memo: Any text
  • :memo: All metadata: original creation time, last modification time, tags, GPS location, notebook name, source URL
  • :link: External links
  • :link: Internal links among Evernote notes
  • :computer: Codeblocks
  • :framed_picture: Inline Images
  • :paperclip: Attachments
  • :page_facing_up: Webclips

Works with:

  • :notebook: single enex file (one notebook exported from Evernote)
  • :books: or a folder of enex files supported (several notebooks exported and placed into the same folder locally)

Highly customizable:

  • :rocket: Creates Markdown files matching to user-defined templates, see Templates introduced. See How to use templates with YARLE for details.
  • :bulb: Metadata support: Puts title, creation time, update time, tags, and latlong source, notebook, link to original html meta-information into md as metadata. (To set them, please set up a custom template)
  • :hammer: Updates md files' creation, access, and modification timestamps according to the notes' original create/update/modification time.
  • :hammer: Organizes all attachments into a _resources subfolder (to keep the notes' folder as simple as possible).

To where can I import the converted notes?

Any other note taking application which recognizes notes in standard markdown, like NotePlan or Craft, but Yarle supports some others that has specific format requirements too. These are:

Obsidian

LogSeq

Tana (check details and limitations here)

Heptabase

Feedback, Appreciation, Donation:

If you have an idea on how to improve the tool or face any problems, feel free to raise an issue, or even contribute! If you like the product, you can give a star here on github, or you can Buy Me A Coffee

Yarle's supporters said:

from Someone
Thanks, this really helped me out of evernote!

from john@thebeard.org
YARLE has just allowed me to transfer several years-worth of Evernote notes to Obsidian painlessly and astonishingly quickly. Your work has made my day. Thank you.

from @opscat
Thanks so much!

Proud to be suggested by:

drawing drawing drawing drawing drawing drawing drawing

Instructions

Download the application matching with your Operating system and double-click on it. (On mac, you need to right-click + Run to Open it, because Apple prevents to directly run an application downloaded from Internet)

https://user-images.githubusercontent.com/11886731/213943491-97211b41-c130-4b6b-a1e9-1fc360741ff7.mov

In order to perform conversion into Logseq format, please choose Logseq as Target format in the configuration panel, then choose the type of your notes (Journal Notes or Pages). For Logseq all the other options have already been pre-configured.

Using Yarle via command line

Just open a terminal, specify config options in a config file (options detailed in Configuration) and type the following:

npx -p yarle-evernote-to-md@latest yarle --configFile <path_to_your_file e.g. ./config.json>

Yarle intro and usage videos on Youtube:

How to migrate notes from Evernote to Obsidian (using Yarle)
YARLE: A lifeline to escape from Evernote

Configuration:

To configure Yarle, you must create a config file. By default it looks like this:

{
    "enexSources": [
       "/absolute-path-of-your-enex-dir/test-template.enex"
       ],
    "templateFile": "/absolute-path-of-your-template-dir/sampleTemplate.tmpl",
    "outputDir": "/path-of-your-desired-output-folder",
    "isZettelkastenNeeded": false,
    "useZettelIdAsFilename": false,
    "plainTextNotesOnly": false,
    "skipWebClips": true,
    "useHashTags": true,
    "outputFormat": "StandardMD",
    "taskOutputFormat": "StandardMD",
    "urlEncodeFileNamesAndLinks": false,
    "skipEnexFileNameFromOutputPath": false,
    "monospaceIsCodeBlock": false,
    "keepMDCharactersOfENNotes": false,
    "keepOriginalAmountOfNewlines": false,
    "addExtensionToInternalLinks": true,
    "trimStartingTabs": false,
    "convertPlainHtmlNewlines": false,
    "encryptionPasswords": [],
    "nestedTags": {
      "separatorInEN": "_",
      "replaceSeparatorWith": "/",
      "replaceSpaceWith": "-"
   },
   "replacementCharacterMap": {
      "<": "_",
      ">": "_",
      ":": "_",
      "\"": "_",
      "/": "_",
      "\\": "_", 
      "|": "_",
      "?": "_",
      "*": "_"
    },
   "globalReplacementSettings": [
        {
         "type": "title" ,
         "regex": "X",
         "replace": "<replaced_X>"
         },
        {
         "type": "content",
         "regex": "a",
         "replace": "<replaced_a>"
        }
      ]
   "resourcesDir": "resources",
   "turndownOptions": {
      "headingStyle": "atx"
   },
   "dateFormat": "YYYY-MM-DD",
   "haveEnexLevelResources": true,
   "haveGlobalResources": false,
   "useUniqueUnknownFileNames": false,
   "useLevenshteinForLinks": false,
   "convertColorsToMDHighlight": false,
    "logseqSettings":{
        "journalNotes": false
    },
   "obsidianSettings": {
      "omitLinkDisplayName": false
    }

}

The following configurational properties are available: | |Property Name| Property value | Meaning | |-------------|----------------|---------| |enexSources| multiple enex files, or a folder of the enex files(if you specify it via command line) | specifies the exported Evernote notebook(s) as an absolute path| |templateFile | path of your custom template file | if its not specified, a default template will be used |outputDir | path to your output dir (absolute or relative) | this is the main output dir where the extracted markdown files and the external resources, images, pdf-s are going to be created| |resourcesDir | _resources | subdir where attachments/external resources will be placed |isZettelkastenNeeded | true or false | puts Zettelkasten Id (based on time of creation) at the beginning of the file name| |useZettelIdAsFilename | true or false | Note files are named by their creation date (those are interpreted as zettelIds)| |plaintextNotesOnly | true or false | skips any notes with attachments (e.g. notes containing pictures)| |useHashTags| true or false | whether to add the pound sign in front of tags| |outputFormat| ObsidianMD or StandardMD | generates internal file links and highlights in Obsidian-style: highlights are going to be bounded by == instead of ` characters, file links are going to be as follows: ![[file-name]] instead of ![file-name](file-name). Possible values: ObsidianMD to get Obsidian-style notes, StandardMD or skip it completely, if you prefer Standard Markdown format.| |haveEnexLevelResources| true or false | stores note resources on global resources folder per enex export if enabled | |monospaceIsCodeBlock| true or false | if it's true then all deepest elements with monospace font style is recognized as Codeblocks| | dateFormat | string | ISO 8601 specification of the expected date format (e.g. YYYY-MM-DD) |keepMDCharactersOfENNotes| true or false | set it true, if you used Markdown format in your EN notes| | nestedTags | it's a complex property contains the following subitems: "separatorInEN", "replaceSeparatorWith" and "replaceSpaceWith" | separatorInEN stores the tag separator used in Evernote, replaceSeparatorWith is the string to what separatorInEN should be replaced to, and replaceSpaceWith is the string to what the space character should be replaced to in the tags. For example using the default settings a tag `tag1sub tag of tag1is going to be converted totag1/sub-tag-of-tag1|keepImageSize| boolean | preserve the images' size or not |imageSizeFormat| `ObsidianMD` or `StandardMD` | specifies the format if keepImageSize is set to True |urlEncodeFileNamesAndLinks| true or false | URL-encodes linked file names and internal EN links . e.g "linked file.jpg" will be converted to "linked%20file.jpg" |sanitizeResourceNameSpaces| true or false | Replace spaces in resource names with the `replacementChar`. e.g "linked file.jpg" will be converted to "linked_file.jpg" |replacementChar| string | the replacement character. e.g "linked*file.jpg" will be converted to "linked_file.jpg". It defaults to "_" |replacementCharacterMap| JSON Object | it contains character key-value pairs, the keys will be replaced by the proper values in the filename |globalReplacementSettings| JSON Array | it contains search and replace pairs, the keys will be replaced by the proper values according to the given type (title or content). Please note: this property has to be in valid JSON Array format, and each item has to have <b>type</b> ('title', 'content' or 'tag'), <b>regex</b> (what you want to replace as a valid regular expression) and <b>replace</b> (what you want to push instead of the matched text) properties) |keepOriginalAmountOfNewlines| true or false | keep the original amount of newlines, default is false, when the multiple newlines are collapsed to one. |generateNakedUrls| true or false | if it's true, Yarle generates 'naked' external Urls without any extra characters. If its false, external Urls are wrapped by '<' and '>' characters |addExtensionToInternalLinks| true or false | adds '.md' extensions at the end of internal file links, to make them recognizable by DevonThink and other tools |turndownOptions| `{...}` | additional configuration options for [turndown](https://github.com/mixmark-io/turndown#options), e.g., `{ "bulletListMarker": "-" }` (only in Yarle config file, not desktop app) |obsidianSettings| `{...}` | settings for Obsidian output. Currently,omitLinkDisplayNameis supported. If set to `true` links will be of the form `[[foo]]`. Conversely they will be of the form `[[foo|bar]]`. Defaults to `false`. |logseqSettings| `{...}` | settings for Logseq output, currentlyjournalNotesproperty is supported, if it is set to `true`, then the notes will be converted to be recognizable by Logseq as Journal notes, the notes will be named by their creation date and they will be collected under `journal` folder. If it is `false`, then they will be converted to be `Pages` (e.g. simple notes, collected in `pages` folder). |taskOutputFormat| `ObsidianMD` or `StandardMD` | Output format of Evernote v10+ tasks. ObsidianMD will connvert tasks to match with Obsidian Tasks plugin's requirements. StandardMD will create plain tasks, loosing many features like reminders or due dates. |obsidianTaskTag| string | a tag to put to a task converted from Evernote v10+ tasks. Optional by Obsidian Tasks plugin, pls check the details there. |trimStartingTabs| true or false | Removes the tab characters from the beginning of every line in a note. It is meaningful, because Obsidian recognizes tabs as codeblocks by default and blocks recognition of links (for instance) in the line |convertPlainHtmlNewlines| true or false | Yarle converts newline html tags to newlines, even if they are within Evernote paragraphs. |encryptionPasswords| string | list of passwords used in any notes, separated by commas |useUniqueUnknownFileNames| boolean | generates a couple of random characters at the end of the resource file names if the exact name cannot be recognised. For instance: unknown_filename-d2fd86c3.pdf |useLevenshteinForLinks| boolean| it applies the link to the note with the filename that has the closest Levenshtein distance to the text of the link |keepEvernoteLinkIfNoNoteFound| boolean | it keeps the link to the evernote note if no such note found among the converted files |convertColorsToMDHighlight| boolean | it converts colored highlights and custom font spans to standard markdown highlights |removeUnicodeCharsFromTags`| boolean | it removes the unicode characters (like éáűőú) from tags

Metadata settings can be set via the template.

In order to minimize the wrong conversion of links due to duplicated note names, you need to do the followings:

  1. Before export your notes: select all withing a notebook
  2. Create a Table of Contents note
  3. Export the notebook together with the TOC file
  4. Start yarle and convert your notes

drawing Converting notes to Tana

Yarle converts your notes to Tana Internal Format. To achieve this, the only thing you need to do differently than the default usage is to the output format as Tana Internal Format. The conversion will produce one file only called notes-in-TIF.json. It will contain all of your notes in Tana Internal Format, then you can import this file to Tana.

Limitations

Currently Yarle (or any other converter), cannot convert images into Tana Internal Format. Moreover Yarle converts Evernote tables to Tana as plain text.

Once Tana Internal Format supports these features, we are glad to fill these gaps in the conversion.

drawing Converting notes to Heptabase

Just select Heptabase as output format, and then a zip is going to be created as a result of the conversion that contains all of your notes with images, everything together, prepared to be uploaded to Heptabase.

changelog

6.16.0 (2025-01-13)

Features

6.15.2 (2024-11-15)

Bug Fixes

6.15.1 (2024-09-10)

Bug Fixes

6.15.0 (2024-09-09)

Features

6.14.8 (2024-08-20)

Bug Fixes

6.14.7 (2024-08-20)

Bug Fixes

6.14.6 (2024-08-20)

Bug Fixes

6.14.5 (2024-08-20)

Bug Fixes

6.14.4 (2024-08-20)

Bug Fixes

6.14.3 (2024-08-20)

Bug Fixes

6.14.2 (2024-08-20)

Bug Fixes

6.14.1 (2024-08-20)

Bug Fixes

  • github action node version increased (#640) (4086511)

6.14.0 (2024-08-20)

Features

6.13.0 (2024-04-16)

Features

6.12.1 (2024-04-11)

Bug Fixes

6.12.0 (2024-04-11)

Features

  • Add option to force POSIX path for link to original HTML file (28a225b), closes #610

6.11.1 (2024-04-11)

Bug Fixes

6.11.0 (2024-03-13)

Features

  • colors and custom fonts transformed to default markdown highlights (#619) (2579b48)

6.10.1 (2024-03-07)

Bug Fixes

  • storing keepEvernoteLinkIfNoNoteFound fixed (#617) (97885a9)

6.10.0 (2024-03-01)

Features

  • search and replace in title and content (#616) (5b10a27)

6.9.2 (2024-02-27)

Bug Fixes

6.9.1 (2024-02-27)

Bug Fixes

6.9.0 (2024-02-27)

Features

6.8.0 (2024-02-27)

Features

6.7.0 (2024-02-27)

Features

  • sanitized notebooks with interenex links (#602) (3aea389)

6.6.1 (2024-02-18)

Bug Fixes

6.6.0 (2024-02-17)

Features

  • storing font colors as inline styles in span (#598) (25cad1b)

6.5.3 (2024-02-17)

Bug Fixes

6.5.2 (2024-01-21)

Bug Fixes

  • Evernote GUID and Note Link template placeholders in LogSeqMD (fb8cb07)

6.5.1 (2024-01-20)

Bug Fixes

  • Invalid note links breaking other links during replacement (#585) (38baa37), closes #487 #584

6.5.0 (2024-01-15)

Features

  • evernote guid és evernote link in templates implemented (#583) (49088b7)

6.4.1 (2024-01-13)

Bug Fixes

6.4.0 (2024-01-13)

Features

6.3.2 (2024-01-11)

Bug Fixes

6.3.1 (2024-01-10)

Bug Fixes

6.3.0 (2024-01-10)

Features

6.2.0 (2024-01-08)

Features

  • invalid char regexp in tags implemented (#575) (51ac0b9)

6.1.0 (2024-01-06)

Features

6.0.9 (2024-01-06)

Bug Fixes

6.0.8 (2024-01-06)

Bug Fixes

  • escaping pipe if the link is Obsidian-style (#569) (bb4df9c)

6.0.7 (2024-01-06)

Bug Fixes

  • embedded file generalization fixed - alt used (#571) (9930d6e)

6.0.6 (2024-01-04)

Bug Fixes

  • handling base64 images as href in links (#567) (570ab36)

6.0.5 (2024-01-01)

Bug Fixes

6.0.4 (2023-12-31)

Bug Fixes

6.0.3 (2023-12-31)

Bug Fixes

  • template made comliant with Obsidian 1.5.3 (#562) (1bf22b4)

6.0.2 (2023-12-29)

Bug Fixes

6.0.1 (2023-12-29)

Bug Fixes

  • handling links that have internalHtml but no href (#555) (e95a286)

6.0.0 (2023-12-28)

  • configs saved with timestamps (#553) (a515fb2), closes #553

BREAKING CHANGES

  • configs are saved as plain text, no base64 encoding

5.9.0 (2023-12-26)

Features

5.8.3 (2023-12-23)

Bug Fixes

  • utimes version update to work with Mac Silicon (#547) (2651f27)

5.8.2 (2023-10-03)

Bug Fixes

5.8.1 (2023-09-25)

Bug Fixes

5.8.0 (2023-09-23)

Features

  • levenshtein distanced links implemented (#532) (e9d5080)

5.7.0 (2023-09-18)

Features

  • conversion of busycal events to standard links added (#528) (c0dace3)

5.6.0 (2023-09-17)

Features

5.5.8 (2023-09-16)

Bug Fixes

5.5.7 (2023-09-16)

Bug Fixes

  • moddates updated during applylinks, implemented and tested (#523) (40ea8a0)

5.5.6 (2023-09-11)

Bug Fixes

  • support of evernote links fine tuned (#520) (e450c07)

5.5.5 (2023-09-11)

Bug Fixes

5.5.4 (2023-09-07)

Bug Fixes

5.5.3 (2023-09-06)

Bug Fixes

5.5.2 (2023-09-04)

Bug Fixes

5.5.1 (2023-08-31)

Bug Fixes

5.5.0 (2023-08-25)

Features

5.4.0 (2023-08-23)

Features

5.3.2 (2023-08-22)

Bug Fixes

5.3.1 (2023-08-02)

Bug Fixes

5.3.0 (2023-08-02)

Features

5.2.1 (2023-07-14)

Bug Fixes

5.2.0 (2023-05-31)

Features

5.1.2 (2023-05-18)

Bug Fixes

5.1.1 (2023-05-18)

Bug Fixes

5.1.0 (2023-05-14)

Features

5.0.12 (2023-05-09)

Bug Fixes

5.0.11 (2023-03-18)

Bug Fixes

  • truncate if the filepath exceeds the OS limit (#377) (9510fac)

5.0.10 (2023-03-13)

Bug Fixes

  • default template is in valid YAML format (#460) (f9b313c)

5.0.9 (2023-03-06)

Bug Fixes

5.0.8 (2023-02-28)

Bug Fixes

  • handling enex filenames containing multiple dots (#456) (61a4275)

5.0.7 (2023-02-25)

Bug Fixes

  • prevent updating outputFormat to reinit enex or outputDir (#453) (79055a8)

5.0.6 (2023-02-21)

Bug Fixes

5.0.4 (2023-02-01)

Bug Fixes

  • multiple logseg journal notes appended (#445) (16382db)

5.0.3 (2023-02-01)

Bug Fixes

  • create resource folder for Logseq, no matter what (#443) (33e823a)

5.0.2 (2023-01-24)

Bug Fixes

5.0.1 (2023-01-24)

Bug Fixes

  • copyright set, example enex copied to dist, icons (#439) (d3f75e2)

4.16.0 (2023-01-22)

Features

4.15.2 (2023-01-17)

Bug Fixes

4.15.1 (2022-12-28)

Bug Fixes

4.15.0 (2022-12-03)

Features

  • title normalized to do not break links (#427) (f9ccf4c)

4.14.0 (2022-12-03)

Features

4.13.0 (2022-11-24)

Features

4.12.1 (2022-11-24)

Bug Fixes

  • replacing two spaces by a single tab (#421) (ade1cf8)

4.12.0 (2022-10-30)

Features

4.11.0 (2022-09-17)

Features

4.10.3 (2022-09-14)

Bug Fixes

  • timestamp added instead of human readable datetime (#408) (434500a)

4.10.2 (2022-07-12)

Bug Fixes

4.10.1 (2022-06-06)

Bug Fixes

4.10.0 (2022-05-26)

Features

4.9.13 (2022-05-21)

Bug Fixes

  • remove dependency from yml (30d341e)

4.9.12 (2022-05-21)

Bug Fixes

4.9.11 (2022-05-21)

Bug Fixes

4.9.10 (2022-05-21)

Bug Fixes

4.9.9 (2022-05-21)

Bug Fixes

4.9.8 (2022-05-21)

Bug Fixes

4.9.7 (2022-05-18)

Bug Fixes

4.9.6 (2022-05-18)

Bug Fixes

4.9.5 (2022-05-18)

Bug Fixes

4.9.4 (2022-05-18)

Bug Fixes

  • semantic-release order changed (4570fde)

4.9.3 (2022-05-18)

Bug Fixes

  • semantic-release extended by os-dep package creation (6724836)

4.9.2 (2022-05-18)

Bug Fixes

4.9.1 (2022-05-17)

Bug Fixes

4.9.0 (2022-05-17)

Bug Fixes

  • semantic-release action (d70faa7)

Features