When to use it
Moving a piece of text from a screen to a phone, or printing a link on paper — a QR code is the easiest way. Equipment asset labels, trade-show landing pages, manual links on packaging: what they have in common is that the people who want to look will not type it by hand and can only scan. When the content involves an internal ticket number or a temporary link with a passcode, this page is more reassuring: encoding is done locally in your browser, the content never goes over the network, and it does not stay in anyone's server logs.
The reverse use case is common too: you receive a screenshot of a QR code and want to know where it points before deciding whether to tap it. Drag the image into the recognition area below to read the original text; the image is likewise decoded only locally. Recognition uses the browser's built-in barcode interface, which Chrome and Edge have and Safari currently does not, so on an unsupported browser you have to switch to another one.
How to choose the settings
- Error-correction level:L tolerates about 7% damage, M about 15%, Q about 25%, H about 30%. Do not default to H: stickers and equipment labels get worn and dirty, so use Q or H; L or M is enough for something shown briefly on screen; for printed posters use M or Q. Each step up the levels adds 10%–30% more modules for the same content, making the symbol larger and actually harder to scan at small sizes.
- Versions and module counts:Version 1 is 21×21 modules, each version up adds 4 to the edge length, and version 40 is 177×177. Every 10 extra characters in the URL pushes it up roughly one or two versions: a 30-character short link lands on version 3–4, while a two-hundred-character description climbs past version 15. The denser the modules, the harder it is for a camera to tell black from white — that is the root of why long content is hard to scan.
- Export size:256 px suits small web images, 512 px is the common value for mobile, and choose 1024 or 2048 for print. The size is only the canvas limit; the actual edge length is rounded down to a whole multiple of the module count: with a four-module quiet zone there are 41 modules in total, so at 512 px each module is 12 px and the output is 492 px. Leftover pixels are better dropped than letting a module occupy 12.5 px, which blurs to grey after half-pixel scaling.
- Print size:A module edge length of at least 0.4 mm is recommended, and 0.3 mm is possible for stickers and business cards scanned at close range. For long-range scanning, estimate the module edge length as scan distance ÷ 10, so scanning from 3 metres needs about 3 mm. At 0.4 mm, a code with 41 modules is about 16.4 mm square.
- Colour:A dark code on a light background is steadiest, and the brightness difference between foreground and background must be wide. Doing it the other way (a light code on a dark background) works on most new phones but fails on older models and some scanners. Combinations that look different but are close in brightness, such as sky blue on light blue or orange on red, are the riskiest. The quiet zone must keep the background colour; do not add borders or patterns inside it.
Compared with other approaches
Compared with online QR code services, most of them offer short links, scan statistics and the ability to change the target address at any time, none of which this page has: what you export is a static code, changing the content means regenerating it, and you cannot see who scanned it. What you get in return is no sign-up and no usage limits, and the link points exactly where it points.
Compared with software such as Photoshop and Illustrator, professional tools can make decorative codes with dots, gradients and an embedded logo, and can control print bleed. This page only outputs regular square modules and can change colour at most; it cannot do those flourishes. Decoration itself eats into the error-correction margin, and heavily designed codes often fail to scan in low light, so if you only need something that works, a regular square code is safer.
The recognition side is weaker: it only recognises QR codes, not one-dimensional barcodes or Data Matrix, and it does not adjust live in the viewfinder like the system camera. Its use is when you already have an image in hand and do not want to aim again.
Additional Q&A
Why can a higher error-correction level make the code unscannable?
A higher level consumes data capacity, so the encoder has to jump to a higher version and the modules get more numerous and smaller. In small print or on screen, the loss from smaller modules often outweighs the gain in error correction, so higher is not always better.
How long does content have to be before shortening it is worth considering?
In practice, past 150 characters or version 10 you should watch out: module density goes up, and a little distance or slight defocus makes it unscannable. Plain text can be written freely, but keep URL parameters minimal — that helps more than raising the error-correction level.
Does exporting 2048 px always mean a sharper image?
No. After the edge length is rounded to whole modules the remainder is dropped, so 256 px and 2048 px are the same symbol on screen. The value of 2048 px is only for print and later enlargement: bigger file, slower upload, while 512 px is enough for web display.
What are the common reasons recognition fails?
Common ones are: the image is blurry or shot at an angle causing perspective distortion, the quiet zone around the code has been cropped away, and screen glare and moiré flatten black and white into grey. You can crop the extra background, straighten the code, and try a sharply focused image instead; error correction cannot restore what is missing from the image.