Text and data

Make a QR code

A QR code is a bag of bytes, and whether a phone offers to join your Wi-Fi or shows a line of punctuation depends entirely on how those bytes are written. This page writes them, shows you exactly what it wrote, and gives you the picture as a PNG and as an SVG.

On this device

What goes in the code

Choose what you have and fill in only its fields. Nothing is uploaded: the code is encoded and drawn by this page, on this device.

The last three are conventions about how the text is written. Choosing the right one is what makes a phone offer to join a network rather than show a line of punctuation.

https:// is added if you leave it out — a bare address is text rather than a link, and a phone shows it with nothing to tap.

Correction and sizeCorrection M · about 1024 px
Correction and size

How much of the code can be damaged or covered and still read. Raise it if a logo will sit over the middle or the code will be handled; lower it for the smallest possible square.

A target rather than an exact number: a QR code has to be a whole number of pixels per module, so the nearest size that divides cleanly is used and the real one is reported. The SVG is sharp at any size.

What this tool does, exactly

What it makes
One QR code, as a PNG at the size you choose and as an SVG that stays sharp at any size. Both are the same drawing: the vector file is written from the same module lattice as the pixels, not re-rendered by something else, so the two cannot disagree at the edges.
Four kinds of content
A link, a Wi-Fi network, a contact card, or any text at all. The last three are conventions about how the bytes are written — WIFI:T:WPA;S:…, and a vCard — and each has escaping rules that are easy to get silently wrong. A password containing a semicolon, written straight in, produces a code that scans perfectly and joins nothing.
What error correction is for
A QR code carries spare copies of its own data so it survives being scratched, folded or partly covered. Level L tolerates about 7% damage and makes the smallest code; M is about 15% and is the default; Q is about 25%; H is about 30% and is the one to use if a logo will be placed over the middle or the code will be printed on something that gets handled.
What it checks
Before you are offered anything, both files are opened again from their own bytes and compared with the lattice that was encoded, module by module. If a single module disagreed there would be no download. That proves the files match the code that was made; it is not a claim that any particular scanner will like your printing.
The character set, stated honestly
Text that is not plain ASCII is encoded as UTF-8, and the code carries no ECI header announcing that, because the encoder does not write one. Current iPhone and Android cameras read it correctly. An older dedicated hardware scanner may not, so keep an accented name out of a code that has to work on a warehouse gun.

About this tool

Does the QR code expire, or stop working later?

No. What you get is an image containing your content directly, so there is nothing to expire and no account behind it. That is worth knowing because many free QR generators produce a code pointing at their own short link — which they can then track, rate-limit or switch off. Nothing here goes through a redirect: scan the code and you get exactly the text you typed.

PNG or SVG?

SVG if it is going into a design, a document or anything that will be printed, because it stays sharp at any size — a QR code enlarged from pixels acquires soft edges, and soft edges are what a scanner has to fight through. PNG when you need an ordinary image file: for a message, a slide or a website. Both files here are drawn from the same lattice, so they carry the same code.

Can I put my logo in the middle?

Yes, in whatever you place the image into, and choose error correction H before you do. The correction level is exactly what makes covering part of a code survivable, and H tolerates roughly 30% damage. Keep the covering patch well under that, leave the three big corner squares alone entirely, and test the result with a phone before printing a thousand of them.

Why is my Wi-Fi code not joining the network?

Look at the exact text shown beside the picture — that is what the scanner reads. The three usual causes are visible there: a network set to WPA with no password, a network name that differs from the real one by a space or a capital letter, and a password containing a semicolon, a comma, a colon, a quote or a backslash. This tool escapes those characters, which is precisely the step a hand-written payload misses.

How much can a QR code hold?

Up to about 2,900 bytes at the lowest error correction, and far less as you raise it — but the practical answer is much smaller. Every extra byte adds modules, and a code with more modules has to be printed larger or scanned closer. Put a link in the code and the content behind the link; a whole paragraph encoded directly produces a dense square that a phone struggles to read across a room.

Is my content uploaded?

No. This site is static files and there is no server to send anything to: the encoding, the drawing and the checking all happen in this browser tab. That matters most for the two kinds of content people paste in without thinking — a Wi-Fi password and a personal phone number. Open your network panel, or disconnect after the page has loaded, and the tool keeps working.

More text and data tools · All 31 · How they work