Passkey QR Code Reader
Turn a screenshot of a passkey “use your phone” QR Code into its FIDO:/ link, decoded on your device.
- Free, no account
- Nothing uploaded
- Decoded on your device
PNG, JPG, WebP, GIF or SVG, up to 20 MB. Crop to the code if the screenshot shows other QR Codes too — the first one found is read.
Already have the text? Paste it instead
Nothing read yet. Choose a screenshot of the passkey QR Code your browser is showing, and its FIDO:/ link appears here.
What is inside a passkey QR Code
The code is not a web address. It is a FIDO:/ link followed by digits, and
those digits are a small block of data packed into numbers so the QR Code can store it as
compactly as possible. Unpacked, it contains:
- A public key made for this one sign-in, so the phone and computer can set up an encrypted channel.
- A one-time secret that proves the phone actually saw this code. This page never shows it.
- What is being asked — use an existing passkey, or create a new one.
- When the code was made, which is how this page can tell you it has probably expired.
- Whether the computer offers to remember the phone, so next time it can ask the phone directly without a QR Code.
- How many relay servers the browser knows. The two devices talk through one of these, and the content is encrypted end to end.
How to use the link
- Start the sign-in on the computer and pick the option to use a phone or tablet. A QR Code appears.
- Take a screenshot of it and drop it here — or paste the
FIDO:/text if you already have it. - Copy the link and open it on the phone that holds the passkey, then approve with your fingerprint, face or PIN. Keep Bluetooth on: the phone uses it to confirm it is near the computer.
Note Never finish a sign-in you did not start
For developers
The packing is the one Chromium uses for hybrid (formerly caBLE v2) transport: the data is
split into 7-byte chunks, each read as a little-endian integer and written as 17 zero-padded
decimal digits, with a shorter fixed-width group for the last partial chunk. The bytes are a
CBOR map — key 0 the compressed P-256 public key, 1 the 16-byte secret, 2 the number of known
tunnel-server domains, 3 the creation time in seconds, 4 the linking flag and 5 the request
type (ga or mc). Unknown keys are listed rather than rejected, so
a newer browser's codes still read.
Ask the sensei
Frequently asked questions
What is a passkey QR Code?
FIDO:/ followed by a long string of digits.Why would I want the link instead of scanning the code?
Is it safe to upload a passkey QR Code here?
How long does a passkey QR Code last?
Opening the link on my phone does nothing. Why?
What do “sign in” and “create” mean in the result?
Next stage