QR Code Generator & Scanner
Generate: turn text, URLs, Wi-Fi or contact payloads into a QR code with an optional logo, exported as PNG or SVG. Decode: drop, paste or capture a QR code and read it locally, nothing uploaded.
Turning a URL, Wi-Fi details or a block of text into something scannable runs into two familiar problems: content that is too long or contrast that is too low, producing a code no reader can decode; and a free online service that stores the image on its own server with an expiry date, which is a poor fit for an internal link.
The modules are rendered in your browser, so nothing you type is uploaded. Size, error correction level and foreground and background colors are adjustable, a local image can be embedded in the middle as a logo, and the result exports as a PNG bitmap or a vector SVG. Content is encoded as UTF-8, so non-Latin text and symbols are written correctly.
Switch to the Decode tab and this page doubles as a scanner: drag a QR screenshot into the browser - or just press Ctrl+V after taking one - and the content appears immediately. Links get a direct open button, text is shown in full, and multiple codes in one image are all detected. Decoding runs on your machine either through the native BarcodeDetector or, when the browser lacks it - most desktop Chrome builds on Windows, for example - a built-in JavaScript fallback, so images and camera video never leave your device, and the page states which engine is in use instead of failing silently.
Error correction decides how much damage a code survives
QR codes carry Reed-Solomon error correction, and the four levels recover roughly 7 percent (L), 15 percent (M), 25 percent (Q) and 30 percent (H) of the codewords. The correction data itself occupies space, so a higher level needs more modules for the same content and leaves less usable capacity. The practical default is M for on-screen display and ordinary documents; reach for Q or H when a logo has to go in the middle, or when the code will be printed on a curved, glossy or easily scuffed surface - and scale the code up at the same time, because at a fixed export size the modules shrink and scanning gets harder, not easier.
A center logo costs more than the percentage suggests
Yes, a logo affects scanning, and by more than most people expect. Error correction is distributed across the codewords over the whole symbol, whereas a logo covers one contiguous block, and the two cannot be converted into each other. Even at level H the covered area leans on correction codewords that also have to absorb print defects, glare and a scanner held at an angle, so the headroom is smaller than the 30 percent figure implies. The workable rule is: level H, a logo no wider than 25 percent of the side (about 6 percent of the area), and the remaining margin left for the real world. This tool raises the error correction level to H automatically when a logo is added, says so when the content no longer fits at H, warns when the logo spans too much of the code, and keeps the background color visible around the logo so dark modules do not merge into its edges. Test the export on two or three devices before relying on it; if only one of them reads it, there is no margin left.
Capacity limits and content length
A QR code tops out at version 40, or 177 by 177 modules, and how much fits depends on the encoding mode and the error correction level. In byte mode the limit at level L is about 2953 bytes, and it drops to roughly 2331 bytes at M, 1663 at Q and 1273 at H; numeric content fits far more, around 7089 digits. A CJK character costs 3 bytes in UTF-8, so the usable character count is lower still, and higher correction levels eat further into it. Longer content also means a denser symbol: at a small export size a module can end up barely a pixel wide, which calls for a larger export and a shorter scanning distance.
Colors, contrast and the quiet zone
Scanning depends on the difference in brightness between modules and background, so dark modules on a light background give the most headroom. An inverted code - light modules on a dark background - is unreadable for a lot of scanners. Avoid a transparent background, which turns into an unreadable pattern the moment it sits on a dark page, and avoid bright reds and yellows for the foreground; dark green, navy and near-black hold up better. The quiet zone matters as much: the specification asks for a margin of at least 4 modules on every side, and a code trimmed flush to its edge or overprinted by text is a common reason a scan fails even though the symbol itself is correct.
Pasting beats uploading
The fastest desktop loop is: screenshot tool around the code, Ctrl+V into this page, instant result. Drag-drop and the file picker suit images already saved to disk; the camera mode fits laptop-to-phone link transfer. All three entrances share the same decoder.
Why some images refuse to decode
Recognition has hard physical limits: a code occupying only a few dozen pixels of a large screenshot, heavy blur, glare, or a logo covering one of the three finder corners will all fail. Re-cropping so the code fills at least a quarter of the frame dramatically improves success. The container image can be anything - the code just needs to be visible in it.
Read before you click
A QR code is only an encoding; the payload is where the risk lives. Short links can redirect to phishing pages, and Wi-Fi password codes can carry provisioning commands. Decoded content is shown as plain text and links open only on a second, explicit click - looking before leaping is the core habit of safe scanning.
Frequently asked questions
- Which error correction level should I choose?
- M is the sensible default for screens and short content. Use Q or H when a logo sits in the middle, or when the code goes onto packaging, a curved surface or anything that wears; raise the export size at the same time, since a higher level packs the modules closer and a small code with dense modules is harder to scan, not easier.
- The QR code with a logo will not scan. What should I change?
- Work through three things in order: set error correction to H, shrink the logo to 25 percent of the code width or less (about 6 percent of the area), and export a larger image so every module is bigger. Then test with two or three readers - a phone camera, a scanner app, an older handset. If only one of them succeeds, the margin is gone: shrink the logo further or enlarge the code.
- How much text fits in a QR code?
- It depends on the mode and the error correction level. Version 40 in byte mode holds about 2953 bytes at L, 2331 at M, 1663 at Q and 1273 at H; numeric mode reaches about 7089 digits. A CJK character takes 3 bytes in UTF-8 and correction data takes its share, so expect a few hundred characters rather than thousands, fewer as the level rises.
- Why will the generated code not scan at all?
- The usual four causes are content long enough to make the modules very dense, an export size too small for the symbol, insufficient contrast or an inverted color scheme, and a quiet zone that got cropped or overprinted. If the scanner also guesses the wrong character encoding, non-Latin text shows up as garbage rather than failing outright.
- PNG or SVG - which should I download?
- SVG for print, for scaling up to poster size and for placing in vector documents, because it stays sharp at any size and is usually the smaller file. PNG for web pages, chat apps and the widest compatibility with scanning software. For on-screen use either works; PNG is the safer default.
- Does my browser support decoding?
- Yes - the Decode tab shows a live badge naming the engine in use. Browsers with the native BarcodeDetector (Chrome and Edge on Android, Safari 17+) decode natively; where it is missing - most desktop Chrome builds on Windows, and Firefox - the page automatically falls back to a built-in JavaScript decoder. QR decoding works in every mainstream browser, always locally and offline.
- Are scanned images uploaded?
- No. Generation and decoding both run locally in your browser: decoding happens either through the native BarcodeDetector or the built-in JS fallback, the image never leaves your device, and it works offline. The camera mode is the same - the video stream is processed locally only.
- Can it read barcodes other than QR?
- Where the native BarcodeDetector is available, yes - it also handles EAN, Code 128, PDF417, Aztec and other symbologies, and labels each result with its type. Product barcodes, shipping labels and ISBN codes all work. When the JS fallback is engaged (typical on desktop Windows Chrome), the scanner focuses on QR codes.