QR Code Generator
Create permanent, high-quality QR codes for free.
About Custom QR Codes Instantly
Type into the content box and the code below it redraws on every keystroke. What you get is a static QR code: your text is encoded into the black-and-white pattern itself, so scanning it reads your data directly off the image without contacting this site. Set the size and the two colours, press Download, and you have a PNG that will keep working indefinitely.
Static versus dynamic, and why it matters
Most sites that ask you to sign up produce dynamic codes. Those encode a short link on the provider's domain, which then redirects to your real destination. The advantage is real — you can change where a printed code points, and you get scan analytics. The cost is a permanent dependency: the code stops working if that provider disappears, moves the feature behind a paywall, or lets the trial lapse, and every scan passes through infrastructure you do not control. A static code has neither the flexibility nor the failure mode. If the destination might change, encode a URL on your own domain and do the redirecting yourself; you get editability without handing anyone else the keys.
What the pattern is actually doing
The grid is made of modules — the individual squares. Three large concentric squares in the corners let a camera find and orient the code at any angle, and the rest carries your data plus Reed–Solomon error-correction blocks. How many modules there are depends on how much you encode: a short link needs a 21 × 21 grid, while the 2331-byte maximum needs 177 × 177. That growth is the practical limit rather than the byte count, because every extra module makes each square smaller at the same printed size, and a camera has to resolve all of them.
Error correction is set to the medium level, which lets a scanner recover from roughly 15% of the code being damaged or obscured. That is why a slightly creased flyer still scans, and why a small logo dropped over the centre usually survives. It also means the code contains meaningfully more than your raw data — encoding less text is the single most effective way to get a cleaner, more reliable code.
Choosing a size that scans
The width slider covers 100 to 1000 pixels in 50-pixel steps, and the right choice depends on the density of your particular code rather than on a universal number. Divide the pixel width by the module count plus the four modules of quiet zone the generator adds — two on each side — and aim for at least 4 pixels per module. A short URL at 300 pixels clears that easily; the same 300 pixels holding 2000 characters gives under 2 pixels per module and will photograph as mush. When in doubt export at 1000 and scale down in your layout, since discarding pixels is safe and inventing them is not.
Encoding something other than a link
The box takes any text, and phone cameras recognise several conventional prefixes. A bare https:// URL opens a browser; mailto: starts an email; tel: dials; WIFI:T:WPA;S:NetworkName;P:password;; offers to join a network; and a full vCard block saves a contact. There is no form to fill in for these — you type the string yourself, which also means nothing validates it, so test the finished code with an actual phone before you print a thousand of them.
Privacy, and the limits of this page
Generation happens entirely in your browser: the encoder is a JavaScript library, the preview is an in-memory data URI, and no request is made when you type. Nothing is logged, so there are also no scan statistics and no saved history. What the page does not offer is a logo overlay, an SVG or PDF export, a batch mode, an error-correction selector or a Wi-Fi form. If you need vector output for large-format print, or thousands of codes from a spreadsheet, this is the point to reach for a dedicated generator instead.
Static Codes That Never Expire
The data is encoded into the image itself rather than pointing at a redirect we host. Nothing here can be switched off, rate-limited or turned into a tracking hop later, because there is no account and no server in the loop at all.
Redraws As You Type
Every keystroke and every slider move regenerates the code, so you see immediately when adding one more query parameter pushes it to a denser grid. Clearing the box clears the preview instead of leaving a stale code downloadable.
PNG From 100 To 1000 Pixels
Pick the output width in 50-pixel steps and set the foreground and background colours with your system picker. Download saves a plain PNG with no watermark, usable commercially without attribution.
Frequently Asked Questions
Do these QR codes expire?
No, and they cannot. The content is encoded into the pattern itself, so the image is self-contained — scanning it does not contact this site or anyone else. Codes that expire are dynamic ones, which really encode a short link owned by the provider and forward it to your destination. Those can be edited after printing, which is genuinely useful, but they stop working the day that provider shuts the redirect off or starts charging.
How much data fits in one code?
2331 bytes at most. Past that the generator reports that the data is too big rather than silently truncating. Long before you reach the ceiling the code becomes hard to scan: the grid grows from 21 modules across for a short URL to 177 at the maximum, and each of those tiny squares has to be resolvable by the camera. A link of 40 to 80 characters is a comfortable target, and shortening a long URL is almost always better than encoding it whole.
What size should I export for print?
Work backwards from the module size. The generator adds a 2-module quiet zone, so a 177-module code occupies 181 modules of width. At the 300-pixel default that is about 1.7 pixels per module, which will look soft and may not scan; at 1000 pixels it is roughly 5.5, which is fine. For a short URL the grid is far smaller and 300 pixels is plenty. As a rule of thumb, aim for at least 4 pixels per module on screen, and for print keep the finished code no smaller than about 2 cm square for a close-range scan.
Can I invert the colours or use my brand palette?
You can set both colours to anything, but scanners expect a dark pattern on a light background and many will refuse an inverted code. Keep strong contrast — a mid-grey on white fails in poor light even though it looks fine on screen — and avoid tinting the background at all if the code will be printed on coloured stock, since the ink and the paper both shift the effective contrast.
Why is the quiet zone smaller than the standard?
The margin here is fixed at 2 modules, while the specification recommends 4. Two is enough for phone cameras in practice and keeps the image tighter, but a strict industrial scanner may want the full border. If you are placing the code in a busy layout, leave clear white space around it in your design rather than relying on the built-in margin.
How much damage can a code survive?
Roughly 15% of it. The generator uses medium error correction, which is the usual default and the best balance for a printed link: it tolerates a smudge, a fold or a small logo overlaid in the centre, without inflating the grid the way the highest level does. There is no setting to change it on this page, so if you need a code that survives heavy wear, generate it with a tool that exposes the error-correction level and choose the high setting.
Can I make a Wi-Fi, contact or payment code?
Yes, by typing the right string — there is no wizard, but the formats are just text. Wi-Fi credentials use WIFI:T:WPA;S:NetworkName;P:password;; and a contact card is a full vCard block. Because the code is static, remember that anyone who photographs it has the password or the details in plain text; a Wi-Fi code taped to a wall is exactly as public as writing the password on the wall.
Is my content sent anywhere?
No. The encoder is a JavaScript library running in this tab, and the preview is a data URI built in memory, so the text you type never becomes a network request. You can confirm it in the Network panel of your browser tools: type into the box and watch that nothing fires. Nothing is stored either, so reloading the page loses whatever you had.
Can I use the codes commercially?
Yes. The output is an ordinary PNG with no watermark, no attribution requirement and no licence attached — put it on business cards, packaging, signage or products. Since there is no account and no analytics, there is also no scan count; if you need to know how many people scanned it, encode a URL you control and read the traffic at your own end.