QR code generator with logo, colours and SVG export
Create QR codes for links, text, phone numbers and more. Pick the size, colours, quiet zone and error correction, add a logo, then save PNG or SVG.
- Runs in your browser
- Nothing you enter is sent
- Free, no account
The exported PNG is exactly this wide. The SVG is resolution-independent whatever you choose.
The blank border around the symbol. The QR specification requires 4 modules; below that, scanners start to struggle.
Leaves the light modules unpainted. Only safe over a plain, light surface.
Higher levels survive more damage and dirt but pack fewer characters into the same symbol size.
Contrast ratio 21.00:1 — comfortably scannable. #000000 on #ffffff.
Encoded text — see exactly what is encoded
https://onthisdevice.com
How to make a QR code
- Type or paste what the code should contain — a URL is the usual case, but any text works.
- Set the export size. The PNG comes out at exactly that many pixels; the SVG is resolution-independent.
- Choose the colours. Keep the dark modules genuinely dark — the contrast readout tells you when you have gone too far.
- Raise the error-correction level if you are adding a logo, or if the code will be printed on something that gets scuffed.
- Download the PNG for screens and documents, or the SVG for print and anything that needs to scale.
Nothing is uploaded. The symbol is computed in this tab and drawn onto a canvas, which is why there is no rate limit, no watermark and no account. It also means the code has no redirect in the middle: it encodes your text directly, so it cannot expire or start showing an advert three months from now.
What you can put in a QR code
Phone cameras recognise a handful of URI schemes and act on them automatically. Everything else is treated as plain text and simply displayed.
| What you want | What to encode | What the phone does |
|---|---|---|
| Open a web page | https://example.com/page | Offers to open the link |
| Call a number | tel:+15551234567 | Opens the dialler with the number filled in |
| Send an email | mailto:hi@example.com?subject=Hello&body=Hi | Opens a pre-filled draft |
| Send a text | SMSTO:+15551234567:Message | Opens the messaging app |
| Show a location | geo:48.858370,2.294481 | Opens the map at that point |
| Start a video call | https://meet.example.com/room | Opens the meeting link |
| Plain text | Table 14 | Displays the text |
Error correction, and why it exists
A QR code stores its payload with Reed–Solomon error correction, the same family of codes used on compact discs and in deep-space telemetry. Redundant data is woven through the symbol so that a decoder can reconstruct the original even when part of it is unreadable. You choose how much redundancy to spend:
| Level | Recoverable | Capacity cost | Use it for |
|---|---|---|---|
| L | ~7% | Smallest symbol | Clean screens, long payloads such as vCards |
| M | ~15% | Slightly larger | The sensible default for most printing |
| Q | ~25% | Noticeably denser | Labels, packaging, anything that gets handled |
| H | ~30% | Densest | Codes with a centre logo, industrial environments |
Redundancy is not free: at level H the same text needs a physically larger symbol than at level L. A dense, high-correction code printed small can scan worse than a sparse, low-correction one, because the camera can no longer resolve the individual modules. Pick the lowest level that survives your environment.
Adding a logo without breaking the code
A centre logo works because the decoder treats it as damage and repairs it. The rules that follow from that are simple:
- Stay inside the budget. At level H roughly 28% of the symbol width can be covered. Beyond that you are asking the decoder to reconstruct more than the redundancy allows.
- Cover the centre, never a corner. The three large squares are finder patterns and the small one is an alignment pattern; obscure any of them and the scanner cannot even locate the code.
- Keep a plate behind the logo. A solid background under the logo gives the decoder a clean, obviously-damaged region rather than a half-visible module grid.
- Test on real phones. Decoders differ. Before a print run, scan the final artwork with an iPhone camera, an Android camera and one third-party scanner app.
Choosing a size for print
The working rule of thumb is that a QR code needs to be about one tenth of the distance it will be scanned from. There also has to be a quiet zone — four modules of blank space on every side — or the decoder cannot tell where the symbol ends.
| Scanning distance | Minimum symbol size | Typical use |
|---|---|---|
| 10 cm | 1 cm | Product label, ticket stub |
| 30 cm | 3 cm | Business card, menu, packaging |
| 1 m | 10 cm | Table tent, shop window, flyer |
| 3 m | 30 cm | Poster, exhibition stand |
| 10 m | 1 m | Billboard, building wrap |
Export the SVG whenever the code is going to print. It is a handful of vector paths, so the module edges stay perfectly crisp at any size, and the file will not develop the soft grey halo that comes from scaling a bitmap up in a layout program.
Colour, contrast and materials
Scanners threshold the image into black and white before they decode it, so what matters is luminance difference rather than hue. A pale yellow on white has plenty of “colour contrast” and almost no luminance contrast, and it will not scan. Aim for a ratio of at least 4:1 with the dark modules genuinely darker than the background — inverted codes fail on a large share of Android devices and on nearly all laser-based scanners.
Physical surfaces matter as much as colour. Glossy laminates throw back the camera flash, curved bottles distort the module grid, and matte dark paper swallows the contrast. Where the surface is difficult, go up an error-correction level and print larger rather than trying to fix it in the artwork.
Questions
Do these QR codes ever expire or need a subscription?
No. The code is a direct encoding of the text you typed — there is no redirect service in the middle, no tracking link and no account. Once you download the image it works forever, offline, with no dependency on this site.
How large can a QR code be before it stops scanning?
A symbol holds up to 4,296 alphanumeric or 2,953 binary characters, but long payloads produce dense codes that cheap cameras struggle with. In practice keep URLs under about 300 characters, and use a link shortener or a landing page for anything longer.
Will adding a logo break the code?
Not if you stay inside the error-correction budget. Level H can reconstruct roughly 30% of a damaged symbol, so a logo covering up to about 28% of the width is usually safe. The tool warns you when the logo grows past what the current level can recover, and you should always test the printed result with a real phone.
Why does my code stop working when I invert the colours?
Almost every decoder assumes dark modules on a light background. Light-on-dark codes fail on many Android cameras and most dedicated scanners. Keep at least a 4:1 contrast ratio with the dark colour genuinely darker — the tool shows the ratio and flags an inversion.
What size should I print it at?
A rough rule is that the symbol should be at least a tenth of the scanning distance: 3 cm for a 30 cm read on a business card, 10 cm for a metre, and much larger for posters. Export the SVG for print so the edges stay perfectly sharp at any size.