QR code generator

SecurityCreate QR codes for links, wifi or a contact card, with an optional centre logo. Each code is decoded in your browser to prove it scans; nothing is uploaded.

Your codes are built and checked on this device and never leave it. Nothing you open is ever uploaded. There is no server to upload it to.

What this does

Type a link, a wifi network or a contact card, and the code appears as you type, already checked. Add a centre logo, either an image you upload or a short text badge, and choose your colours. When the line under the preview says verified, the image on screen has been decoded, in your browser, back to exactly what you entered, and the PNG and SVG downloads unlock.

Everything happens on your device. That is worth dwelling on for one specific reason: the things people put into QR codes, wifi passwords, personal phone numbers, home addresses, are exactly the things not to type into a stranger’s server. Most sites offering logo placement render the code server-side, which means they receive the secret to draw it. This page makes no such request, and the FAQ explains how to watch the network panel and confirm that.

How to use it

  1. Pick what to encode: a URL or any text, a wifi network, or a contact card. Wifi codes join the network when scanned; contact codes offer to save the person to the address book.
  2. Optionally add a centre logo: upload a PNG, JPEG, WebP or SVG, or give it a badge, up to three characters typed or an emoji from the picker. Size it with the slider and watch the budget line update.
  3. Check the verification line. Green means the exact image on screen decoded back to your exact input; downloads are enabled only in that state.
  4. Download the PNG for screens and ordinary prints, or the SVG for large-format printing and design work.

How a logo can sit on a working code

A QR code is mostly redundancy. Reed-Solomon error correction, the same family of mathematics that let scratched CDs keep playing, adds recovery information so a reader can reconstruct modules it cannot see. How much is recoverable is the error-correction level: L rebuilds up to 7% of the codewords, M 15%, Q 25% and H 30%.

A centre logo is damage you chose. The tool places it dead centre because the corners are structural: the three large squares are how a reader finds and orients the code at all, and no amount of error correction rescues a covered finder pattern. With the logo on, the level locks to H and the readout under the preview does the honest arithmetic, quoting how many modules the logo touches against the 30% that level H can rebuild. The module count deliberately overstates the damage, counting every partially covered square as fully lost, because a safety readout should err in the direction that protects you.

The size slider stops at 35% of the code’s width, and that number was measured rather than chosen. In this tool’s own test suite, cleanly rendered codes keep decoding with centre logos up to about 45% of width across short URLs, wifi credentials and full contact cards; the first failures appear between 45% and 47.5%. The gap between the slider’s 35% and the measured cliff is deliberately left for everything a test cannot simulate: camera blur, glare, print wear and reading at an angle.

What “verified” means, and what it does not

After every change, the tool hands the preview’s actual pixels to an independent decoder running in the same tab and requires the decoded string to match your input character for character. The check is deliberately strict: it refuses to try the colour-inverted image, because plenty of real scanners will not either, and a code that only scans inverted should fail here rather than at the venue.

Passing means the image is correct: encoded properly, quiet zone intact, logo within budget, colours readable. It does not mean every camera in every condition will read a laminated copy through glare at two metres. Physics still applies; the margin the slider keeps back is for physics.

Wifi codes that actually join the network

The most common way wifi QR codes fail has nothing to do with scanning: the password contains a semicolon, a comma or a quote, the generator does not escape it, and the phone joins nothing while the guests hand their phones around. The wifi format is a small convention with five characters that carry structure, and this tool escapes all of them, which is tested against deliberately horrible network names. If your password is full of punctuation, that is fine; it is the generators that are usually wrong.

Hidden networks are supported with a checkbox, open networks omit the password field entirely, and the code never contains anything you did not type into the form.

Limitations

Print size is your responsibility. A contact card at level H is a dense code. Densely packed modules need physical size: as a rule of thumb, if a printed code looks like static from arm’s length, print it larger or encode less.

The badge is three characters, counted as you see them. An emoji counts as one character however many bytes it spends, and whatever you choose is shrunk to fit its tile, so three wide characters means three small ones. It is a monogram, not a headline.

An uploaded logo is embedded as pixels in the PNG. The SVG keeps whatever you gave it, including a vector logo, so give the SVG to designers. A badge travels in the SVG as text, so an emoji badge takes the style of whatever device opens the file. Country flags are the extreme case: Windows ships no flag glyphs at all and shows their two-letter codes instead, so a flag badge made here looks right in the PNG everywhere, but in the SVG only on devices that draw flags.

Verification is of the image, not the destination. The tool proves the code says what you typed. Whether the link you typed is the link you meant is still yours to check before printing five hundred of them.

Frequently asked questions

Is anything I type uploaded anywhere?

No. The code is built, drawn and verified inside your browser tab, and that matters more here than on most tools, because what goes into a QR code is often a wifi password or a phone number. Watch your browser's network panel (F12) while you type: no request carries any of it. Most QR sites with logo support render on their servers, which means they receive whatever you encode.

How can a logo sit on top of a QR code and still scan?

QR codes carry Reed-Solomon error correction, redundancy that lets a reader reconstruct data it cannot see. At the strongest level, H, up to 30% of the code can be rebuilt. A centre logo is deliberate, well-placed damage that spends part of that budget; the readout under the preview shows exactly how much of it your logo is using.

Why does adding a logo lock error correction to level H?

Because the logo spends recovery budget that scanning conditions also need. At level L only 7% of the code can be rebuilt, and a logo of any useful size costs more than that on its own; our tests show the same logo that scans fine at H failing outright at L. Locking to H keeps the whole 30% budget behind your logo.

What does the "verified" line actually check?

The tool decodes the exact image you are looking at, in your browser, with an independent decoder, and compares the result character by character with what you entered. It is strict on purpose: it does not try the inverted image, and a near miss counts as a fail. Downloads stay disabled until the check passes, so you cannot leave with a code the tool could not read back.

Will it scan on every phone?

Verification proves the image is correct and readable under clean conditions; it cannot promise anything about a worn print, glare or a 1998 barcode app. The slider's size limit exists for exactly that reason: clean renders survive logos up to about 45% of the code's width in our measurements, and stopping at 35% leaves the difference for the real world.

Should I download the PNG or the SVG?

PNG for screens, chat and documents; it is rendered at 1280 pixels, enough for a sharp print at sticker size. SVG for anything going to a printer at scale, signage or a designer, because it is vectors and enlarges without limit. Both contain the same verified code, and if you uploaded a logo the SVG embeds it, so the file is self-contained.

Why does it refuse my colour scheme?

QR readers expect dark modules on a light background. Inverted codes fail many scanners outright, so the tool will not verify one, however stylish. Low contrast fails for a related reason: the reader has to decide which squares are dark, and colours that are close together starve that decision. Keep the background near white and the modules dark and every phone will agree with the verifier.