Herramientas · Texto · Generador de códigos QR · Guías · How to Make a QR Code and Pick an Error-Correction Level That Actually Scans
How to Make a QR Code and Pick an Error-Correction Level That Actually Scans
Here's the actual process for making a QR code with QR code generator, and what the error-correction setting actually trades off.
Step 1 - type or paste the content
A URL, plain text, an email address, anything up to 2,953 characters of ordinary text at the lowest error-correction level (4,296 only for digits-and-capitals-only text, and less at higher levels, since more of the code gets used for redundancy at those). The QR code appears the instant you start typing and updates on every keystroke - there's no separate generate button, because there's no discrete action to trigger; it's a live function of whatever's currently in the box.
Step 2 - pick colors that will actually scan
The foreground and background can be any colors, not just black and white - useful for matching a brand's palette. The tool checks the contrast between the two as you pick them and warns you if the pair is too close together to scan reliably. A QR scanner reads by distinguishing dark modules from light ones; low contrast between the two colors is the single most common reason a "correctly encoded" code fails to scan in practice.
Step 3 - choose an error-correction level
Four levels, labeled by how much of the code can be damaged, covered, or dirty and still scan: L (about 7% tolerance, the smallest resulting code), M (about 15%, the default and a reasonable middle ground), Q (about 25%), and H (about 30%, the most damage-resistant, at the cost of a denser pattern). This is the one real tradeoff in the whole tool: more error-correction redundancy means the code tolerates more real-world damage - a coffee ring, a fold crease, a logo overlaid in the middle - but it also makes the pattern itself denser and physically smaller-detailed at a given print size, which can make it harder for some cameras to resolve at a distance. For a code that will only ever be viewed on a clean screen, L is fine. For anything printed and handled - a flyer that'll get folded, a sticker on a product - M or higher earns its keep.
Step 4 - download
Set a download size from 200 to 1,000 pixels (the on-page preview always renders at a fixed size regardless - the download size is generated separately, at click time, so a large download doesn't require a large, awkward preview box). Download as PNG for a fixed-resolution image that works everywhere, or SVG for a vector file that scales to any size - a banner or a large-format poster - without ever going soft or pixelated. This guide covers picking between the two directly.
If the content is too long
Past roughly 2,953 characters of ordinary text (fewer at higher error-correction levels, since a stricter setting reserves more of the code's total capacity for redundancy rather than content) the tool can't fit the content into a valid QR code and says so plainly, rather than producing a broken one. Long text is rarely what belongs in a QR code anyway - the strength of the format is a short destination a camera can resolve quickly, not a full paragraph.
The code updates as you type, not after you finish
There's a short 150-millisecond pause built into the live re-render, so the code doesn't try to redraw itself on every single keystroke while you're still mid-word - it waits for a brief pause in typing, then updates. That's short enough to feel instantaneous but long enough to avoid needless redraw work while a longer piece of text is still being typed out. The same debounce applies to every option change - a color pick, a slider drag on error-correction or download size - so adjusting several settings in quick succession feels smooth rather than stuttering through a redraw after each one.
Nothing here goes to a server
Everything you type stays in the browser tab, the whole time - the code is drawn on a canvas locally, with no library call that sends the content anywhere. There's no account, no watermark, and no expiry, because the code encodes exactly what you typed, directly, with nothing dynamic sitting behind it.
For why a QR code beats a printed link in the first place, see the background. Or make a QR code now.