---
title: "01 Document Encryption"
canonical_url: https://mdflow.cz/share/c/h0L7MvX5Cy5sST3qPnApqHOmrQ36JTVy169qJMtDMya9Kc30zm04cg9OuPSSPwvj/b230e154-6c58-4bfd-8a7a-c70bc7bebcd7
md_url: https://mdflow.cz/share/c/h0L7MvX5Cy5sST3qPnApqHOmrQ36JTVy169qJMtDMya9Kc30zm04cg9OuPSSPwvj/b230e154-6c58-4bfd-8a7a-c70bc7bebcd7.md
visibility: public
---

# 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](/doc/1440e5da-c790-4b50-b24b-ebe4fd6e5a6c) 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.
