Tool

QR code scanner

Point your camera at a code, or upload an image of one, to see exactly what it contains. This exists for one reason: to check a code works before you print a thousand of them. Everything happens in your browser — the image and the camera feed are never uploaded to us.

Last reviewed

Scan a code

Choose “Start camera” to scan with your camera, or upload an image of a code. Nothing leaves your device.

The decoded content will appear here, along with what kind of data it looks like and whether it is safe to open.

Why test a code before printing it

A QR code either works or it does not, and the failure is invisible until someone tries to scan it. By then the code is on a menu, a poster, a product label or a thousand business cards. A handful of checks catch almost every real failure:

  • Does it resolve to the right thing? A typo in a URL is preserved perfectly by the code. Scanning your own code is the only way to confirm the destination, and it is how you discover that the link points at a staging site or a page that 404s.
  • Does it scan from the real distance? Hold the phone at the distance a customer will, not pressed against the screen. If it only scans up close on a bright monitor, the printed version will be worse.
  • Does it scan in the real lighting? Glossy laminate, reflections from a window and dim rooms all reduce the contrast a scanner needs. Test where the code will live.
  • Is it too dense? A long tracking URL produces a finer grid that needs a larger print for the same distance. If the preview looks busy, that is a warning, not just an aesthetic one.

Our size calculator handles the sizing question by showing the printed width your content needs. This page answers the other half: what the code actually says.

How this scanner works, and what it does not do

Live scanning uses the camera through your browser and decodes each frame locally. Image scanning draws your file onto a canvas and decodes that. In both cases the pixels stay in the page: there is no upload, no server-side processing and no record of what you scanned. That is a deliberate choice — the codes people most want to check are often the ones they should not have to send to a stranger, such as a Wi-Fi code containing a password.

Two honest limitations. Camera scanning needs a secure connection (https, or localhost) because browsers only expose the camera in a secure context; if you are on plain http use the image upload instead. And a scanner can only tell you what a code contains — it cannot tell you whether the destination is trustworthy. A code pointing at a convincing copy of a login page is a code that scans perfectly.

If your code will not scan

If this page cannot read your code either, the problem is in the code rather than the phone. The usual causes, roughly in order of frequency:

  1. Too small for the distance. The single most common cause. Check the numbers with the size calculator.
  2. The quiet zone was trimmed. The blank margin around the symbol is what lets a camera find its edges. A code cropped tight to its border, or placed against a busy background, often fails.
  3. Low contrast or inverted colours. Light modules on a dark background defeat a meaningful share of scanners. Dark on light is the reliable combination.
  4. Printed from a PNG that was too small. Upscaling a raster file blurs the module edges. Use SVG for print.
  5. Damage or reflection. A crease, a scratch or a glossy surface over the code. This is what error correction is for, and why H is worth choosing if the surface is unforgiving.

The QR code guide covers these in more detail, including what each error correction level actually buys you.

Frequently asked questions

Is it safe to scan a QR code?

Scanning is safe; acting on the result is where care is needed. A QR code is only a way of encoding text, so the risk is the same as clicking a link a stranger sent you. Before you open anything, read the decoded content this page shows you — you can see the full URL rather than trusting a shortened one. Be wary of codes that lead to a login page asking for credentials, and of any code stuck over the top of an existing one, which is a common way to redirect people to a fraudulent site.

Can I scan a code from a screenshot or a photo?

Yes — that is what the image upload is for, and it is usually more reliable than the camera. It is also the practical way to check a code that someone sent you, or one you have already printed and photographed, and it works on browsers and connections where the camera is unavailable. For best results use a straight-on, well-lit photo that includes the whole code and its surrounding margin.

Why does the camera not work?

Browsers only allow camera access in a secure context, which means an https address or localhost. On plain http the camera is blocked by the browser itself and no site can work around it. The other possibility is that permission was denied previously: the browser remembers that choice, and you will need to reset it in the site settings for this page. Uploading an image always works as a fallback.

Does this work with the codes I made on this site?

Yes, and it is the recommended final check. Generate the code, download it, then upload that file here to confirm it decodes to exactly the content you intended. Doing this catches the two mistakes that are otherwise invisible until print: a destination that is not quite right, and content so long that the code has become denser than the space you have allowed for it.

Do you store or log what I scan?

No. The decoding runs in your browser, so there is no request to our servers carrying the code's content and nothing for us to record. This is a deliberate design choice rather than a policy promise: there is genuinely no code path that sends your camera frames or uploaded images anywhere. See the Privacy Policy for the full picture of what the site does store.