User manual for the encrypted note-taking Android app.
Secret Notes is an encrypted note-taking app for Android. Notes never leave your device unless you explicitly send them — there is no account, no cloud account requirement, and no tracking.
Everything you need for keeping notes private and organised:
Tap the + button on the bottom-right of the notes list to create a new note. Pick the note type from the dialog. Enter a title (required, must be unique), pick or create a folder, and start writing. Tap the back arrow or the save action to persist. Tap any note in the list to view it, then the pencil icon to edit.
The first time you open the app, a 5-page walkthrough introduces the core ideas: encryption, note types, organisation, sync, and getting started. You can skip it on any page; it does not show again unless you reset the app.
On first launch the app also creates four default categories: Private, Work, Ideas, Passwords (in your chosen language). You can rename, delete, or add to these freely.
Tap +. A type picker appears. Tap the type you want.
A free-form text field. Use the Mic trailing icon for voice dictation (system speech recogniser). Use the Password icon to generate a random password and insert it at the cursor. The formatting toolbar under the field starts with Undo/Redo buttons that step back and forward through your edits — text and formatting together (rapid typing counts as one step).
Two-level hierarchical to-do list. Tap + on a parent to add a child. Tap the ⇅ toggle next to undo/redo to show drag handles and reorder. The note card in the list shows a progress bar with a done/total count; in the detail view a Hide completed switch (shown once anything is checked) filters finished items out.
Auto-check behaviour:
Open and completed items are shown in two collapsible sections.
A small editable table. Add columns from the toolbar; tap a cell to edit. Sums and averages are not built in — this is a structured data store, not a calculation engine.
Standard CommonMark with GitHub-flavoured extensions (task lists, tables, fenced code, strikethrough). The preview tab renders live. A toolbar inserts headings, bold, italic, lists, links and code.
Tap the record button to capture audio (AAC .m4a, 128 kbps, 44.1 kHz) directly in the note. Each recording becomes an attachment with inline play / pause / seek controls. The note's text field is used as a transcript or notes area.
From any audio recording, the Subject icon runs on-device speech-to-text (Android 13+) and appends the result to the text field.
Like audio, but for video. Record clips in-app or attach existing video files. Tap to play in your system video player. The note's text field carries a description or notes.
Tally — a simple tap counter with +, −, and reset buttons. Stores a single integer; use it for reps, day counts, inventory, etc. A free feature.
Open a note from the list, then tap the pencil icon. The Update screen has collapsible sections (Categories, Dates, Content, Images, Rating, Folder); their state is remembered between sessions. The Save button persists; the back arrow prompts if you have unsaved changes (unless Automatic save is on in Settings, in which case changes save on back).
Pin: tap the pin icon in the detail view to keep a note at the top of the list (independent of sort order).
Color: tap the colour swatch to set a per-note background colour, used in the list and detail views.
Rating: tap the star row (0–5). Useful for ranking ideas, books, or anything sortable.
Set a date and time. The system fires a notification at that time. Once a reminder is set, a Repeat picker appears: Off, Daily, Weekly, Monthly, or Yearly — recurring reminders re-schedule themselves after each firing, and all reminders are re-registered after a device reboot. The notification offers snooze actions ("In 10 min" / "In 1 hour") that re-fire it later without touching a recurring series. Per-category lock-timeout overrides apply if the reminder unlocks the app.
The Reminders overview (drawer entry, or "All reminders" in the Home tab's due-today section) lists every upcoming reminder sorted by due time — overdue ones highlighted, recurring ones marked with their interval. Tapping an entry opens the note.
Detail view → ⋮ menu → Pin to notification bar. The note stays in the notification area as a persistent, silent notification showing its title and content (checklists as [x]/[ ] lines, spreadsheets as rows) — pull down the status bar to read it without opening the app; tapping it opens the note (app lock applies as usual). The notification updates automatically when you edit the note, returns after a reboot, and disappears when the note is trashed or archived. Unpin via the same menu.
Lock screen: by default Android also shows the content there. If you enable "show sensitive content only when unlocked" in your system's lock-screen notification settings, only a "Pinned note" placeholder is shown while locked. Silent notifications must be allowed on the lock screen to appear there at all.
Many-to-many tags. One note can belong to several categories. From the drawer or the note picker you can manage categories — rename, soft-delete, archive, or set an optional per-category lock timeout. Tap the ⇅ button in the top bar to show a drag handle on each category and reorder them; your custom order replaces the alphabetical default and applies wherever categories appear (filter chips, pickers). Reordering is disabled while the filter box is in use.
Hierarchical, single-parent. A note belongs to at most one folder. The folder picker has a New folder row at the top so you can create one inline while assigning. Folder counts are transitive: a parent folder shows the total of its own notes plus everything in its descendants. Folders can be reordered the same way — tap the ⇅ button in the top bar to show the drag handles — but reordering is scoped to siblings: you can reorder folders within the same parent, not move one out of its parent. Disabled while filtering.
Attach images, PDFs, audio, video, or any other file. Images preview inline; other types open in your system viewer (PDF reader, video player, etc.). Attachments travel with the note when you sync, export, or back up.
The list screen has a search field that filters across titles, content, checklist items, and spreadsheet cells and column names. Filter chips above the list let you narrow by category, folder, or note type. Search terms are highlighted in matching notes.
Tap the sort icon to choose the field (name, rating, category, date, or Custom) and direction (ascending / descending). Pinned notes always come first — except in Custom order, where you arrange notes by hand: tap the ⇅ button in the top bar to show a drag handle on each note (it switches sorting to Custom automatically; the list must be unfiltered). Your manual order is absolute, so any note, pinned or not, can sit anywhere.
Each save snapshots the previous version (title, text, items, categories, color, rating, type, timestamp). From the detail view, the history icon shows a chronological list. Tap a version to preview; restore replaces the current note.
The default retention is 50 versions per note; configurable in Settings.
Deleting a note moves it to Trash. From Trash you can restore individually or empty the trash to delete permanently. Archive is similar but for notes you want to keep out of the main list without deleting — restore to bring them back.
Long-press a note to enter selection mode. Then bulk-move to folder, bulk-categorise, bulk-delete, or bulk-archive.
Five built-in templates ship with the app:
When creating a new note, tap Use Template to pick one. From any note's overflow menu, Save as Template stores the current note as a custom template.
Open a note for editing. In the Content section, the type dropdown lets you change the type. A confirmation dialog asks before converting, so an accidental tap will not reformat your data.
What happens to your content:
[x] or - [x] are pre-checked; 4-space (or -) indent makes children.[x]/[ ] markers (or - [x]/- [ ] for Markdown), children indented.;) as separator; first line = column headers. | .Settings → Security → Enable PIN protection. Choose a 4+ digit code. The PIN is stored as a salted PBKDF2-HMAC-SHA256 hash (120,000 iterations); older hashes are upgraded transparently on the next successful unlock. PIN and biometric are mutually exclusive — enabling one disables the other.
Settings → Security → Enable biometric protection. Uses the Android BiometricPrompt API (fingerprint or face, depending on what your device supports).
Settings → Auto-Lock. Choose Immediate, 1 minute, 5 minutes, 15 minutes, or Never. Categories can override this with their own timeout — e.g. Passwords might re-lock immediately while regular notes have 5 minutes.
Settings → Auto-Lock section → Screenshot protection. When enabled, the system blocks screenshots and screen recording of the app and blanks it in the recents view (FLAG_SECURE). Off by default.
Every note's title, content, and metadata is encrypted with AES-256-GCM. Wire format: v1:<b64(iv)>:<b64(ciphertext+tag)> — 12-byte random nonce per field, 16-byte authentication tag, 256-bit data encryption key (DEK). The DEK is wrapped in an Android Keystore key, so it never leaves the secure hardware-backed key store in plaintext.
Help → Encryption status shows the live algorithm, key storage location, encrypted-notes counter, lock state, and whether a backup password is set.
Data screen → Automatic Backup. Choose Off, Daily, or Weekly. Backups run via Android's WorkManager when the device is charging or otherwise idle — Android may delay them if the device is in heavy use.
Each backup is a .zip in the app's private storage, containing the SQLite database (with WAL flushed) and all attachment files.
Data screen → Maximum number of backups: 3 / 5 / 10 / 20 / 50 / Unlimited (default 5). After each successful backup, the oldest zips beyond the limit are deleted automatically. Lowering the limit prunes immediately.
Data screen → Show Backups. The dialog lists all local backups by date. Tap one to restore (replaces all current data and restarts the app), or use the trash icon to delete a backup.
Data screen → Backup Password. If set, automatic backups also include a password-wrapped copy of the DEK, so you can recover encrypted notes on a new install or new device by entering the same password during restore.
Sync uses Google Nearby Connections — devices on the same Wi-Fi network advertise and pair directly. No cloud, no account, no Google sign-in. Encrypted manifests and payloads are exchanged.
The protocol uses delta sync: each side sends a manifest of which note IDs and update timestamps it has. Only the differences are transferred. Attachments travel with their note as Base64-encoded bytes; large payloads automatically switch from Nearby's BYTES type (32 KB cap) to STREAM.
State machine: Idle → Searching → FoundDevice → PairingConfirmation → Connected → Syncing → Complete (or Error).
Data screen → Sync devices. Both sides advertise their full manifest. After pairing, each side imports what's new on the other and exports what's new on itself. On completion, your two libraries are equal.
From the note detail view's overflow menu → Send to device. Only that one note's manifest is advertised. The receiver imports the note, including attachments and the original folder path. The send is forced — even a previously trashed copy on the receiver is overwritten / restored.
Data screen or note detail menu → Receive only. Your device advertises an empty manifest, so nothing of yours is sent. After import, a button takes you straight to the new note.
Data screen → Cloud Sync. Backs up the entire library — database and all attachment files — as a single encrypted archive to a cloud storage of your choice, and restores it from there (including on a brand-new device).
SecretNotes/ in your Nextcloud files. The server must use HTTPS with a valid certificate.Apps.SecretNotes/ collection there. HTTPS with a valid certificate required.Disconnecting a provider stops scheduled backups and clears the stored credentials on the device.
Cloud backups upload only when a backup password is set (Data screen → Backup Password; the Cloud Sync screen offers to set it inline). The password encrypts all media files inside the archive and wraps the encryption key, so the archive is restorable on other devices while the cloud provider only ever stores ciphertext. Keep the password safe — without it, a cloud backup cannot be decrypted on a new device.
Backup Now uploads immediately. Automatic Backup schedules daily or weekly uploads (optionally WiFi-only) via Android's WorkManager; scheduled runs are strictly upload-only and never restore or overwrite anything on the device.
Sync Now compares both sides against the state recorded at the last successful sync: if only this device changed, it uploads; if only the cloud changed, it asks whether to restore; if both changed, a conflict dialog lets you pick which version to keep. Nothing is ever replaced without confirmation.
Every upload creates its own timestamped file (secret_notes_cloud_backup_<date>.zip). The Keep backups picker on the Cloud Sync screen sets how many versions are retained (default 5, or unlimited); older ones are pruned automatically after each successful upload. Restore opens a list of all available versions — pick any of them. If the newest cloud backup is older than 14 days, the screen shows a warning.
Install the app, connect the same provider/account, and tap Restore. Enter the backup password when prompted. The restore validates the archive and password before touching local data, then replaces the library and restarts the app.
Unlike a backup (which replaces everything on restore), multi-device sync merges your notes with the cloud note by note: for each note the newer version wins, and notes moved to the trash move to the trash on every device. Permanently deleting a note (emptying the trash) is deliberately not propagated — it can re-appear in the trash after the next sync if another device still carries it.
Setup: connect the same cloud account on every device and set the same backup password everywhere — it encrypts the sync data in the cloud, so the cloud only ever stores ciphertext. Then tap Sync notes now in the Multi-device sync section of the Cloud Sync screen, or enable Sync automatically to sync at app start and about once a day in the background. Attachments are not synced — use Device Sync or a cloud backup for those.
Data screen → Export CSV / Import CSV. Thirteen columns including the folder path. Images are Base64-encoded; attachments are stored as JSON in their own column. On import, missing folders are created automatically from the path.
Data screen → Export JSON / Import JSON. Full structured export — easier to round-trip than CSV and the recommended option for backup.
By default, exports are written using the app's encryption envelope. To export readable plain text, enable Export unencrypted in Settings first. A red warning appears whenever this option is on — exported plaintext files are not protected by anything except your own file system permissions.
Data screen → Export PDF. Generates a styled HTML representation of all visible notes and renders it to PDF using Android's PrintManager. Honours your current filter (folder / category / search). Rich-text formatting in Text notes (bold, italic, underline, strikethrough, colors, highlights) is rendered in the PDF.
From the detail view, the share icon copies the note's content to the clipboard, or sends it to other apps via Android's share sheet. Per note type:
[x]/[ ] lines, indented for children.The app also receives shares from other apps. Share intents from text, image, PDF, audio, video, or document apps land in the share dialog where you can route the content into a new note or append to the currently open one.
Two distinct paths:
RecognizerIntent. Inserts text at the cursor..m4a file using SpeechRecognizer.createOnDeviceSpeechRecognizer() (Android 13+). Result is appended to the note's text field. No network, no cloud.Long-press your home screen → Widgets → Secret Notes. Four widgets are available:
Widgets share the same encrypted database; they decrypt notes through the same Keystore-wrapped key the app uses.
The Settings screen organises options into:
One-time in-app purchase via Google Play Billing. Product ID: secret_notes_pro. No subscription.
Free 7-day trial: every Pro feature can be tried once per installation for 7 days — start it from any Pro upgrade dialog ("Try free for 7 days") or Settings → Pro Status. No payment details are required. A banner appears in the notes list shortly before the trial ends. Afterwards all data created during the trial is kept: notes keep their folder assignments and attachments and remain viewable; the folder assignment can also be removed without Pro.
Pro unlocks:
Free features (no purchase): text, checklist and tally notes, unlimited notes, categories, CSV/JSON import & export, voice input, themes, PIN/biometric lock, reminders (incl. recurring, with snooze), editor undo/redo, password generator, screenshot protection, Quick Settings tile, launcher shortcuts, adjustable text size, language switcher, copy-to-clipboard.
Secret Notes does not collect, transmit, or share any personal data. There are no analytics, no crash reporting to a third party, no advertising IDs.
Network use is limited to:
The full privacy policy is in the project root and on the GitHub Pages site: privacy.html.
Email: agrauf67@gmail.com (Help screen → Send email pre-fills the app version).
FAQ and live encryption status: in-app, drawer → Help.
The Help/Support screen also offers a Send anonymous feedback option that opens a short anonymous form — no account or email required; the app, Android, and device versions are pre-filled for triage.
Source code: github.com/agrauf67/secretnotes
Copyright © 2026 Andreas Grauf. All rights reserved.
Secret Notes is published on Google Play under the developer account "djvlk". Source available on GitHub for transparency.