Write, share, and carry your context everywhere. Create your free account today.

01 Document Encryption

Raw

Document Encryption

Encrypt any individual document with a password, directly in your browser. Encryption is available on both plans.

What "the server never sees it" actually means

This is the claim, stated precisely:

  • Encryption and decryption happen entirely in your browser, on your device.
  • The server only ever stores the encrypted text.
  • The server never receives the plaintext or the password.

This is not a policy promise about what MDflow chooses not to look at. It is a structural property: the readable text never leaves your device, so there is nothing to look at. It also means MDflow cannot help you recover a lost password.

How it works

  • AES-256-GCM, with the key derived from your password using PBKDF2 with 600,000 iterations.
  • The stored format is mdflow-enc:v1.

That format is interoperable across MDflow's own tools: a document encrypted in the web app opens in the VS Code and Cursor extension, in the iOS app, and in the mdflow-crypt command line tool — and vice versa.

Encrypting

Choose Encrypt on a document, enter a password, and confirm it. The confirmation step exists because a typo in the password of a document only you can decrypt is unrecoverable.

Before you encrypt: MDflow removes the document's uploaded images first, and images cannot be added while it is encrypted. See 04 Images for why.

Unlocking, locking, and removing

  • Unlock by entering the password. You can then read and edit it on that device.
  • The unlocked key is remembered on the device, so the document reopens without re-entering the password on later visits. This is per device — a different browser or machine asks again.
  • Lock on demand to require the password before the next edit.
  • Remove encryption at any time to convert the document back to plain markdown.

On iOS, the derived key is stored in the Keychain and unlocked with Face ID or Touch ID, so subsequent opens use biometrics rather than the password. Note that the iOS app can encrypt, unlock and lock, but cannot remove encryption — use the web app or the VS Code extension for that.

What is and is not encrypted

Encrypted: the document body.

Not encrypted: the title, and the folder structure around it.

Plan accordingly. Q3 Layoff List.md in a folder called Restructuring tells a story before anyone reads a word of ciphertext. Put the sensitive part in the body, not the title.

The consequences of encrypting

Encryption is a real trade-off, not a free upgrade. An encrypted document:

  • Is excluded from workspace search. There is nothing readable to index.
  • Is not searchable in a shared Knowledgebase collection, for the same reason.
  • Is skipped by the Tasks view — counted, but never scanned.
  • Cannot hold uploaded MDflow images.
  • Cannot be read through the API or MCP server in any useful form. A token fetches ciphertext. Your AI agents cannot read it.
  • Requires unlocking to diff or restore a version. History is stored as ciphertext too.

That last group is the point for some people and a dealbreaker for others: encryption is exactly the tool for content you do not want your agents, or MDflow, to read.

Sharing an encrypted document

Shared encrypted documents show a password gate. Readers enter the password you share with them separately — through some channel that is not MDflow. The sharing settings warn you about this before you publish.

This works with both public links and private email shares (Pro).

If you lose the password

The document cannot be recovered. Not by you, not by support, not by MDflow.

MDflow suggests saving the password in your browser's password manager when you encrypt. Take it up on that offer.