2048 Words / English / Offline / Landscape

BIP-39 Word Mixer

New mixture: five blocks with the original word, a blank word-number column and the mixed word. Restore: seven blocks with mixed words in alphabetical order on the left and their original words on the right.

Enter a key or scan it with the camera, then choose Restore. Invalid keys are rejected. A successful scan shows the Key-ID for comparison. Restoration never outputs the key and clears this field afterwards. When key output is disabled, a newly generated key is shown here so you can record it. Switching key output off for an existing new mixture also shows its key here.

Key output for new mixtures only

Create a new mixture or restore a table from an existing key.

Keys, printing and security

The key contains 128 random bits, the FM1 version identifier and a 32-bit checksum. Input is case-insensitive and ignores spaces and hyphens. The checksum detects typical transcription errors, but cannot tell whether a different valid key is your original key.

FM1 uses AES-128-CTR as a deterministic random stream and Fisher-Yates with unbiased number selection. Mixtures with self-mappings are rejected. Each word appears exactly once on the right; no word maps to itself. The English word list is embedded unchanged from bitcoin/bips, bip-0039/english.txt. Keep this file together with your key.

New mixture: 21 A4 landscape pages, five blocks of 20 rows, 9-pt word text and a blank number column. Restore: 15 pages, seven blocks of 20 rows, 8-pt word text and no number column. Read each block from top to bottom, then continue with the block to its right. In the print dialog, select A4, landscape and 100% scale; disable browser headers and footers.

Keep keys and tables confidential. Anyone who knows the key can regenerate the entire mapping. Word substitution is not an established encryption scheme for wallet seeds. For new mixtures, key and QR output on page 1 is optional and printing requires a separate selection. If key output is disabled, the new key is shown in the highlighted input field with a reminder to record it. Switching key output off for an existing new mixture also shows its key in that field; the field is never printed. Restoration never outputs the key or QR code. QR modules are 1 CSS pixel wide (approximately 0.265 mm in print), with a four-module quiet zone. Such a small code may require a carefully focused close-up.

The Key-ID is the CRC-64/ECMA-182 of the complete normalized FM1 key (UTF-8, uppercase, including hyphens and checksum). It appears in every page header, to the right of the QR code on page 1 when the QR code is shown. Creating and restoring the same mapping produces the same Key-ID. The ID remains visible and is always printed, even when key output is disabled. It identifies matching sheets, not cryptographic authenticity; CRC collisions are theoretically possible.

Page 1 shows the SHA-256 hash of all embedded JavaScript, including the word list and QR libraries, but not HTML or CSS. Script text contents are hashed in document order, joined by one newline and encoded as UTF-8; the HTML parser normalizes line endings to LF. The hash links to the published reference image. Only an explicit click opens that website. Self-checking is not tamper protection: modified code could also fake the displayed hash. Independent verification requires calculating and comparing the hash externally.

No automatic network access and no browser storage. QR generation (qrcode-generator 1.4.4, MIT) and decoding (jsQR 1.4.0, Apache-2.0), including license texts, are embedded directly. Camera frames are processed only in memory, never saved or transmitted. Camera access requires your permission and a context the browser considers secure. Local-file support varies by browser; some mobile devices do not allow camera access from local HTML files. Manual key entry remains available.

Your print-ready landscape table will appear here.

Scan a key

Requesting camera access ...