Code reader · No upload

Read a QR code from a picture on your device

Read a QR code from a photo or screenshot: the contents are shown in full and nothing is opened for you.

What the code says

    


    

Addresses are printed as plain text and are not made clickable. Check the scheme and the whole address before you use it. A Link label means the text looks like an address: the page does not validate the URL or verify the host, and it cannot tell you whether the destination is safe.

Statusidle Files— File— Image— Symbol— Correction— Contents— Codewords repaired— Network since file read—

One QR code per picture, from 21×21 to 177×177 modules; no barcodes, Data Matrix, Aztec or PDF417. A grid that cannot be read or repaired is refused. Kanji, Structured Append, FNC1 and character sets it cannot decode are refused by name. Pictures over 40 million pixels are refused, and an animated GIF or WEBP is read from its first frame. Takes .png, .jpg, .jpeg, .webp, .gif and .bmp.

How this reader works

The browser reads the picture into memory and draws it to a canvas. The decoder turns the pixels grey, then sorts them into black and white block by block, judging each block against the average of its neighbours. That copes with uneven lighting, such as a shadow across part of the code, which one threshold for the whole image would get wrong.

Three corners of a QR code carry a square whose slices run 1:1:3:1:1 through the middle. The reader scans rows across the image for that pattern and confirms each hit with a second scan across it. It then looks for three squares of similar size that sit at a right angle with two equal sides. Those corners position the grid, and each module is read from it.

Each candidate grid gives a stream of codewords, which Reed-Solomon error correction checks and repairs. A grid it cannot repair is rejected, which helps throw out badly placed grids, and the readout shows how many codewords were repaired. The reader handles standard model 2 codes at all four correction levels and reads one code per image. It has no perspective correction, so a photo taken at a sharp angle can fail. Damage beyond what error correction can repair is refused. So is a code whose bytes are not valid in the character set it declares, and the row names the reason.

Frequently asked questions

Is my picture uploaded anywhere?
No. The File API and a canvas hand the picture’s pixels to the thresholding, corner search and error correction running in this tab, and no extra decoder library is needed. The network meter counts resource-timing entries from the moment your file is read; it leaves out earlier page and code loads, so it is not a complete privacy audit on its own. Once the page has loaded, reading a code while offline shows that decoding runs locally.
Why does it not just open the link?
So you can see where a link goes before you follow it. The page shows the decoded address as text and does not open it. For a link in scheme:// form, the readout also shows the scheme and a raw piece of the address, which is not a verified host. Only http:// links get an unencrypted-link warning; other schemes are not checked for encryption. Text before an @ sign is flagged because it can disguise the destination. A sticker can cover a public QR code, so where a code is posted does not tell you where it leads.
What kinds of codes does it read?
QR Model 2 codes, versions 1–40 (21x21 through 177x177), at all four error-correction levels and with all eight masks. Numeric, alphanumeric and byte segments cover many links, wifi credentials, contacts, calendar entries, phone numbers and text. The reader refuses Kanji, Structured Append and FNC1 segments and says which one it found. It does not read barcodes, Data Matrix, Aztec or PDF417, and it looks for one code per image.
Why did it refuse my photo?
A cropped, blurred, very small, sharply angled or damaged code can fail the decoder's grid and error-correction checks. Try again with a closer, square-on picture that shows the whole code.
How do I know the decoder is right?
The test suite decodes fixtures from independent encoders for selected versions, checks the codeword and remainder-bit counts it derives from symbol geometry against the specification’s values, and runs repair and refusal cases. Those tests cover the cases they define; they cannot show that every photograph or damaged symbol will decode correctly.

Related tools