QR Code Generator with Logo

QR codes for links, Wi-Fi access, contact details, emails, SMS and locations – with your own logo in the centre, custom colours, gradients and module shapes. Download as SVG or PNG. Everything runs locally in your browser, and the logo is only read, never uploaded.

Design

Colours
Shapes
Logo in the centre
Error correction & margin

Preview

Fill in the content on the left – the preview appears instantly.

Everything runs locally in your browser: the logo is only read, never uploaded.

These codes never expire

The most important difference from many free providers: everything created here is astatic QR code. The content – the address, the Wi-Fi password, the business card – sits directly in the pattern. The code therefore works forever, offline, without an account and without anyone counting who scans it.

Dynamic QR codes from other services contain only a short redirect address pointing at their server. That lets you change the destination later and count scans – but it also means that if the provider shuts the service down, cuts the free tier or simply goes offline, every printed code becomes worthless. This has already happened to plenty of people who had stickers or menus printed in bulk. A static code cannot do that, because there is no server that could fail.

Wi-Fi QR code: guests online without dictating passwords

The most practical everyday use. Pick Wi-Fi above, enter the network name and password – done. Anyone scanning the code with their camera gets a prompt on both Android and iOS asking whether to join the network. No more spelling out special characters.

Two notes on this: WPA is almost always the right choice, including for WPA2 and WPA3 – WEP exists only for very old devices and has been considered broken for years. And do keep in mind that the password sits in the code in plain text: anyone who photographs the printed slip has access. That is exactly right for a guest network, less so for the network with your servers and network drives on it.

Adding a logo – why that works at all

A QR code carries built-in error correction based on the Reed–Solomon scheme. It is really meant for scratches, creases and dirt, and an inserted logo simply borrows that reserve: the covered modules are reconstructed from the correction data. There are four levels:

LevelRecoverableSensible for
Lapprox. 7 %Very long content, clean display on screen
Mapprox. 15 %The usual default without a logo
Qapprox. 25 %Printing on rough material, small logos
Happrox. 30 %Logos, stickers, anything outdoors

For a logo, H is therefore the right choice – this tool preselects it and warns you if you lower it while a logo is active. Those 30 % are an upper bound rather than a licence, though: the reserve is also needed for actual damage. Keep the logo below roughly a quarter of the area, keep it centred, and leave “clear the area behind the logo” switched on – a logo that overlaps the pattern costs more legibility than one with a clean edge.

Colours, shapes, and which of them hurt the scanner

A lot is possible visually, but not all of it is harmless. Two rules decide the outcome:

Contrast. The code must be clearly darker than its background – scanners work with brightness, not colour. A light grey code on white, or yellow on white, fails even when it still looks recognisable on screen. The tool warns as soon as the gap gets too small. Inverted codes (light on dark) work with many scanners but by no means all – when in doubt, do not invert.

Quiet zone. The blank margin around the code is not decoration but part of the standard: the scanner needs four modules of clearance to separate the code from the rest of the image. Trimming it to save space makes the code invisible to some devices. The slider allows less, but warns.

Rounded modules, dots, custom eye shapes and gradients are uncritical by comparison, as long as the contrast holds. The three large squares in the corners – the finder patterns, or “eyes” – are what the scanner uses to orient itself; their shape may vary, their structure of ring plus core may not.

What size should I print it?

A good rule of thumb is a 1:10 ratio between code size and scanning distance: a code meant to be scanned from two metres needs roughly 20 cm per side. For a sticker on a table scanned from 30 cm, about 3 cm is enough. The more content the code carries, the finer its modules get and the larger it has to be printed – which is why a short link always beats a long one full of parameters.

For print, SVG is the right choice: it is a vector graphic and stays razor sharp at any size. PNG suits screens, presentations and anything that will not take an SVG – there, pick one size step larger than you think you need.

Frequently asked questions

Are my data or my logo uploaded anywhere?
No. Generating the code and reading the logo happen entirely in your browser; there is no server that could receive anything. With Wi-Fi passwords and business cards that is not a side issue. The only thing stored on your device is the design – colours, shapes, error correction – never the content and never the logo.

Can I track how often the code was scanned?
No, and that is deliberate. Counting requires a server that every scan passes through – exactly the dependency that static codes avoid. If you need statistics, there is no way around a dynamic service.

Why did my code suddenly get much finer?
Because the content grew. A QR code has 40 version steps from 21×21 to 177×177 modules; once the content no longer fits, the next step takes over. The line below the preview always states which version and how many modules are currently being drawn.

Do umlauts and emoji work?
Yes. The content is encoded as UTF-8, so “Grüße” and ☕ arrive intact. A few very old scanner apps still read bytes as Latin-1 – for critical applications it is worth a test.

How should I test the code?
With the device and in the situation it will actually be used in: printed rather than on screen, from the real distance, under the real lighting. Especially with logos, strong gradients and a tight quiet zone, no preview image replaces that test.

Related: the colour converter helps check whether your chosen shade carries enough contrast, and thedata URL generator turns the finished SVG into a data URL for embedding directly.