What actually gets encoded
A QR code is not a link to a link. It is a grid that literally spells out the characters you gave it, which a scanner reads back and hands to the phone. If you encode a URL, the phone offers to open that URL. If you encode a sentence, the phone shows the sentence.
That plainness is worth stating because a large share of free QR generators do not work this way. They encode a short address on their own domain, which redirects to yours. The code then depends on that company continuing to exist and continuing to point the redirect where you want it, and every scan passes through their logs. Codes printed on menus and flyers have gone dead exactly this way.
Nothing here sits in the middle. The grid is computed in your own browser from the exact string in the box, and the PNG is assembled locally. Your text is not sent anywhere because there is nowhere for it to be sent.
From a URL to a downloaded PNG
- Paste your URL or text into the box. The action button stays disabled while the box is empty.
- Choose an Error correction level. Medium (~15% recovery, default) is the sensible starting point.
- Set Image size (px) anywhere from 100 to 1000. The default of 300 is fine on screen; go higher for print.
- Click QR Code Generator.
- The code appears as a preview image. Scan it with your own phone before you commit it to anything printed.
- Click Download qr-code.png to save it, then rename the file to something meaningful.
- Generate another clears both the box and the preview for the next code.
The size you type is the width of the finished PNG in pixels, exactly, and the image is square. Asking for 1000 gives you a 1000 by 1000 file.
Error correction is capacity you spend on damage
Every QR code carries redundant data so a scanner can recover from dirt, creases and glare. The four levels are simply how much of the grid is given over to that redundancy: roughly seven, fifteen, twenty-five and thirty percent.
The part people miss is that redundancy is not free. Raising the level does not add resilience to the same grid; it makes the grid bigger for the same message, because the recovery data has to go somewhere. Encoding a long URL at the highest level can push the code into a much denser version than the same URL at the lowest, and a denser code printed at the same physical size is harder to scan, not easier.
The one case where High genuinely earns its keep is a logo placed over the centre of the code. That is deliberate damage, and about thirty percent recovery is what lets the scanner rebuild the covered modules. For a code that will live on a clean screen or a well-printed card, Medium is enough.
Why long links scan badly
The grid grows in fixed steps as the message gets longer. A twenty character link needs a small grid; add a set of campaign parameters and you may double the number of modules across.
Because the pixel size stays whatever you asked for, doubling the module count halves the physical size of each module. On a phone camera at arm’s length that is the difference between an instant read and three seconds of hunting. The fix is almost never a bigger image; it is a shorter string. Strip the parameters you do not need, or shorten the link before encoding.
If your campaign parameters are the point, build them deliberately with UTM Builder so you keep only the ones you will actually read in a report, then encode the result.
Related codes and the batch case
Some payloads have a required syntax that is easy to get subtly wrong by hand. A network credential is one: WiFi QR Code Generator writes the security type and hidden-network flag into the correct format for you. A contact card is another, and vCard QR Code Generator handles that shape.
To produce many codes at once from a list rather than one at a time, use Bulk QR Code Generator. To check what an existing code contains before you trust it, QR Code Reader decodes a saved photo or screenshot. And for retail-style linear codes rather than square ones, Barcode Generator covers Code 128, EAN-13, UPC-A, Code 39 and ITF, with a vector option. The wider set is on the generators hub.

