Skip to content

Authenticator Export Reader

Decodes a Google Authenticator migration QR into the individual accounts and their secrets.

Google Authenticator’s “export accounts” QR is not an `otpauth://` link — it is a protobuf payload wrapped in `otpauth-migration://`, holding every account at once. This decodes it back into the individual entries so you can see what is in a backup, or move accounts to an app that only accepts one at a time.

🔒 Runs entirely in your browserotp2famigrationbackup

Drop the export QR image

Or paste the otpauth-migration:// text below. Decoded in your browser.

Decoded entirely in your browser. The export holds live 2FA secrets — do not paste the output anywhere or share your screen while it is shown.

How to use it

  1. Give it the export QR

    Drop a screenshot of the QR, or paste the `otpauth-migration://offline?data=…` string if you already decoded the image elsewhere.

  2. Read the account list

    Each entry shows issuer, account name, algorithm, digits and the Base32 secret. A large export is split across several QR codes — each one has to be decoded separately.

  3. Move what you need, then destroy the output

    Re-enrol each account in the new app with the OTP QR builder, verify a code, and close the tab. Do not screenshot this page.

Common questions

Is this decoded on a server?

No. The QR is read and the protobuf parsed in your browser, with no request. That is not a convenience here — the payload is every live 2FA secret you own.

How dangerous is the output, exactly?

Anyone holding these secrets can generate your codes indefinitely, on any device, without touching your phone. Treat the decoded list as equivalent to handing over the phone itself, and revoke and re-enrol if it ever leaks.

Nothing decodes — the QR is unreadable.

Export QRs are dense, so a photograph of a screen usually fails where a direct screenshot succeeds. Crop to the code, avoid rescaling, and check the string starts with `otpauth-migration://` rather than `otpauth://` — a single-account QR belongs in the TOTP tool instead.

Feed it from

Next

These accept what this tool produces, so the result can go straight in.