W2QR

Recovery & Backup

Advanced mode gives you a safety net: if you lose your password, your device, or your QR code, you can still recover your wallet.

Basic & Shamir Shares: no recovery

In Basic mode, your password is the only key. In Shamir Shares mode, M share passwords are your keys. If you forget them, there is no way to recover your seed phrase — that is the trade-off of simplicity and decentralization. If you want a safety net, use Advanced mode.

The 2-of-3 Recovery System

When you create an Advanced QR, W2QR generates a random 256-bit recovery root (R) and encrypts your seed phrase under it. R is then split into 3 shares using Shamir Secret Sharing:

R1
Google Account share — stored encrypted on the W2QR server, released only when you sign in with your Google Account. This is separate from Google Drive backup.
R2
Device share — stored in your browser, bound to your device hardware via WebAuthn (biometric / PIN).
R3
Recovery Code share — derived from a printed code you store offline. Print it and keep it with your QR backup.

Any 2 of these 3 shares can reconstruct R and decrypt your wallet — even without your password.

Recovery scenarios

LostRecover with
Forgot passwordGoogle Account + Device (R1 + R2)
Lost deviceGoogle Account + Recovery Code (R1 + R3)
Lost Google Account accessDevice + Recovery Code (R2 + R3)
Lost QR codeRestore encrypted data from Google Drive (data source), then decrypt normally
Lost 2+ factorsNot recoverable — the system needs at least 2 of 3

Recovery Code

Your Recovery Code is a human-readable string starting with RC1- followed by Crockford Base32 characters and a checksum. It encodes 256 bits of entropy.

The Recovery Code serves two purposes:

  • - It can unwrap the authorization secret S offline (without Google Account or device)
  • - It derives the R3 share for disaster recovery

Print it, do not store it digitally. Treat it like a hardware wallet recovery sheet.

Device enrollment

W2QR uses WebAuthn with the PRF (pseudo-random function) extension to bind your authorization secret to your device. When you enroll a device:

  • - Your browser creates a credential tied to your device hardware (Touch ID, Face ID, Windows Hello, etc.)
  • - The PRF extension derives a device-specific key to encrypt S
  • - The encrypted S is stored locally in your browser (IndexedDB)

If you reset your device or clear browser data, the device credential and encrypted S are lost — but you can still recover via Google Account + Recovery Code.

Google Drive backup (data source)

When you register your Google Account during Advanced setup, the W2QR server stores your authorization secret (S) and R1 recovery share, linked to your Google identity. Separately, you can back up the encrypted QR data to Google Drive. Google never receives your password, seed phrase, or private keys.

If you lose your QR code, you can restore the encrypted data from Google Drive. This is purely a data source — equivalent to scanning the printed QR or uploading a photo. The restored data is still ciphertext and does not by itself open the wallet.

Google Drive (retrieve encrypted data) and Google Account sign-in (release the authorization secret from the W2QR server) are separate operations serving different roles in the security model.

Trust boundaries

Your Google Account and the W2QR server form a single trust domain. Even if both are compromised, the attacker gets only encrypted data and one share — they cannot reconstruct your wallet without your password or a second share. The system is designed so that no single point of failure can expose your seed phrase.

Read the full security model →