webtools

QR Code Generator

Private: the code is drawn on your device, never sent anywhere

Make a QR code for a link, a WiFi network, an email, a phone number or an SMS. It is drawn as you type and downloads as a sharp SVG for print or a PNG at any size. No watermark, no account, and no expiry: the code carries your data directly, so it keeps working forever.

About this QR code generator

A QR code is not a link to a service, it is the data itself, written as squares. That matters more than it sounds: a code made here contains your URL or your WiFi password directly, so it cannot expire, cannot start redirecting somewhere else, and cannot be switched off when somebody's free tier ends. Many "free" generators quietly route your code through their own domain so they can track the scans and charge you later. This one cannot, because there is no server involved at all.

The encoder is written from scratch for this page, so nothing is loaded from anyone else. It supports sizes up to version 10, which is 271 bytes at the lightest error correction: comfortably more than a URL, a WiFi password or a phone number needs. Text longer than that is refused with a message rather than quietly truncated.

Every QR code carries spare data so it still reads when part of it is missing, and the four levels trade that robustness against how much you can fit. The lengths below are what this page will accept at each level, in plain ASCII at version 10, the largest size it makes.

Level Damage tolerated Longest text here Best for
L7%271 charactersA screen, or a long URL
M15%213 charactersAlmost anything printed
Q25%151 charactersLabels that get handled
H30%119 charactersRough or dirty surfaces

The cost is paid in squares rather than in paper. A 79 character link comes out as a 37 by 37 symbol at L and at M, 45 by 45 at Q and 49 by 49 at H, and printing all four the same width makes each square in the H version about three quarters the size of the M one. That is why M is the sensible default: it survives a scuff, and it keeps the squares large enough for a phone held at arm's length. For a product label that has to scan at a till, a QR code is the wrong symbol altogether: that is what the barcode generator is for.

Correctness here is not a matter of opinion, so it is tested rather than assumed. Every symbol this page produces is compared module for module against libqrencode, the reference implementation, and then rendered and read back by zbar, a real scanner, across four error correction levels and every size from version 1 to version 10. The error correction maths is checked separately: a valid Reed-Solomon codeword must divide exactly by its generator polynomial, and the test evaluates it at each root to prove it does.

How to make a QR code

  1. Pick what the code should hold. Link or text covers most uses.
  2. Fill in the fields. The code redraws on every keystroke.
  3. Leave Error correction on M unless the code will be printed small or somewhere it will get scuffed, in which case use Q or H.
  4. Point your camera at the screen now and check it does what you expect, before you print a thousand of them.
  5. Download the SVG for anything printed, because it stays sharp at any size, or a PNG for a screen or a document.

Common questions about QR codes

Will this code expire or stop working?

No. The data is inside the code, not on a server, so there is nothing to expire and nobody who can switch it off. That is also why it cannot be edited afterwards: change the link and you need a new code. Generators that offer editable codes are pointing at their own domain, which is what gives them the power to redirect, meter or disable your code later.

Is my WiFi password sent anywhere?

No. The whole code is built by JavaScript on this page, so the password never leaves your device. Do remember what the finished code is: anyone who can photograph it can join your network, so a code stuck on a cafe wall is a password on a wall.

Which error correction level should I choose?

M is right for almost everything: about 15 percent of the code can be damaged and it still reads. L makes the smallest code and suits a clean screen. Q and H survive 25 and 30 percent damage, which is worth it for a sticker on a machine, a label that will be handled, or a code printed over a background. Stronger correction means more squares, so the code gets denser at the same physical size.

Why does it refuse very long text?

Because the sizes this page supports hold up to 271 bytes, and beyond that a code would need to be version 11 or larger. Rather than produce something untested, it says so. If you have a long message, put it on a page and encode the link: a dense code that a phone struggles to read is worse than a short one that works first time.

SVG or PNG?

SVG for anything that will be printed, put in a document or scaled, because it is made of shapes and stays perfectly sharp at any size. PNG for a screen, a slide or a system that will not take an SVG. The PNG here is drawn square by square rather than by scaling an image, so the edges stay hard, which is exactly what a scanner wants.

How much quiet space does it need around it?

Four modules of blank space on every side, which both downloads already include. It is the most common reason a printed code fails: a designer crops to the edge of the squares, or puts the code on a busy photograph, and scanners can no longer find the edges. Leave the white border alone.

Next

Related tools

All Generators