Skip to content

QR code with logo

Add your logo to a QR code without paying for it, signing up, or getting a watermark. There are two ways to do it and they behave very differently, so this page explains what each one costs you and how far you can push it before the code stops scanning.

On this page

Two places a logo can go

Most generators offer one. FigQR offers both, and the difference is not cosmetic.

  • In the middle. The familiar one. A square is cleared in the centre of the pattern and your logo sits in it. Modules are genuinely removed, so the code has to survive with a hole in it.
  • Behind the whole code. Your logo fills the code and the pattern is drawn on top of it. Nothing is removed. The picture shows through the gaps between the modules.

The first is safe and the second is striking. If you are printing something you cannot reprint, use the first.

Does a logo break the code?

A QR code carries redundant data so it can still be read when part of it is dirty, creased or covered. That redundancy is error correction, and it comes in four levels:

  • L recovers about 7% of the code
  • M about 15%
  • Q about 25%
  • H about 30%

A logo in the middle is damage you inflicted deliberately. The scanner cannot tell the difference between your mark and a coffee stain, so the modules underneath it have to be reconstructed from the redundancy. FigQR moves to H automatically as soon as a logo is added, which is why the code gets a little denser when you drop one in. That density is the price of the logo, and it is worth paying.

If you set the level by hand and leave a logo in place, the generator warns you. It is the one setting where overriding the default reliably produces a code that looks fine and fails on a phone.

How big the logo can be

The middle placement is capped at 28% of the code's width. The cap is arithmetic rather than caution. H recovers around 30%, and a mark covering more than about a quarter of the code leaves less redundancy than the damage requires, whatever level you choose. Sliding past the cap would produce codes that scan on the screen you designed them on and nowhere else.

In practice 15% to 20% is the sweet spot. The logo is clearly visible, the code keeps a margin for real-world damage, and the pattern does not have to grow to accommodate it.

Putting the logo behind the code

This one works differently and it is worth understanding, because the settings only make sense once you know the mechanic.

A QR code is dark modules and light ones. The light ones normally show the paper. Here they are painted in the paper colour instead, and your logo is placed underneath everything. The picture then appears in the gaps between the painted modules. Nothing is cut out, so no error correction is spent and there is no hole for the code to survive.

Two controls follow from that:

  • Logo size sets how much of the code the picture spans, from 30% up to the full width.
  • How much of the logo shows shrinks the light modules. Smaller light modules mean wider gaps and more picture. This is the real contrast control, and turning it up is what eventually breaks the code.

Why only some module shapes are offered

Switch the placement to behind and the shape list shortens to 10. That is not an arbitrary restriction. The picture can only appear in the space between modules, so a shape that fills its cell leaves no space at all. The default square shows less than half a percent of the image, which is a blank code with a slower render.

The shapes that remain are the ones that genuinely leave room: small dots, small squares, vertical and horizontal bars, diamonds, stars and hearts. If your current shape is not one of them, the generator moves you to the nearest offered one and tells you it did.

Colour decides more than size does

This is the part nobody publishes, and it is the single most useful thing on this page.

A scanner reads a QR code by deciding, for every point, whether it is dark or light. Your logo sits in the middle of that decision. A logo in one strong colour close to the code's ink reads as the same side of the threshold as the modules around it, and the code stays legible. A logo in mid-tone colours lands halfway between the ink and the paper, and every light cell becomes ambiguous.

We measured this against finished images rather than bare codes. A single-colour mark inked in the code's own colour decoded across a wide band of settings. The same code carrying a four-colour brand mark passed at exactly one combination out of fifty-four, and that one flipped depending on which JPEG encoder wrote the file.

So if you want a logo behind the code and you want it to work: use one colour, make it dark, and keep it clear of the three big squares in the corners. Those are the finder patterns and they are what a scanner locks onto first. Pulling the logo in to about 80% of the width leaves them alone and is usually the difference between a code that reads and one that does not.

Testing it before you print

FigQR decodes the preview in your browser after every change, so a warning appears the moment a choice breaks the code. Take it seriously. It is the same check a scanner performs and it is stricter than a phone, which means a warning is a reason to look rather than proof of failure.

Before anything goes to print:

  1. Scan it off your screen with a phone, at the distance people will actually use.
  2. Scan it again after printing, on the real material.
  3. Try a second phone. That separates a marginal code from an unusual camera.

Download the SVG for anything printed, since it stays sharp at any size. PDF and EPS are there for print shops, and the PNG is for screens.

If it does not scan

  1. Shrink the logo. The first thing to try, and it fixes most cases on its own.
  2. Check the error correction level. With a logo it should be H. If you set it by hand, set it back.
  3. Raise the contrast. A pale logo on a pale background is the usual culprit, and it looks fine on screen right up until it does not work.
  4. Move the logo off the corners. The three corner squares are how a scanner finds the code at all.
  5. Print it larger. A code with a logo carries the same data in a denser pattern, so it needs more width than a plain one.

Common questions

Does adding a logo stop a QR code from scanning?

Not if the code is built for it. A logo in the middle covers modules and those modules are gone, so the code has to be able to rebuild them. Error correction is what does that, and FigQR switches to the highest level automatically the moment you add a logo. A logo placed behind the code removes nothing at all, so there is nothing to rebuild.

How big can the logo be?

In the middle, up to 28% of the code's width. That is a cap rather than a suggestion: the highest error correction level recovers about 30% of the code, so past roughly a quarter there is more missing than any level can reconstruct. Behind the code the logo can span the full width, because it sits under the pattern instead of replacing part of it.

What file should I upload?

Any image your browser can open works, including PNG, JPG, SVG and WebP. A PNG with a transparent background gives the cleanest result in the middle placement, since a white box around a logo eats into the space the code needs. For the behind placement transparency matters less, because the pattern is drawn over the picture either way.

Is my logo uploaded to your server?

No. The whole generator runs in your browser and your logo is read straight from the file you picked. It is never sent anywhere, which is also why there is no account and nothing to delete afterwards.

Can I use a logo I do not own?

For your own materials, usually not without permission. A trademark protects the mark rather than the drawing, so finding an icon under a free licence does not grant the right to use a company’s identity on something you are selling or promoting. Using a mark to point at its owner, such as a Google review link for your own business, is ordinary. Using it to advertise your product implies an endorsement that was not given.

Should I put the logo in the middle or behind the code?

In the middle for almost everything printed. It is the recognisable convention, it works with every module shape, and it holds up at small sizes. Behind is the striking option and it is fragile: it needs one of the offered module shapes, it wants a single strong colour, and it should be tested on a phone before it goes anywhere permanent.

Make one that never expires

Free, no account, and generated entirely in your browser. Your destination goes straight into the pattern.

Open the generator

Keep reading

Or make a code