QR Code Tools

QR code generator

Type a link or any text and the code is drawn as you type. Pick the pixel size, how much damage it should survive and how wide the white border is, then download a PNG for screens or an SVG for print.

The code is drawn by your own browser. Nothing you type is uploaded, logged or stored — no server ever sees the link, and closing the tab leaves nothing behind.

How the generator works

A QR code is a grid of black and white squares called modules. Your text is turned into bytes, those bytes get error-correction data appended, and the result is laid out in the grid alongside the three big corner squares a scanner uses to find and orient the code. The grid size is not free: it comes in 40 fixed steps, called versions, from 21 by 21 modules up to 177 by 177. This page always picks the smallest version your text fits into, which keeps the squares as large — and as easy to scan — as possible.

Once the grid exists, the drawing is simple arithmetic. The size you choose is divided by the number of modules plus the quiet zone, and rounded down to a whole number of pixels per module. That rounding is deliberate. If a module were 15.4 pixels wide, its edges would land on fractions of a pixel and the browser would soften them into grey, which is exactly the sort of blur that makes a phone give up. So a 512 px request on a 25-module code becomes 15 pixels per module and a 495 px image — slightly smaller than asked for, and perfectly crisp. The status line under the code tells you the version, the module count, the pixels per module and how much of the capacity you have used.

The SVG download is the same grid described as vector paths rather than pixels, so it has no resolution at all and prints sharp at any size. Use it for anything going to a printer. The PNG is the better choice for a screen, an email or a slide, where a fixed pixel size is what the software expects.

Questions people ask

What does the error correction level change?

Every QR code carries redundant data so it still reads when part of it is dirty, creased or covered. Level L can lose about 7% of the code, M about 15%, Q about 25% and H about 30%. The redundancy is not free: it takes up room, so a higher level either shrinks how much text fits or pushes the code up to a bigger, denser grid. M is the sensible default for a screen or a clean printed page. Choose Q or H only for stickers, packaging, anything laminated or outdoors, or if you intend to place a logo over the middle.

Should I download the PNG or the SVG?

PNG if the code is going on a screen — a website, a slide, an email, a social post. It is a plain lossless image at the pixel size shown in the caption, and every program opens it. SVG if the code is going to print. An SVG has no fixed resolution, so a designer can scale it to a business card or a shop window and the edges stay perfectly sharp. Never scale a PNG up for print: the resampling softens the module edges and that is the most common reason a printed code fails to scan.

How small can a printed QR code be?

The rule of thumb is that the code should be at least a tenth of the distance it will be scanned from — a code read at 30 cm needs to be about 3 cm across. In practice, aim for at least 2 cm square for anything handled up close, and never let a single module fall below about 0.4 mm on the page. Shorter text means fewer modules, which means each one is bigger at the same physical size, so trimming a long URL is the cheapest way to make a small code reliable.

Why is there a white border, and can I remove it?

That border is the quiet zone, and scanners use it to tell where the code ends and the background begins. The specification asks for four modules on all four sides. You can drop it to two, or to nothing at all, when you are placing the code into a design that already has plenty of white space around it — but if you print a zero-margin code straight onto a patterned background, expect scanning to become unreliable. When in doubt, leave it at four.

How much text fits in one QR code?

At the largest version the ceiling is 2,953 bytes at level L, 2,331 at M, 1,663 at Q and 1,273 at H. Those are bytes, not characters: plain English is one byte per character, an accented letter is two and an emoji is four. Long before you hit the ceiling the code becomes too dense to scan comfortably from a phone, so treat a few hundred characters as the practical limit. If you have more than that, put the content on a page and encode the link to it instead.

Can I change the colours or drop a logo in the middle?

Not here — this page draws black on white on purpose. Contrast is what scanners measure, and inverted or low-contrast codes are the single most common failure in the wild. If you want a branded code, download the SVG and recolour it in a vector editor, keeping the dark modules genuinely dark and the light ones genuinely light. For a centre logo, generate at level H first so the code can afford to lose the area you are about to cover.