727 / 736SEEDQR

SeedQR

QR backup format for a BIP39 mnemonic by the SeedSigner project

SeedQR converts a BIP39 mnemonic into a static QR code for fast loading into an offline signing device; Standard SeedQR stores four-digit word indexes and CompactSeedQR stores binary entropy, but both formats carry the secret that can restore the wallet.

SeedQR is an openly documented data format from the SeedSigner project, not a new kind of seed, encryption, or Bitcoin protocol. Standard SeedQR concatenates zero-based BIP39 word positions into a numeric QR, while CompactSeedQR writes the original entropy as binary data and lets the receiver recompute the checksum.

Standard SeedQR takes every word in the mnemonic, finds its zero-based position in the BIP39 list, and writes it with exactly four digits. The value 12 is therefore written as 0012. The result is neither a photograph of the words nor a private key in textual form, but another lossless representation of the same secret. [1]

The BIP39 list has 2048 items indexed from 0 through 2047. A standard 12-word phrase produces 48 digits and a 25×25 QR grid; a 24-word phrase produces 96 digits and a 29×29 grid. The order of the four-digit blocks is the word order, so swapping blocks restores a different or invalid phrase. [1]

SeedSigner is designed as a stateless signer: powering it off clears the loaded secret data, so the seed must be entered again next time. SeedQR reduces that input to one scan or a manual transcription. It must not be confused with a PSBT, wallet descriptor, or address QR; those may carry public or transaction data, while SeedQR carries a recovery secret. [7]

Before transcription, the SeedSigner interface warns that “SeedQR is your private key” and that it must not be photographed or scanned with an internet-connected device. An air gap limits the network path for leakage, but it does not encrypt the QR or stop a camera, copy, physical thief, or compromised offline device from reading the seed. [5]

Official documentation lists Standard SeedQR and CompactSeedQR support for 12-word and 24-word BIP39 phrases. A public request to add a troublesome CompactSeedQR test vector was opened on 25 July 2022 and later closed by a project change; it documents public interoperability testing, not formal BIP standardization. [2] [6]

CompactSeedQR concatenates 11-bit word indexes, removes 4 checksum bits for 12 words, and stores 128 bits or 16 bytes in a 21×21 grid. For 24 words it removes 8 checksum bits and stores 256 bits or 32 bytes in a 25×25 grid. It is smaller, but an ordinary reader may mishandle binary data or null bytes; that inconvenience is not cryptographic protection. [1]

BIP39 creates words by dividing entropy and its checksum into 11-bit list indexes. CompactSeedQR can therefore omit the checksum bits and recompute them from the entropy after scanning. The payload has no unambiguous identifier for the wordlist language, however; recovery must use the same list, and the main specification recommends English. [4]

An implementation should be checked against the published test vectors and the actual encoder code, including a null byte in CompactSeedQR. A practical recovery drill belongs on an offline device with no value: after loading, compare the fingerprint, descriptor, or first receive address with the expected wallet. Never test a real seed with a web generator. [3]

For the clearest picture, read this entry together with Seed Phrase, BIP 39, BIP39 checksum, Private Key, Hardware Wallet, Air-gapped Wallet. The reverse links also lead from BBQr.

01Is SeedQR the same as an ordinary QR code containing a bitcoin address?

No. An address QR normally publishes a destination for receiving a payment, whereas SeedQR encodes the data needed to restore a BIP39 wallet. Anyone who reads SeedQR correctly and knows any BIP39 passphrase can derive the private keys. SeedQR must therefore be handled like a seed phrase, not like a public address.

02Does CompactSeedQR protect the seed because an ordinary phone cannot read it?

No. CompactSeedQR merely stores the same secret more efficiently as binary entropy. Some ordinary readers display it incorrectly or not at all, but specialized software can decode it. This is a compatibility obstacle, not encryption; security must rely on physical protection, controlled offline scanning, and an independently stored BIP39 passphrase when one is used.

DOC · 001SeedSigner — SeedQR Format SpecificationDocumentation DOC · 002SeedSigner — Supported QR FormatsDocumentation DOC · 003SeedSigner — SeedQR encoder implementationDocumentation DOC · 004Bitcoin BIPs — BIP 39: Mnemonic code for generating deterministic keysDocumentation DOC · 005SeedSigner — SeedQR private-key warning in seed viewsDocumentation DOC · 006SeedSigner issue 234 — Additional CompactSeedQR test vector, 25 July 2022Documentation DOC · 007SeedSigner — Independent Custody GuideDocumentation
Revised: Source-first · No investment advice