[HOWTO] Send all your Google Keep notes to Nextcloud Notes

Use /e/ Cloud to store notes instead of Google Keep.


  • I’ll give you some script to transfer your data easily from Google Keep to /e/ Cloud. Use it at your own risk.
  • Also, this isn’t some out-of-the-box script that does everything for you, yet. It only works on unix systems (but you can try executing it from Windows Subsystem for Linux, it should work), as I only began working on it yesterday evening.
  • To developers: you are free to copy, modify, and redistribute it as you wish (as long as you never sell it… Well, actually, there is nothing to sell, so…)!


  • Go to Google Takeout and download your data from Google Keep (actually, you should download all of your data, as the script can find any picture in any folder recursively). It will take some time. Like days, or weeks. It took about a week for my more or less 70 Go of data.
  • Since Google doesn’t like you getting back your data, it will give you a lot of ZIPs to download with your data scattered in them. Unzip them all in a clean folder. ZIP tools usually know how to get back original folder structure, even from multiple ZIPs.
  • Download and install NodeJS
  • Download my send-notes-to-nextcloud.js script and put it in the Google Keep folder
  • Optional: at the end of the process if you want to check how many files have been transfered, execute the following command: node send-notes-to-nextcloud.js </e/ email> <password> --check=true

How does it work?

  • The script uses your /e/ email and your /e/ password (but doesn’t store, sell or do anything else with them, you can check the source code) and the /e/ Cloud API to get your existing Nextcloud Notes.
  • The /e/ Cloud API version needs to have the title of the note also as the first line of the note, so the script does that for you to keep your Google Keep note title if possible. Otherwise, it tries to compute a title with the three first words of the original content note.
  • Nextcloud Notes uses markdown to format notes. So when possible, the script translate JSON item list from your Google Keep note containing a list to a markdown list with checkboxes (keeping your original checked items)
  • The script translates your pinned Google Keep notes to Nextcloud Notes Favorites category (they will appear with a golden star on your Nextcloud apps)
  • If you enable the --join-labels=true option, the script will take advantage of the Nextcloud folder structure, and store your note under the label1/label2/.../labelX sub-directory (for example, if you have a Google Keep note with a list of label containing those labels in this order)
  • If you enable the --replace=true option, the script will update the processed note if it finds a note in your /e/ Notes with the exact same title
  • According to the quantity of notes the script has to process, this may be long to do. To avoid /e/ Cloud API limitations, it is throttled to do only a request every 2 seconds


  1. Execute the following command from your Google Keep folder: node send-notes-to-nextcloud.js </e/ email> <password> --replace=[true|false] --join-labels=[true|false]
    The --replace option is useful if you already began to copy notes manually, and want to take advantage of the auto markdown styling and the auto title filling of my script
    The --join-labels option is useful to tell my script how you want to categorize your notes.
    Please read the “How does it work” section to understand how my script process your notes!
  2. Enjoy your notes on Nextcloud!


  • There may be failures during the transfer because of /e/ Cloud API limitations
  • Feel free to tell me what issue you are facing by replying to this post, and I will try to help you!


Hey @Manoj (and sorry for tagging you again…)!
Do you know if I could have any documentation on this?
Also, I found out that /e/ Cloud uses API v0.2, and that Nextcloud already is under API v1.1…
Is there a way I can create an issue about that? Or maybe a way I can help?

Thanks a lot for your work helping everyone on this forum!

Hi @Fluf you can raise an issue here and we can see how it can be taken forward.

1 Like