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
- 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.
- 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.
- Check the verification line. Green means the exact image on screen decoded back to your exact input; downloads are enabled only in that state.
- 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.