Free Custom QR Code Generator
Create custom QR codes for URLs, WiFi networks, Emails, and text.
Create Custom QR Code
Generate QR codes for URLs, WiFi, text, and more
How to generate a QR code — 3 steps
- 1
Enter what it should contain
A web address, some text, contact details, or Wi-Fi credentials. The code is generated in your browser, so what you encode is not sent anywhere.
- 2
Adjust the appearance
Set the colours and add a logo if you want one. Keep the code substantially darker than its background — scanners read contrast, not colour.
- 3
Download and test it
Save the image, then scan the finished file with a phone before you print or publish it. Testing takes ten seconds and catches everything.
Error correction is what lets a code survive the real world
Every QR code carries redundant data so it can still be read when part of it is obscured. There are four levels: L recovers from about 7% damage, M about 15%, Q about 25%, and H about 30%. Higher levels store the same content in a denser pattern, so the code gains more modules but becomes far more tolerant of dirt, creases, glare, and printing imperfections.
This is what makes a centred logo possible. A logo works by covering part of the code, and the error correction reconstructs what is underneath — which is why a code with a logo needs level H, and why the logo must stay small, around 20–25% of the width at most. Push beyond what the correction level can recover and the code fails, often intermittently: fine on a good phone in good light, unreadable on an older camera in a dim room.
For anything printed on paper, going out into the world, or applied to a surface that will be handled, choose a higher level than feels necessary. A code on a menu, a parcel, a shop window, or a poster accumulates fingerprints, scuffs, and reflections, and the redundancy is what keeps it working. Codes shown only on screen can use a lower level safely.
Size, quiet zone, and contrast
Physical size follows scanning distance, and there is a simple ratio that works: the code should be roughly a tenth of the distance it will be scanned from. Read at 30cm on a table, that means around 3cm across — and 2cm is a sensible floor for print regardless. A code on a poster read from three metres away needs to be about 30cm wide, which is much larger than most people expect and is the usual reason codes on signage go unscanned.
The quiet zone is the margin of empty space around the code, and it is not decorative. Scanners use it to find the code's boundary, and the specification calls for a clear margin of at least four modules on every side. Codes placed tight against text, an image edge, or a coloured block frequently fail for this reason alone, and the fix costs nothing but layout space.
Contrast is the last requirement and the one that styling most often breaks. The pattern must be significantly darker than its background — dark on light, and never the reverse, because many scanners will not read an inverted code. Pale colours, gradients across the pattern, and photographs behind the code all reduce the margin the scanner has to work with. If you want the code to carry brand colours, use a dark shade of them on white, and test on more than one phone before committing it to print.
Your files never leave your device
The code is generated entirely in your browser, so URLs, contact details, and Wi-Fi passwords you encode are never transmitted or logged.
Most online PDF sites upload your document to their servers, process it there, and keep a copy for minutes, hours, or longer. PilotPDF works differently: the page downloads a small processing engine into your browser, and your file is opened and edited in your device's memory using WebAssembly. Nothing is transmitted, so there is nothing for a server to store, leak, or scan. You can even disconnect from the internet after the page loads and the tool keeps working.
Read more about how this works in our privacy-by-design explainer.