Flowvault FAQ
Questions we get (or expect to get) about our zero-knowledge encrypted notepad, the Markdown preview with security-first defaults (blocked HTML, click-to-load external images, no-referrer external links, locally-highlighted code blocks), Bring-Your-Own-Storage local vaults stored as a single .flowvault file on your device, the trusted handover to a beneficiary, drand-backed time-locked notes, Encrypted Send, .fvaultencrypted backups and restore, and how Flowvault compares to ProtectedText, Standard Notes, CryptPad, and other alternatives. If yours isn't here, open an issue on GitHub.
About Flowvault
What is Flowvault?+
useflowvault.com/s/my-notes, set a password, and write. Your notes are encrypted in your browser before they reach our server, so we only ever see an opaque ciphertext blob.Do I need to create an account?+
How much does it cost?+
Comparisons: Flowvault vs ProtectedText, Standard Notes, CryptPad, Privnote, and other encrypted notepads
I already use ProtectedText. Why switch?+
- No legacy plaintext-password blob. Inspect
protectedtext.com/js/main.js— every save still uploads a parallelencryptedContentLegacyblob keyed only by the raw password (for backwards compatibility with older clients). If their database is ever stolen, attackers can crack that legacy blob without doing any Argon2 work at all. Flowvault has no such fallback — every blob requires the full Argon2 chain. - Authenticated encryption. Flowvault uses AES-256-GCM, which detects any tampering with the ciphertext. ProtectedText uses AES-256-CBC via the legacy CryptoJS library, which is malleable: bitflips in the blob go undetected.
- Plausible deniability via hidden volumes.One Flowvault URL can hold multiple independent notebooks, each behind a different password, all packed into one fixed-size blob. ProtectedText is one password, one blob — no decoy possible without a breaking format change.
- Open backend.ProtectedText publishes its client JS for inspection but their FAQ explicitly says the server code is closed. Flowvault publishes the frontend, the Cloud Functions, and the Firestore security rules — the entire stack is reviewable, licensed, and self-hostable.
What we're NOT claiming:ProtectedText today actually does use Argon2id (32 MiB, adaptive ~300 ms) for the primary blob — it's a real KDF, in the same family as ours (64 MiB, 3 iters, HKDF expansion). The KDF gap is small. The legacy-blob issue, the malleable cipher, and the lack of deniability are the real differences.
What is "plausible deniability" in practice?+
Is ProtectedText insecure?+
How does Flowvault compare to Standard Notes?+
Flowvault has a different shape: no account, no email, no app install, no subscription. You type a URL, set a password, and start writing in a browser tab. It's closer to ProtectedText than to Standard Notes in spirit. We add hidden volumes and a fully open backend on top. Pick Standard Notes if you want a long-term encrypted journal across devices; pick Flowvault if you want a no-account scratchpad with deniability.
How does Flowvault compare to CryptPad?+
Flowvault is much smaller in scope (plain text, single pane, one URL = one vault). If you want a Google Docs replacement, use CryptPad. If you want a hidden, deniable scratchpad you can open from any browser without signing in, use Flowvault.
How does Flowvault compare to Privnote, OneTimeSecret, PrivateBin, and other burn-after-reading services?+
- For the persistent side (the notepad you return to for years), Flowvault uniquely offers plausible-deniability hidden volumes: multiple passwords on the same URL unlock different notebooks. Privnote, OneTimeSecret, PrivateBin, and Yopass don't do persistence at all.
- For the one-shot side (a password for a colleague, a recovery phrase, an API key), Encrypted Send is Flowvault's direct answer. AES-256-GCM in the browser, key in the URL fragment, server-enforced view cap (default 1) with atomic hard-delete, optional Argon2id password gate on top, expiry up to 30 days, and the whole stack is open source end-to-end (frontend + Cloud Functions + Firestore rules). See the full comparison table on the homepage.
The short version: use Privnote/OneTimeSecret if you're already there, use /send/new if you want an account-less, open-source alternative that lives next to your long-lived vault.
How does Flowvault compare to Joplin and Obsidian?+
They're a different category from Flowvault. Flowvault is designed for the case where you can't install software (a friend's laptop, a school computer, a hotel kiosk, a phone you don't own), or where you want plausible deniability rather than local-disk encryption. The ideal setup is probably both: Obsidian or Joplin at home, Flowvault for everywhere else.
How does Flowvault compare to Notesnook?+
Flowvault is account-less and browser-only. We don't compete on app polish or device sync — we compete on zero metadata(we don't even know who you are) and hidden-volume deniability. If you want an encrypted note app, Notesnook is great. If you want an encrypted note URLwith deniability, that's us.
I used Skiff Notes. Where should I go now?+
How does Flowvault compare to Bitwarden Send / Bitwarden Notes / 1Password Secure Notes / 1Password Share?+
- Bitwarden Send / 1Password Share (ephemeral one-off shares). Flowvault now ships Encrypted Send, which plays in this exact lane — and unlike Bitwarden Send / 1Password Share, it doesn't require an account on the sender'sside and the entire stack (frontend, Cloud Functions, Firestore rules) is open source in a single repo. Password gate, URL-fragment key, atomic server-enforced view cap — same threat-model promises.
- Bitwarden Notes / 1Password Secure Notes (persistent notes inside a password manager). Flowvault is for free-form text you want to keep coming back to, without an account, without installing anything, and with the option to hide some of it behind a decoy password. Use both: structured credentials in your password manager, free-form scratch + deniable notebooks in Flowvault.
How does Flowvault compare to Cryptee, Turtl, HedgeDoc, dontpad, Etherpad?+
- Cryptee: Estonia-based, encrypted notes and photos, account required. Beautiful but a different shape than a no-login notepad.
- Turtl: open-source encrypted notes app with account-based sync. Closer to Standard Notes than to ProtectedText.
- HedgeDoc (formerly CodiMD, fork of HackMD): collaborative Markdown editor. Excellent for shared drafts but generally not encrypted at rest unless you self-host with care.
- dontpad, Etherpad, pad.riseup.net: collaborative pads, notencrypted — the operator can read your content. Useful for non-sensitive coordination, not for secrets.
If your top requirement is “an encrypted notepad I can open in a browser without signing in,” the realistic field is essentially Flowvault and ProtectedText. Everything else is a different category.
Security
What does the server actually see?+
Is my password ever transmitted?+
Why Argon2id instead of PBKDF2 or SHA-512?+
What if you get hacked?+
Can you be compelled to hand over my notes?+
Is the frontend code verifiable?+
Trusted handover & time-locked notes
What is the trusted handover?+
released, and the beneficiary can then visit the URL, enter their password, unwrap the master key, and read the notebook.Is the trusted handover zero-knowledge too?+
Can someone else fake a heartbeat to keep my vault alive forever?+
Can I cancel a trusted handover?+
What happens to my other hidden notebooks when the handover fires?+
Do Standard Notes / ProtectedText / Privnote have a trusted handover?+
Time-locked notes — are those the same as the trusted handover?+
How do time-locked notes work?+
You compose a message and pick an unlock moment. Your browser:
- computes the drand round number whose signature will be published closest to your unlock moment (30-second granularity);
- encrypts your plaintext to that round using tlock— identity-based encryption over BLS12-381, with the round number as the identity;
- uploads only the opaque ciphertext, the target round, and the drand chain hash to a write-once timelocks Firestore collection.
We hand you back a share link like useflowvault.com/t/xyz. Visit it any time: before the unlock moment you see a countdown, after it your browser grabs the drand round signature and decrypts locally. Flowvault cannot unlock it early — the key literally doesn't exist yet.
Who / what is drand?+
Can Flowvault or law enforcement decrypt a time-locked note early?+
What are the limits and leaks of time-locked notes?+
Can I require a password in addition to the time-lock?+
How is a time-locked note different from Privnote or other burn-after-reading links?+
What is Encrypted Send?+
How does Encrypted Send protect the note?+
Four layers:
- Your browser generates a random 256-bit AES key and encrypts the plaintext with AES-256-GCM (authenticated encryption, so tampering is detectable).
- The key is placed in the URL fragment (after
#). Browsers never send URL fragments to servers, so our database sees only the opaque ciphertext — we have no way to decrypt it. - Optionally, you can add a password. The plaintext is then wrapped in an innerAES-GCM layer keyed by Argon2id(password) before the outer AES wrap. Same “FVPW” frame we use for time-locks.
- The server enforces the view counter atomically through a Cloud Function: reads go through
readSend, which decrements the counter in a transaction and deletes the document the moment the last view is consumed. Firestore rules deny direct reads by clients — that’s what makes the counter trustworthy.
How is Encrypted Send different from Bitwarden Send, Privnote, or 1Password’s share link?+
- Bitwarden Sendis excellent and also zero-knowledge, but it’s gated behind a Bitwarden account (for the sender) and closed server code for the receive path. Flowvault’s equivalent is account-less and open source end-to-end — frontend, Cloud Functions, and Firestore rules all live in the same repo.
- Privnote is account-less too, but closed-source; you take its claims on trust. It also lacks an optional password gate, so a leaked link is game over.
- 1Password Sharerequires a 1Password account for the sender and shares through 1Password’s infrastructure. Fine if you already live there.
- Flowvault Encrypted Send: no account, open source, optional password gate using the same Argon2id + AES-GCM construction as the rest of the product, hard-delete on last view, Firestore TTL as a belt-and-suspenders sweep, and it lives next to your vault and time-locks under one URL.
Could Flowvault read my Encrypted Send note if you wanted to?+
src/lib/send/crypto.ts and src/lib/crypto/passwordFrame.ts, the Cloud Function is in functions/src/index.ts, and the rules are in firestore.rules.What if someone intercepts the link before the recipient opens it?+
Does Encrypted Send support files or just text?+
What happens when an Encrypted Send note expires?+
sendsSweep) batch-deletes any send past its expiresAttimestamp, and a Firestore TTL policy on the same field provides a secondary sweep. Whichever runs first wins; both are idempotent. Once the document is gone, even if someone saved the URL they see “not found” — Flowvault has no backup of deleted sends.Using Flowvault
I forgot my password. Can I recover my notes?+
Can two people share a vault?+
How big can a notebook be?+
Can I have multiple notebooks under one password?+
+ New above the editor to add a tab, double-click (or hover and click the pencil) to rename, drag tabs to reorder, and click the × to delete. All tabs — their titles, order, and contents — live inside the same encrypted slot, so the server sees one opaque blob the same as before. The tab list itself is zero-knowledge: nobody who does not have your password can tell how many tabs you have or what they're called.If I add tabs, can someone with my decoy password see them?+
Can I use Flowvault offline?+
Can I add a decoy password to an existing vault?+
What happens if two passwords collide on the same slot?+
1/64(~1.6%). For three passwords it's ~4.7%; for five, ~14%. On collision one notebook overwrites the other — we cannot detect collisions across passwords without storing metadata that would break deniability. The one case we docatch: Flowvault refuses to register a new password whose slot would overwrite the notebook you currently have open. If collisions matter for your threat model, just pick a different password and try again.Markdown preview & syntax-highlighted code blocks
Does Flowvault render Markdown?+
localStorage (not in the encrypted blob, so it doesn't eat into your 512 KiB slot).Which Markdown flavor / features are supported?+
react-markdown + remark-gfm:- Headings (
# … ######), paragraphs, line breaks - Bold, italic, strikethrough (
~~like this~~) - Ordered and unordered lists, including GFM task lists (
- [x] done) - Tables, blockquotes, horizontal rules
- Inline code and fenced code blocks with per-language Prism syntax highlighting (
ts,py,rs,go,bash,json, and the rest of the usual crew) - Autolinks (
<https://…>) and standard[label](url)links - Images, with the safety gate described below
The preview ships without Mermaid diagrams or KaTeX math on purpose — both would pull in large extra bundles for a niche use case. If you need either, let us know via GitHub.
Is the Markdown preview zero-knowledge too?+
next/dynamic, so even the decisionto use Markdown isn't reported to anyone: users who stay in Edit mode never download it.Why can't I embed <script>, <iframe>, or arbitrary HTML in my notes?+
Two reasons. First, Flowvault's whole value prop is “the server cannot read your notes.” That guarantee collapses the moment a rendered <script> tag can exfiltrate your plaintext back out of the browser. Second, vaults can be handed over (trusted handover) or imported from a .fvaultsomeone sent you; rendering arbitrary HTML from a notebook you didn't author is self-XSS waiting to happen. Keeping Markdown strict keeps the feature safe for beneficiaries and anyone collaborating via shared URL too.
Why do external images show a "Load image" button instead of just appearing?+
 into your notes, and the moment you unlocked the vault with preview enabled, your IP / user-agent / exact-to-the-second timing would ping their server.Flowvault blocks that quiet channel. External images render as a placeholder showing the exact URL they would load, with a Load imagebutton that explicitly notes “sends a request to the host.” You get full informed consent before any pixel crosses the network, and when you do load it we still set referrerPolicy="no-referrer", so the host never learns which Flowvault URL or local vault was the source.
Inline base64 data:images render immediately, because they're part of the vault bytes — no network request, no leak.
What about external links — do they leak my vault URL as the referrer?+
target="_blank", rel="noopener noreferrer", and referrerPolicy="no-referrer". The destination site sees a normal click but cannot tell it came from Flowvault, let alone which slug or local file.Does syntax highlighting hit the network?+
prism-react-renderer, which ships as part of the lazy-loaded preview bundle. No remote theme fetch, no WebAssembly download, no “pick a language on first render” round-trip. Flowvault's no-third-party posture extends to the rendering layer.Can I still edit my notes as plain text?+
.fvault backups and plaintext .md / .zip exports are identical byte-for-byte.Does Split view work on my phone?+
Is there a WYSIWYG Markdown editor?+
Bring Your Own Storage (local .flowvault files; S3 / WebDAV on the roadmap)
What is Bring Your Own Storage (BYOS) in Flowvault?+
D:\notes\journal.flowvault— and every save writes the encrypted blob back to thatfile via your browser's File System Access API. Same hidden-volume format, same Argon2id + AES-256-GCM, same multi-notebook tabs as a hosted vault. Flowvault just becomes the editor; your disk is the database.How is BYOS different from the hosted Flowvault vault at /s/<slug>?+
.fvault backup format. The difference is where the ciphertext lives:- Hosted vault:
useflowvault.com/s/<slug>. The ciphertext is stored in our Firestore. Shareable URL. Works from any device. Trusted handover and all server-dependent features work. - Local vault:
useflowvault.com/local/<uuid>. The ciphertext is a.flowvaultfile on your disk. Only openable on a device that has the file. The URL on its own is useless without the file. Trusted handover is not available because it needs a server-held scheduler.
What does your server see for a local vault?+
/local/<uuid>is just a client-side route; the UUID is generated in your browser, never posted back, and the Next.js server doesn't know which file (if any) it corresponds to. Your browser never uploads the ciphertext or the file name to us. The one caveat is the editor chrome: if you use server-dependent features while a local vault is open — time-locked notes composition, Encrypted Send — those specific flows still talk to our backend for their own documents (a time-locked capsule, a send record), same as they would from a hosted vault. They never see your local vault's plaintext or ciphertext.Which browsers support local vaults?+
/s/<slug> still works in every browser. Mobile support for the API is spotty; we treat desktop Chromium as the supported surface for now.What's inside a .flowvault file on disk?+
vaultVersioncounter used for optimistic concurrency, and timestamps) followed by the raw ciphertext — the same fixed-size hidden-volume blob that would live in Firestore for a hosted vault. No passwords, no derived keys, no plaintext, no per-slot metadata. Opening the file in a text editor will just show you the JSON preamble and then binary noise. If a copy of the file leaks, an attacker has to do exactly the same offline brute-force work they'd face against a stolen Firestore document — nothing more, nothing less.How do I move a local vault between devices?+
.flowvaultfile. That's the whole state — put it on a USB stick, sync it through your cloud of choice, email it to yourself encrypted, whatever fits your threat model. On the other device, open Flowvault, click Open local vault, point at the copied file, and enter your password. The file is self-contained: everything the editor needs (salt, KDF params, volume layout, slots, CAS version) travels with it.What if I edit the same local vault from two devices?+
Does trusted handover work on local vaults?+
released after an inactivity interval, which only makes sense for a document that lives in the hosted Firestore. A local file sitting on your disk has no server watching it. If you want the handover behavior, use a hosted vault at /s/<slug>. The editor hides the Handover button for local vaults so it doesn't suggest a guarantee we can't keep.What about time-locked notes and Encrypted Send from a local vault?+
How is this different from the .fvault backup file?+
.fvault is a point-in-time snapshot, taken by clicking Export. A .flowvault is the live vault— every save in the editor writes through to that file, same as a hosted vault writes through to Firestore. You can still export a .fvault from a local vault for cold storage, or restore from a .fvault into a hosted vault at /restore. The two formats are siblings: same ciphertext, different roles.What happens if I lose my .flowvault file?+
.fvaultexport into a separate folder or cloud drive — the export is still zero-knowledge, still needs your password, so it's fine to store in places you wouldn't trust with plaintext.Are S3, WebDAV, and other storage backends coming?+
VaultStorageAdapter interface specifically so new backends plug in cleanly; the local-file adapter was the first non-Firestore implementation. Likely next candidates, in rough order:- S3-compatible (AWS S3, Cloudflare R2, Backblaze B2, Wasabi, MinIO). Good for people who want their ciphertext in an object store they already pay for, with versioning turned on.
- WebDAV (Nextcloud, ownCloud, Storj-compatible gateways). Same idea, different wire format; easy to self-host.
- IPFS / Storj / Arweave for fully decentralised storage, treated as a more experimental tier.
All of these would follow the same rule as local files: the blob stays opaque, the adapter just moves bytes, and server-dependent features (trusted handover, hosted routing) stay on Flowvault. If a specific backend is a blocker for you, please open a GitHub issue and say so — prioritisation is driven by who actually wants to use it.
Backup, restore & migration (.fvault, Markdown export, self-hosting)
Can I back up my Flowvault notes?+
Is the .fvault backup file itself encrypted?+
How do I restore a Flowvault backup?+
.fvault file, pick a fresh URL, and click Restore vault. We write the ciphertext and its original KDF/volume metadata into Firestore under that new slug. You never type a password during restore — there's no decryption happening server-side. Once the site exists, open it as normal and enter the password(s) you used before. Every slot (every decoy password) comes back intact.Why does restore block me from overwriting an existing vault?+
Can I export my notes as plaintext Markdown for Obsidian, Standard Notes, or a git repo?+
.md file in the zip, plus a README.mdindex. The export is limited to the slot you're looking at — other passwords' decoy slots are neverincluded, which keeps plausible deniability intact even if you're exporting under coercion. We also show an explicit confirmation before writing any plaintext to disk.Does ProtectedText have an export / backup feature?+
.fvault backup preserves your notes encrypted, so you can store copies on a USB stick, in another cloud, or on a friend's machine without ever exposing plaintext. If you want to migrate into Flowvault from ProtectedText today, the practical path is: unlock your note there, copy the text, paste it into a new Flowvault notebook. A guided importer is on the roadmap.Can I self-host Flowvault and move my backups there?+
.fvault file onto /restore. Because the backup format includes the KDF parameters and volume layout that produced the ciphertext, vaults made on the hosted Flowvault will open on your self-hosted one with the same password.What exactly is inside a .fvault file?+
kind="flowvault-backup"andversion(currently 1).exportedAtand an optionalslugHintso the restore UI can prefill a sensible URL.kdfSalt(base64url) — the per-vault Argon2id salt.kdfParams— algorithm (argon2id), memory cost, iteration count, parallelism, key length.volume— slot count, slot size, and frame version.ciphertext(base64url) — the fixed-size hidden-volume blob, byte-for-byte identical to what lives in Firestore.
No passwords, no keys, no plaintext, no per-slot metadata. You can inspect any .fvault with a plain text editor to verify that for yourself.
Do other encrypted notepads have a zero-knowledge backup format?+
- Standard Notes exports to a JSON/zip of plaintext items (optionally into an encrypted archive on Plus/Pro). An account is required.
- CryptPad has per-pad exports to
.md/.html/ raw — all plaintext. - Bitwarden exports to plaintext JSON/CSV (or a password-protected JSON variant; the secret is chosen at export time, not derived from your vault password).
- Notesnookexports encrypted backups (.nnbackup) behind an account and subscription, parallel to Flowvault's
.fvaultin spirit. - ProtectedText / Privnote / PrivateBin: no export feature at all.
Flowvault's angle is that the backup is the same ciphertext you already trust on our server, with no account tying it to you. Handing the file to a stranger is no worse than handing them your URL.
How often should I back up?+
Project
Who builds Flowvault?+
Is Flowvault open source? How does that compare to ProtectedText?+
- Frontend (Next.js, all UI + client-side crypto)
- Cloud Functions(the trusted-handover release sweep). You can read exactly what server-side code runs on your behalf — there is no hidden server process.
- Firestore security rules(the actual boundary that keeps us from reading your data). These are short, auditable, and enforced by Google's infrastructure.
You can self-host the entire stack: bring your own Firebase project, deploy the rules and Functions, point the frontend at it. A permissive license (MIT planned) lets you fork it freely.
For comparison: ProtectedTextpublishes its client-side JavaScript so you can read it in the browser (commendable, and they encourage it), but their FAQ explicitly states “we haven't opened the server code for now.” They argue the server is irrelevant because all crypto happens in the client — which is a fair argument, but you still can't self-host their service or audit what their server does with your encrypted blobs (rate-limiting, logging, retention). Flowvault's answer is to put the server code, the database rules, and the deployment config in the same repo, so there is nothing to take on faith.
How is Flowvault funded?+
I want to support Flowvault. What helps?+
Not in a position to donate? Use Flowvault, tell someone who needs it, star the GitHub repo, file a bug, or submit a PR. All of those matter just as much.
Why crypto instead of a regular card or PayPal?+
Why NOWPayments specifically, and what does it see about me?+
What NOWPayments sees on the donor side: your IP and your browser when you interact with their widget (same as any website you load). They don't require an email, and they don't require KYC for a donation. If that isn't private enough for you, load the page through Tor or a VPN — both work — and send Monero, which hides amount and identity at the protocol level. We don't receive any of that metadata either way.
Which coin should I send?+
How do I report a security issue?+
Want a longer answer?
The Flowvault blog has feature-by-feature deep dives: the hidden-volume format, the trusted handover, drand-backed time-locked notes, an honest Flowvault vs ProtectedText head-to-head, a head-to-head of Encrypted Send vs Bitwarden Send vs Privnote, the .fvault backup format, a beginner's guide, and why Flowvault exists in the first place.