Decoding happens entirely in this page: images and camera frames never leave your device. You can also drop or paste a screenshot straight onto this box.
Point your camera at a code, or drop in a photo or screenshot, and this scanner decodes it right here in your browser. You get three things: the exact contents the code carries, the measurements that explain how hard it is to scan (QR version, module count, how many bytes the payload spends), and — if the code holds a link — a one-tap way to replace it with a short, printable code that is free to make.
Every number on this page is computed from a real encode of your payload with the same QR library this site ships. Nothing is estimated and nothing is uploaded: decoding and measuring both happen on your device.
A QR code's version is its size class: version 1 is 21×21 modules, and each step up adds four modules a side. More payload means a higher version, and at any fixed printed size a higher version means smaller squares for the camera to resolve. The error-correction level trades capacity against resilience: level H resists the most damage but fits the least data, so the same link can sit two or three versions apart depending on the level its maker chose.
What no scanner can tell you from the payload alone is whether one particular print will read — that depends on print quality, contrast, the quiet zone and the camera. For those, read why is my QR code not scanning and what to do when a QR code won't scan when printed.
When the code holds a link, the payload is usually the link: UTM parameters, redirect chains and deep paths push a code to version 6, 8 and beyond. A short address takes a version 2 code — under half the modules a side — which is why the scanner offers to make you an editable short code pointing wherever the long link went. The artwork gets simpler, and the destination stays changeable without reprinting. The first three are free forever.
If your code decodes here only after inverting the image — light modules on a dark background — the scanner says so plainly. Some phones read inverted codes and some never will, which makes inversion a coin toss on exactly the phones you cannot test. Dark modules on a light background is the safe orientation.
Printing on a card or a label?
Set the printed width below the measurements and read the module size it produces. The smaller each module gets, the less print and capture tolerance the code has left; if the number is getting close to the thickness of a hair, a shorter payload is the only lever left.
Photos, camera frames and pasted contents are decoded and measured entirely in your browser — there is no upload step to trust. The one thing that reaches our servers is a short code you explicitly choose to create, through the same sign-in the generator uses.