Homepage    |    GitHub    |    API    |    FAQ

Importing Laverna into Joplin

I've been using Laverna for a few years ago since I wanted a simple markdown notes program with encryption. I'd like to finally switch to another program and Joplin seems the best in keeping encryption and giving me control of my data. However, I haven't found an easy way to import my past notes to Joplin.

Laverna's export names files with random character strings and splits metadata (title, notebook, etc) into a JSON file and the main note into a markdown file. I tried importing the data to Joplin as a "MD - Markdown (Directory)", but of course then Joplin doesn't know to use the JSON information and I just get a bunch of notes with random character strings for the titles.

I assume I will have to write some code to transform my notes into a format Joplin works better with like JEX, RAW, or ENEX. Is there documentation for the formats or some existing tool for converting files I'm probably overlooking?

I think the easiest way is to create a script that parses your Laverna files, then use the data API to import the notes into Joplin: Joplin Data API | Joplin

Maybe also check if there's already an existing Laverna to ENEX conversion script, as it means you could then just import the ENEX files.

I would not convert to another format and then import.
Think it's easy to just create new notes / tags and notebooks via Rest API.


I was looking at the RAW export of the default Joplin notes and see the metadata is stored as tags at the end of the MD files. Since my notes are really simple (basically all markdown and few uses of tags) it may be pretty straightforward to parse and update the files that way.

Would you still recommend using the API over attempting a RAW conversion though?

It seems there are lots of ENEX to ___ conversions out there, but not the other way around.

Both solutions are fine but you'll probably find that using the API is easier, especially since it's well documented.

Thanks for the quick replies. I'll spend some more time looking at the API documentation before moving forward.

Just to close the loop for anyone who may find this in the future, I ended up using Annyong / joplin-api · GitLab to make things easier to work with the Joplin API in Python.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.