Importing notes from OneNote to Notion is not only hard, but also really painful.
I tried several methods and went through it the hard way, therefore I’m writing this to doc to keep a record on how I get things to work.
💡
TL;DR this is what you need to do to import things to Notion from OneNote and minimize the work we need to do manually. Also you will need a Windows device to complete one of the steps.
flowchart LR
A("OneNote")
B("Evernote")
C("Joplin")
D("Markdown Files")
E("Notion")
A --> B -->C --> D --> E
If you only have a small amount of notes that need to be imported to Notion, then maybe you can achieve it by doing OneNote > Evernote > Notion, see here for why and details.
💡
Known Limitations:
This is not a perfect way of migrating notes, some of the formatting will be messed up and you will have to manually fix it, but if you have a large amount of notes that needs to be transferred, this is still a faster way.
Below are some of the stuff that wont be carried over, and I didn’t find any better way to transfer them:
> Drawings made in OneNote will be messed up
> Special Formatting like or and other math equations will be gone
> Blocks that are arranged horizontally in OneNote will be transferred to vertically
OneNote to Evernote
💡
Both of the software that we are using in this step are only supported on Windows devices, if you don’t have one you can try to use Virtual Machines like VirtualBox or VMware as an alternative, they both offers free versions for personal use.
Once both of the software are installed, open OneNote 2016 and login to your account, then open all the notebooks that you want to import to Evernote.
Next, open Evernote Legacy, select File from Toolbar and go to Import > Microsoft OneNote
A pop-up will show up asking you to select the notebook and the sections that you want to import. If you have multiple notebook, then you will have to go through this step multiple times.
Once you click OK, the import will begin and you should see your notes in Evernote once it’s done.
Note, this is the only step that requires a Windows machines
Evernote to Joplin
The reason we don’t import note from Evernote directly to Notion by using the Notion Built-in Feature is because it won’t work when you have a lot of notes that need to be transferred.
If you only have a small amount of notes then it might work for you.
Even if you have a lot of notes, I will say give it a try cause it only takes a few clicks and won’t hurt at all. If Notion fixed this feature then it will save you tons on time.
The main reason we are transferring notes from Evernote to Joplin is to transfer the format of the notes from HTML to Markdown files, so that we can import the Markdown files in bulk later. There are several tools out there that can do this, but Joplin is the easiest and fastest one I found.
This step can be done fairly easy since Joplin has a pretty good importing tool.
Export notes from Evernote as ENEX files: Evernote has a decent instruction on how to do this here, simply follow that and save all the files you need as ENEX files.
Install Joplin application on your machine, both Windows and Mac version should work. You can download it from here: https://joplinapp.org/download/
If you don’t have a Joplin account, you will have to create one.
Import the notes to Joplin: In the desktop application you just installed, open File > Import > ENEX and select your files.
You should see the notes from Evernote got imported into a new notebook.
Joplin to Markdown
In Joplin, go to File on the Menu Bar and select Export all > MD - Markdown
The files will be exported to your selected folder. There will be multiple folders, each notebook will have it’s own folder with all the Markdown format of notes in there. the _resources folder will contains all the images or files that are in the notes.
One of the issues I encountered is that all the imported notes are named as Unnamed Note, therefore when they are exported as Markdown, all the file names are Unnamed Note.md too. I use the following python script to rename all the files to their title.
Remember to change the file path of directory and new_directory in the code to corresponding path.
import os
from os import path
directory = '/Users/username/Downloads/notes_md/'
new_directory = '/Users/username/Downloads/notes_md_new/'
for note in os.scandir(directory):
if note.is_file():
with open(note) as f:
lines = f.read()
first = lines.split('\n', 1)[0]
new_file_name = first+'.md'
print(note.name+' -> '+new_file_name)
os.rename(note, directory+new_file_name)
Markdown to Notion
Notion does have built-in function to import Markdown files, but if you import the Markdown files this way, the images and files in the _resources folder will not be imported, and it only supports importing Markdown files one at a time. If you don’t have any images/embed files that need to be import, and you only have a small amount of notes that need to be import, the you can import it this way.
Otherwise you can use the md2notion tool to import all the notes at once.
Before we start, you will need to have Python and pip installed. Instruction for these can be easily found online so I’m gonna skip the instruction for that.
Once they are installed, you can install the md2notion by running pip install md2notion
Before we start importing, there are a few things we need:
Notion Token: Notion Token is the authentication that will allow md2notion tool to access and import notes to our Notion account.
The token can be found by opening Notion.so and login to your account. Then click on the lock icon next to the URL, and select Cookies
Locate www.notion.so and expand Cookies under it. You should find the token_v2 item in there. The content of token_v2 is the one we need later, you can double click on it and copy it.
Notion Page URL: the URL of the Notion page that we want to import our notes.
You can find it by open the Notion page in browser, the URL is the one we need.
Once we have these two items, we can proceed the import by running the following command. Remember to first change the directory to the folder where the Markdown files are, and replace the [token_v2] and [notion_page_url] to the two items we retrieved previously.
for FILE in *; do python3 -m md2notion --html-img [token_v2] [notion_page_url] $FILE; done
It is best that you go though the notes and make sure everything is imported correctly afterward. I did ran into several cases where formatting and content are not imported correctly.