Skip to tool
ecech.
🖼️ Image & Photo Tools

Free QR Code Generator with Custom Colour, Logo and Honest Scan Warnings

Encoded in your browser from the ISO spec — no server, no tracking, no link shortener. Warns you before a colour or logo choice stops it scanning.

20%

Version

Grid

Mode

Capacity used

Error correction levels

Level Recoverable Bytes at this size Use when
Advertisement

How the calculation works

What is actually in a QR code Finder patterns × 3 Let the scanner find and rotate the code. Their 1:1:3:1:1 ratio is unique. Timing patterns Alternating row and column that tells the scanner the module size. Alignment pattern Corrects perspective distortion. Appears from version 2 onward. Everything else — data and error correction, interleaved Written in a zig-zag from the bottom right, then XOR-ed with one of eight mask patterns.

How to Use This Tool

This generator encodes the QR code in your browser, directly from the ISO/IEC 18004 specification. Nothing is uploaded, nothing expires, and there is no redirect in the middle. That last point matters more than it sounds.

The thing to check before using any QR generator

A great many free QR services encode a link to their domain, which then redirects to yours. That gives them analytics, and it gives you a code that stops working the day they shut down or start charging. Printed on a menu, a poster or business cards, that is an expensive failure.

Scan the code you are given with your phone before you print it. If the URL that appears is not exactly the one you typed, the code belongs to someone else. The codes here contain your content and nothing else — you can verify that by scanning the result and reading the URL.

Error correction is not just insurance

Every QR code carries redundant data so it still reads when part of it is dirty, creased or covered. Four levels exist: L recovers about 7% of the code, M 15%, Q 25% and H 30%. Higher correction means less room for your content, so the code grows denser for the same message.

This is also what makes a centre logo possible: the logo destroys modules, and error correction rebuilds them. That only works while the covered area stays within the level's budget.

The same logo on two codes. Only one of them still scans. Level H — 30% recoverable 30% logo 20% Logo fits inside the budget, with room left over for scuffs and bad lighting. Scans reliably Level L — 7% recoverable 7% The logo destroys nearly three times more data than can be rebuilt. Fails, or scans only sometimes
“Scans only sometimes” is the dangerous outcome: it works on your phone in good light and fails on a customer's older device in a dim restaurant.

The rule of thumb: use level H whenever you add a logo, and keep the logo under about 25% of the width. The tool warns you when your combination goes past what the level can rebuild.

Colour, and the mistake everyone makes

Scanners look for contrast, not for black. Any dark-on-light combination works if the contrast is strong enough — and the tool measures it and tells you.

What frequently fails is inverting the code: light modules on a dark background. Some modern phone cameras handle it; a great many dedicated scanners and older phones do not, because the specification assumes light background and dark modules. If a design calls for a dark background, put the code in a light panel rather than inverting it.

The quiet zone is part of the code

The specification requires four modules of blank margin on all four sides. It is not padding for looks — without it the scanner cannot tell where the code ends. Designers crop it constantly, and it is one of the most common causes of a code that mysteriously will not scan. The downloads here include it.

Size on paper

A workable minimum is 2 cm square for a code scanned from about 25 cm away. The rough guide is that scanning distance can be about ten times the code's width. A poster read from three metres needs a code roughly 30 cm across — far larger than most people assume.

Shorter content also helps. A short URL produces fewer modules, so each module is physically larger at the same print size and tolerates more distance and worse light.

What this tool cannot do

It supports versions 1 to 10, which is up to 271 bytes at level L or 119 at level H. That covers any URL, WiFi credentials and a compact vCard. Longer content is refused with a message rather than silently producing something broken. It also has no analytics and no editable short link, because both require a server — if you need to change a destination after printing, you need a redirect service, and you should choose one knowing that the code will depend on it permanently.

Advertisement

Frequently Asked Questions

Do these QR codes expire?
No. The code contains your content directly, with no redirect through this or any other domain. Many free generators encode a link to their own server that forwards to yours, which gives them analytics and means the code breaks if they shut down or start charging. Scan any code before printing it: if the URL shown is not exactly what you typed, it is not really your code.
Is my data sent anywhere?
No. The encoder runs in JavaScript in your browser and the page makes no network request while you use it. You can confirm this by opening your browser's developer tools on the Network tab, or by disconnecting from the internet — the tool keeps working. This matters for WiFi passwords and contact details in particular.
Which error correction level should I choose?
M is a sensible default for screens and clean printing. Use Q or H for anything printed that will be handled, curved, or displayed outdoors, and always use H if you are adding a logo. L only makes sense when you need maximum content in the smallest grid and the code will be scanned from a clean screen.
How large can the logo be?
Keep it under about 25% of the code's width, and use error correction level H. The logo works by destroying modules that error correction then rebuilds, so the covered area has to stay inside the level's recovery budget — 30% at H, but only 7% at L. This tool warns you when the combination exceeds what can be rebuilt.
Why won't my QR code scan?
In order of likelihood: the quiet zone was cropped (four modules of blank margin are part of the specification), the contrast is too low, the code is inverted with light modules on a dark background, the logo is too large for the error correction level, or the printed size is too small for the scanning distance. A useful rule is that scanning distance is roughly ten times the code's width.
Can I use colours other than black and white?
Yes, as long as the dark modules are genuinely darker than the background — scanners measure contrast, not colour. What often fails is inverting the code, because the specification assumes dark modules on a light background and many scanners rely on that. If your design needs a dark background, place the code inside a light panel instead of inverting it.
How small can I print a QR code?
About 2 cm square works for scanning from arm's length, roughly 25 cm. Scale up proportionally with distance: the readable range is approximately ten times the code's width. Shortening the content also helps, because fewer characters means fewer modules and therefore physically larger modules at the same printed size.
What is the maximum content length?
This tool supports QR versions 1 to 10, which is 271 bytes at level L down to 119 bytes at level H. That comfortably covers URLs, WiFi credentials and a short vCard. Longer input is refused with a clear message rather than producing a code that cannot be read.

Related tools in Image & Photo Tools

Browse all Image & Photo Tools tools
The desk where ecech. tools get written: a laptop, a notebook of to-dos and a whiteboard listing the tools on the site.

Made by one person

ecech. is not a content farm. Every tool here is written and checked by hand, one at a time, by someone who wanted the tool to exist and could not find a version that showed its working.

No accounts and no sign-in, and nothing you type reaches a server — every calculation on this page runs inside your browser. The ads are served by Google and do set their own cookies, which is set out in full on the privacy page. More about the site.