Skip to content

QR code reader

The QR code is on the screen in front of you — in an email, a PDF, a screenshot someone sent — and the only camera you have is in the same device. Load the image here instead. The reader decodes it in your browser and shows you what it says before you act on it.

Read the code

Drop an image of a QR code here

or paste a screenshot, or

PNG, JPEG, WebP, GIF, BMP or SVG. The image stays on your device.

Decoded content

Decoding runs entirely in your browser. The image and the decoded text are never sent to this site or to anyone else. This reader works from an image; it does not use a camera.

How to read a QR code from a picture

Decode a QR code you cannot point a phone at: get the code as an image, load it into the reader, check what it contains and decide what to do with it.

  1. Get the code as an image

    Take a screenshot of the code on your screen, save the picture from the email or PDF that contains it, or photograph the printed code square-on in even light. Leave a margin around the pattern rather than cropping to its edge.

  2. Load it into the reader

    Drop the file onto the box above, paste a screenshot with Ctrl+V or Cmd+V, or use the file chooser. The image is drawn onto a canvas inside your browser and decoded there; it is not uploaded.

  3. Read the content type first

    The result names what the code holds — a web address, a Wi-Fi network, a contact card, plain text — and breaks it into fields. For a web address the host is shown prominently, because that is the part worth checking.

  4. Decide what to do with it

    Copy the raw text, reveal a Wi-Fi password, or open a link in a new tab once you have looked at the host. Nothing happens automatically: the reader shows you the content and stops.

  5. If nothing is found, adjust and retry

    Crop closer to the code while keeping a blank margin, increase the contrast if the code sits on a photograph or a coloured background, or re-take a blurred picture. The failure message lists what to try.

What the reader can tell you

A QR code holds text, nothing more. What a phone does with that text — join a network, add a contact, open a page — depends on a prefix at the start of it. The reader looks at the same prefix and splits the content into the fields the format defines, so a Wi-Fi code is shown as a network name, a security type and a password, and a vCard as a name, phone numbers and addresses.

For a web address the reader puts the scheme and the host first, on purpose. The path can say anything; the host is the part that tells you where the link actually goes. If it is a URL shortener, the visible host says nothing about the destination, which is worth knowing before you open it.

Starts with Shown as Fields
https:// Web address Scheme and host shown first, then the path. The link is offered but never opened for you.
WIFI: Wi-Fi network Network name, security type and whether a password is present. The password itself stays masked until you reveal it.
BEGIN:VCARD Contact card Name, organisation, phone numbers, email addresses and website. MECARD: is read the same way.
mailto: Email address The address, plus the subject and body if the code pre-fills them.
tel: Phone number The number as encoded, including the country prefix if there is one.
sms: / SMSTO: Text message The recipient number and the pre-written message.
geo: Location Latitude and longitude as decimal degrees.
BEGIN:VEVENT Calendar event Title, start, end and location from the iCalendar block.
anything else Plain text Shown exactly as encoded, including line breaks.

Alongside the content, the result shows the symbol version and module count, and the number of characters. The version is the physical size of the pattern — version 1 is 21 modules across, version 40 is 177 — and it is the number that decides how large a code has to be printed to stay readable.

Why a code fails to decode

The decoder tries the image twice, once scaled down to a manageable size and once at full resolution, and it tries both normal and inverted contrast. When it still finds nothing, the image itself is nearly always the problem, and it is nearly always one of three things.

Low contrast. The decoder needs dark modules on a light background, cleanly separated. A code laid over a photograph, a purple code on a blue card, or a code that has been through a colour filter blurs the threshold between dark and light until modules start being misread. A light code on a dark background is handled by the inversion attempt, but a code on a busy background is not.

Cropped quiet zone. The blank margin around the pattern is part of the symbol. Screenshots cut tight to the outer modules, and codes printed flush against a frame or a line of text, lose it, and the finder patterns in the corners then run into whatever is next to them.

Blur or too few pixels. A phone photo taken too close, a photo with a reflection across it, or a thumbnail small enough that each module is a pixel or two wide. Each module should be at least three pixels across in the image you load; if a code is tiny in a larger picture, crop to it first.

If your own code is the one refusing to decode, the guide to why a QR code will not scan walks through the same causes from the printing side, and the notes on testing a QR code before you print it explain how to catch them before a batch goes out.

Nothing leaves your browser

The image you load is drawn onto a canvas element inside the page and decoded by a JavaScript library running on your device. There is no upload step, no server-side decoding and no record of what a code contained. That matters more here than for a generator: a QR code you are trying to read may hold a Wi-Fi password, a contact card or a link with a token in it, none of which should pass through a third party just to be looked at.

The same applies to what you do next. The reader never opens a link on its own. For a web address it shows the host, asks you to look at it, and offers a link that opens in a new tab without passing a referrer. The article on QR code security risks covers what to look for in that host before you click.

Common questions

Can I read a QR code from a screenshot?

Yes, and that is the most common use of this page: a code shown on the same screen you would scan it with. Take the screenshot, then paste it here with Ctrl+V or Cmd+V — the reader listens for pasted images, so you do not need to save a file first. Leave a little space around the pattern when you crop; a screenshot cut hard against the outer modules removes the quiet zone the decoder needs.

Why does my phone read this code but the image will not decode?

A phone camera gets dozens of frames a second, with autofocus and exposure adjusting between them, and only needs one of them to work. A single image gets exactly one chance. If a photo fails, the usual culprits are motion blur, a reflection across part of the pattern, or the code being small in the frame so that each module is only a pixel or two wide. Re-take the photo square-on, closer, and without flash, or crop to the code with a margin before loading it.

Does this reader decode EAN-13, Code 128 or Data Matrix as well?

No. It decodes QR codes only; Micro QR is not supported either. Retail barcodes, Code 128 labels, Data Matrix, PDF417 and Aztec use different symbologies and a different decoder. The barcode generator on this site can produce those formats, but reading them from an image is not something this page does.

What does the version number in the result mean?

It is the symbol size, not a software version. QR codes come in 40 versions; version 1 is 21 modules across and every version adds four, up to 177 at version 40. A URL usually lands somewhere between version 3 and 6. The number is useful because it tells you how finely the code has to be printed: more modules in the same physical width means smaller modules and a shorter reliable scanning distance.