Diexar Labs1k downloadsA private, open-source Google Keep alternative: a Google Keep-style quick-capture card grid with a companion Android app and Chrome web clipper. Offline, no account, plain Markdown.
Google Keep, on your own files.
JotDrop is a free, open-source Google Keep alternative for Obsidian. It's a trio: the plugin (the card grid in your vault), a companion Android app (share-sheet capture, OCR, voice memos), and a Chrome web clipper. Sync them with Syncthing and you have Google Keep, fully offline, fully yours.
For the full Google Keep experience, install all three. Install the plugin from Obsidian Community plugins, download the Android APK or join the Google Play test, and install the Web Clipper from the Chrome Web Store - one click, automatic updates, works without any configuration.
The Google Play test is live! We need at least 12 Android testers. Keep using JotDrop normally, remain opted in for 14 consecutive days, and share any bugs or confusing behavior. No scripted checklist or daily chores. Joining is voluntary, and the GitHub APK remains available.
The GitHub APK works without any registration; the Play test is an optional invitation. Use your existing Google account from Play: no new account or signup form is needed, and you do not have to join a Google Group. Sending the request email does not grant access automatically; wait for our confirmation.
Already have Play access? Skip the email and go straight to step 2.
Existing group-based testers: keep your current Play opt-in. While Google processes the access-method change, do not leave the old group or opt out. We have copied the existing group accounts into the email list; no new access request is needed. The group can remain an optional discussion channel after migration.
Already using the GitHub APK? Read this before uninstalling: Play uses a different signing key and cannot update that APK in place. First confirm that Play offers the test to your account/device. Back up your vault and record its folder, note/attachment folder settings and other app preferences. Only then uninstall the GitHub JotDrop app, install from Play and select the same vault and folder settings. App preferences reset; external Markdown files are separate from the app, but keep a verified backup before switching. If Play says the test is unavailable, do not uninstall: check the Google account, allow time for access to propagate, then retry or ask for help.
Feedback/help: issue #10. Please share this invitation with another interested Android user. GitHub/Obtainium installs and extra phones using the same account do not count as additional Play testers.
Manual access handling: verify the requested Google account address, then edit JotDrop Play testers in the existing Alpha track's Testers tab. Add the address without replacing existing entries. Before sending a confirmation, verify that the email-list configuration is published and the account is included. No automated inbox processing or reply service is configured.
Reply only after access is available:
Your Google Play account has been added to the JotDrop test. Open https://play.google.com/apps/testing/com.diexar.keepcapture with that account, choose Become a tester, then install from Play. No Google Group is needed. Please stay opted in for 14 consecutive days. If you use the GitHub APK, confirm Play access and back up your vault before switching: https://github.com/Diexar-Labs/jotdrop/issues/10.
JotDrop is a private, open-source Google Keep alternative. Google Keep is great - until you remember Google reads everything you put in there. JotDrop gives you the same fast, friction-free "dump a thought" experience, but every note is a plain Markdown file in your own Obsidian vault. No JotDrop cloud account, no ads, no lock-in. Sync between phone and laptop with Syncthing (free) or any folder-sync you already use. Android OCR processes your images locally; its ML Kit SDK sends technical diagnostics to Google, as explained in the Android privacy policy.
.md files with YAML frontmatter. They live in your vault. You can edit them anywhere - Obsidian, VS Code, Vim, mobile.
Obsidian desktop - Keep-style card grid
Quick-note editor - colors, tags, checklist, pin |
Android - home screen |
.m4a) and the Obsidian plugin (.webm/opus); a confirmation dialog asks before saving, audio lands as a card with an equalizer-banner thumbnail- [ ] checklists with smart toolbar toggle![[image.jpg]]) shown as thumbnails on the card![[memo.m4a]]): inline player in both the Android editor and the Obsidian edit modal; tap a voice-memo card to play it backobsidian:// protocol and creates the card; no token or port setup needed<date>-<slug>.md with YAML frontmatter (color, tags, archived, pinned)TL;DR: install the plugin from Obsidian, use the versioned Android APK link below, and load the Chrome extension from this repository. No build tools needed.
JotDrop is a trio. Each part works on its own, but you only get the full Google Keep experience when all three are installed:
Install JotDrop Web Clipper from the Chrome Web Store. That's the recommended route: one-click install from the store, automatic updates, and your existing item/users are preserved.
Easiest (via Community plugins, recommended):
Manual install (for offline / pre-release versions):
manifest.json, main.js, and styles.css.<your-vault>/.obsidian/plugins/jotdrop/ (create the folder if it doesn't exist).jotdrop.apk for Android 0.28.12.Signing note: GitHub APKs currently use the repository's published compatibility key so they can update existing sideloaded installations. Because that key is public, it is not proof of authenticity. Download APKs only from the versioned
Diexar-Labs/jotdroprelease URL above and verify the linked Actions build.
Install Syncthing on phone + laptop, point both at your vault folder. Within 30 seconds of capturing on your phone, the note shows up in Obsidian. That's the entire setup.
Recommended Syncthing setting: enable File Versioning on the shared folder (Simple Versioning is fine), on both devices. Deleted and overwritten files are kept in
.stversions/so an accidental delete (or a sync race, see Known issues) is recoverable instead of permanent.
Part three of the trio - this is what replaces Keep's browser extension.
Recommended: install from the Chrome Web Store. One click, automatic updates, no configuration needed.
Web Clipper popup - title, selection, tags, color, pin, one-click save
The popup up close |
Optional Background connection - saving runs silently |
Zero-config quick start:
That's the whole setup. Saving works through the local obsidian:// protocol, so no token or port is required.
Optional: Background connection (after the default path works): pair the clipper with the plugin's clip server once and saves run silently in the background without bringing Obsidian to the foreground. In Obsidian: Settings → JotDrop → Web clipper → enable the clip server and copy the token; in the extension: right-click the icon → Background connection → paste the token → Save and test connection. The server binds only to 127.0.0.1 and never exposes itself on the network. If the connection fails, the clipper automatically falls back to the direct URI - a clip is never lost.
Manual ZIP installation (fallback):
chrome://extensions in Chrome / Edge / Brave.manifest.json.Manual updates: replace the files in the same permanent folder with a newer ZIP's contents and click Reload on the extension card in chrome://extensions. Store installations update automatically.
Troubleshooting:
| Problem | Fix |
|---|---|
| Obsidian does not open on Save | Open Obsidian desktop at least once so the obsidian:// protocol is registered, then save again. |
| Background connection test fails | Obsidian desktop, the JotDrop plugin, and its clip server must be running; re-copy the token from the plugin settings. |
| Wrong port or token | Open Background connection → Advanced, correct the port (default 27124), and paste the token again. |
| "Selection too long for direct mode" | Shorten the selected text, or enable the Background connection (it supports much larger quotes). |
Manual installs don't auto-update, so here's how to get notified of new releases:
Diexar-Labs/jotdrop as a beta plugin; BRAT watches this repo's releases and updates the plugin for you.https://github.com/Diexar-Labs/jotdrop, select only releases tagged v*, and select the jotdrop.apk asset.JotDrop is intentionally simple plumbing:
<vault>/Mini Notes/ (folder configurable)..attachments inside the notes folder; set an explicit folder (e.g. assets) in the plugin settings and the Android app. Set the same value on both devices. Changing the folder only affects new captures; existing files are not moved, and JotDrop still finds them via the legacy location.---
color: amber
tags: [idea, work]
archived: false
pinned: false
---
This is why JotDrop needs no server, no account, no API key - and why anything that can write to the same folder (e.g. a curl script, a Shortcuts automation) can capture into it.
If you bulk-delete many notes in the plugin while another device (phone or laptop) running Syncthing is offline, the deletes may be "resurrected" when that peer reconnects: the offline peer still has those files with valid version metadata, and on reconnect Syncthing can side with the peer and push the files back to the device that deleted them.
This is Syncthing reconciliation behavior, not specific to JotDrop; single deletes you do while everything is online propagate fine. It's the combination of bulk delete and an offline peer that triggers it. Mitigations:
.stversions/ to delete from properly.UI in English (default) and Dutch. Skeletons exist for Spanish, German, French, Italian - empty files are present in src/i18n.ts and android/app/src/main/res/values-*/. PRs with translations very welcome - see Contributing.
This is a hobby project I share publicly. PRs welcome for:
src/i18n.ts and the matching android/.../values-*/strings.xmlFor larger ideas, open an issue first to chat about it. No CLA, no commit-message gatekeeping; just keep it tidy.
Open source, MIT-licensed, no premium tiers. If JotDrop saves you time and you feel like saying thanks:
No subscriptions, no obligations, no DMs. Totally optional.
If you build from source, always use the optimized release APK. Debug APK generation and installation are disabled because Compose debug builds have unusable scroll performance.
Plugin:
npm install
npm run build
# main.js + manifest.json + styles.css end up in repo root
Android:
npm run android:release
# APK at android/app/build/outputs/apk/release/app-release.apk
npm run android:verify -- android/app/build/outputs/apk/release/app-release.apk
npm run android:install -- android/app/build/outputs/apk/release/app-release.apk
Before merging a port, use npm run android:test-release for the same R8
optimized release variant with the feature-branch base check. It is for local
testing only; production release builds still require npm run android:release.
The release command requires a clean checkout at live origin/main, JDK 17,
and Android SDK 34. The committed Gradle wrapper pins Gradle 8.7.
compileDebugKotlin is available for CI compile validation, but it does not
produce an installable APK.
Built by Diexar Labs. Uses Obsidian's plugin API, Jetpack Compose, and Google's ML Kit Text Recognition.
Inspired by Google Keep (the good parts) and by the Obsidian community's belief that your notes belong to you.
MIT - do whatever you want with it.