Change passphrase. Your existing entries will be re-encrypted with the new key. The old passphrase will no longer work.
This file carries its own key settings, which means it was made with a different passphrase. Enter the passphrase that was in effect when the file was written.
This is a single file. No server, no account, no cloud. Your journal lives wherever this file lives — on your hard drive, a USB stick, slipped into a folder you trust. Everything stays on your machine. That’s not a feature. It’s the point.
The first time you open the journal, you choose a passphrase. From that moment, every word you write is encrypted with it — AES-256-GCM, the same standard governments use for classified material, with PBKDF2-SHA256 key derivation at 600,000 iterations (OWASP 2024 recommendation). Your entries are unreadable without the passphrase. Not difficult to read. Unreadable.
You may optionally add a passphrase hint when creating your journal. This hint is stored unencrypted and will be shown on the lock screen if you forget. Choose something that reminds only you.
There is no other recovery mechanism. No email reset, no security question, no back door. If you lose the passphrase, your writing is gone. This is what real privacy looks like. Write it down somewhere safe.
Your journal uses IndexedDB when available (50MB+ capacity) with localStorage as fallback (5-10MB). The browser stores your encrypted entries locally. To keep your words safe across devices or browser changes, use export regularly.
The save button writes your entries to the browser’s storage, encrypted. This also happens automatically every five seconds while you type. It’s silent. No dialogs, no interruptions.
The export button creates an encrypted backup file on your disk. A native “Save” dialog opens — choose where it goes, name it what you like.
The open button lets you import a previously exported journal file. Entries are merged — newer versions replace older ones, nothing is lost.
Write is the typewriter. The cursor stays in the centre of the screen, your text moves beneath it like paper through a carriage. When you start typing, everything else fades away. Move the mouse to bring the interface back.
Read shows the current entry as clean, quiet prose. No cursor, no carriage. Just your words.
The search bar in the left margin filters across all entries — dates and text. Type a word, a phrase, a month. The matching entries appear with a snippet of context. Press / from anywhere to jump to the search field.
Hover over a date in the sidebar and a small × appears. Click it to delete that entry. You'll be asked to confirm. Once gone, the words are gone — this matches the rest of the journal's relationship with privacy. Export first if you want a copy.
The ⚿ button opens a small dialog where you can change your passphrase. You'll need the current one. Your existing entries are silently re-encrypted with the new key. The old passphrase stops working the moment the change completes.
The ◔ button toggles between the off-black default and a parchment light mode. Choose what feels right for the hour.
If your system asks for reduced motion, the noise and the cursor blink stand still. If your system asks for higher contrast, the text gets clearer. On touch devices, the small custom cursor steps aside for the system one. Print from Read mode and you'll get a clean page on white paper, not a screenshot of the dark.
Entries are encrypted in this browser and kept in its own storage. Nothing is sent anywhere. That also means nothing is kept anywhere else: no server holds a copy, and no one can send you one.
Checking how durable storage is on this browser…
An export is the only real backup. It is an encrypted file you keep yourself. Since v2.0.3 an export also carries its own key settings, so it can be opened with the passphrase it was made under, even after you change the passphrase here.
The lock button closes the journal at once: the key is discarded and the decrypted entries leave memory. The journal also locks itself after a stretch of doing nothing. Choose how long: