Gabriel Leuenberger1 downloadsTurn your notes into Google Keep: a board of coloured cards with pins, labels, archive and reminders, and Keep's checklists, where ticked items move down and items can be dragged and indented.
It's just like Google Keep, but in Obsidian, with your notes as plain Markdown files that you own.
The board of coloured cards, pins, labels, the archive, reminders, "Take a note…", and Keep's checklists, where ticked items drop to the bottom and sub-items follow their parent. If you know Keep, you already know how to use it.
New to Obsidian and only ever used Keep? This plugin is made for you. Install it, import your Keep notes, and you're on a board that looks and works like the one you're used to. Nothing to learn first; the rest of Obsidian is there whenever you want it.


| In Google Keep | In Full Keep Mode |
|---|---|
| Board of cards, "Pinned" and "Others" | ✓ two columns on phones, pinned first |
| Note colours | ✓ Keep's colours, light and dark |
| Pin, archive (with Undo), reminders | ✓ on the card and in the note |
| Labels, side menu (☰), "Edit labels" | ✓ |
| Search bar, "Take a note…", "New list" | ✓ |
| Drag cards to reorder, tick items on a card | ✓ |
| Checklists: ticked items move down, sub-items, two levels | ✓ Keep's exact rules |
| Drag items, swipe sideways to indent (phone) | ✓ |
| Note opens over the board (full screen on phones) | ✓ |
| Your notes from Keep | ✓ imported with their order, colours, labels and sub-items |

- [ ];
Backspace and Delete join items like in Keep.| You do | Result |
|---|---|
| Drag an item elsewhere | It moves with its sub-items; dropped below an item with sub-items, it lands after them |
| Drag a sub-item out to the top level, in place | The sub-items below it become its own |
| Drag right, swipe right or press Tab | Indented under the item above, sub-items included |
Run Import from Google Keep (or use the button in the plugin's settings) and choose an export of your notes. There are two ways to get one:
Keep folder. You get
your notes, ticks, colours, pins, archive, labels and images, but not the
order of your notes (newest come first) and not checklist sub-items (they
come in flat).pip install gkeepapi gpsoauth requeststools/keep_export.py.oauth_token.python keep_export.py [email protected] and paste the code when asked.
It's typed invisibly, used once to sign in, and never saved.keep-export
folder the script made.The script only reads from Keep. Google has no official way for apps to read Keep, so it uses gkeepapi, the unofficial library other Keep tools use too.
Either way, notes in Keep's trash are left out, and reminders aren't in Google's exports. Import on a computer; the notes then reach your phone like any others.
To install by hand, put main.js, manifest.json and styles.css from the
latest release into
<your vault>/.obsidian/plugins/full-keep-mode/.
Good to know: reminders show up while Obsidian is open, and missed ones appear when you open it. Obsidian doesn't let plugins schedule notifications, so a reminder can't reach your phone while Obsidian is closed.
Every feature can be turned off in the plugin's settings (all on by default;
checklists have two levels, like Keep). To keep the checklist features out of
one note, give it the property full-keep-mode: false.
Commands: Take a note, Take a note as a checklist, Labels of this note, Show or hide checkboxes in this note, Open the labels side menu, Create a Keep board, Import from Google Keep, and Move ticked items down in this note.
Everything is plain Markdown: ordinary - [ ] / - [x] lists, and
properties in each note: keep_pinned, keep_color, keep_order (the place
on the board), keep_archived, keep_reminder, keep_title and tags (the
labels). The board is an Obsidian Bases file (.base) with views of type
keep-board.
There's no build step: main.js is the plugin as it ships. The tests in
tests/live_test.py run against a real Obsidian, with real mouse and key
events:
# Start Obsidian with its debugging port (close it first). Windows:
"%LOCALAPPDATA%\Programs\Obsidian\Obsidian.exe" --remote-debugging-port=9222
# macOS:
open -a Obsidian --args --remote-debugging-port=9222
pip install websocket-client pillow
python tests/live_test.py # the tests (keep the Obsidian window visible)
python tests/record_board_demo.py # re-records docs/board.gif (--dark: board-dark.gif)
python tests/record_demo.py # re-records docs/demo.gif
If Full Keep Mode made your move from Keep easier, you can buy me a coffee on Ko-fi or star this repo. Thank you!