QR code generator

See how much of the code your logo can cover before it stops scanning.

What the code carries

Every one of these is a documented string format written into the same payload. Nothing here needs an account, a server, or a subscription.

Payload19 bytesversion 2RFC 3986

Logo

The maximum size is computed from this symbol's own codeword layout, not from a fixed percentage. It changes when the payload or the error-correction level changes, which is exactly why a "standard size" cannot be safe.

PNG, JPEG or SVG, up to 2 MB. Or drop one here.

Design

Error correction

This symbol recovers 8 of 44 codewords (18.2%). The level's headline figure is 15% — a minimum, not your number, because blocks rarely divide evenly. Raising it also grows the symbol, so at a fixed printed size each module gets smaller and the code scans from closer. H is not free.

Module shape
Corner frame
Corner centre

Print and export

Every format is free, including vector. A QR code is natively a grid of rectangles, so SVG is easier to emit than PNG — which does not stop one major generator gating it behind Enterprise, or another advertising "vector downloads" on a page where the free flow greys it out.

Version 2 · 25×25 modules · 19 bytes

Will it scan

Logo budget

—

ISO 15415 contrast

100% A

Scans from

723 mm

Error-correction budget8 recoverable
  • 100% measured scan rate — The baseline. Nothing to trade.

Where these numbers come from

The logo budget

Every generator repeats that level H lets a logo cover 30%. The standard says H recovers 30% of codewords, which is not area. The corner patterns carry no error correction at all, a blob clips codewords partially and a partial loss is a total loss, and correction is applied per interleaved block rather than pooled. Measured, the real ceiling is about 4% of the area at L, 9% at M, 14% at Q and 19% at H. The meter reads this symbol's own codeword placement, so it moves when your payload does.

Contrast

Symbol Contrast under ISO/IEC 15415 is (Rmax − Rmin) / Rmax, graded A to F, with grade C at 40% the usual acceptance floor. It is not a WCAG ratio: WCAG measures text legibility for human eyes, and a camera sensor is a different instrument. Hue does not matter here — only luminance does, which is why red on blue decodes and green on red does not, despite looking equally awkward. The WCAG figure for this pair is 21.00:1, shown for orientation only.

Distance

The 10:1 rule everyone quotes ignores module count, so it is wrong in both directions: a version-2 code and a version-20 code of the same physical size do not scan at the same distance. The threshold used here is 2.5 camera pixels per module, below which decoding collapses sharply. Note that a phone decodes from the camera preview stream, not a full-resolution still, so a 12-megapixel sensor does not give you 12 megapixels of decoding.

Reed–Solomon has no graceful degradation. Across roughly 5,000 decode attempts a symbol decoded 100% of the time right up to the last survivable module and 0% one module later — there is no band where it works sometimes. That is why scanning your own code once proves almost nothing: it tells you which side of the cliff you are on, never how far from the edge. The meter above is the margin that test cannot show you.

What QR code error-correction budget is

The share of a symbol’s recoverable codewords that an obstruction — usually a logo — consumes. It is the number that decides whether a branded code still decodes, and it is not the same as the percentage of the code’s area covered.

What this tool does that others do not

  • A measured logo budget, not the 30% myth

    ISO/IEC 18004 says level H allows recovery of 30% of the symbol’s codewords. That is not 30% of the visible area, and three things eat the difference: the finder, timing and alignment patterns carry no error correction and are unrecoverable if covered; a solid logo clips codewords partially and a partial loss counts as a total loss; and correction is applied per interleaved block rather than pooled across the symbol.

    For a typical URL the real figures are about 4% of the area at level L, 9% at M, 14% at Q and 19% at H.

  • Contrast graded under the right standard

    The governing figure is Symbol Contrast under ISO/IEC 15415, computed as (Rmax − Rmin) / Rmax and graded A to F, with grade C at 40% the usual acceptance floor. It is not a WCAG ratio: WCAG measures text legibility for human eyes and a camera sensor is a different instrument. What matters in practice is luminance separation rather than hue — red on blue decodes reliably where green on red does not, though both look equally awkward.

  • Scan distance from module count

    Two codes at the same printed size but different versions have different module sizes and therefore different scan distances, which is exactly what the common 10:1 rule ignores. The threshold is about 2.5 camera pixels per module, below which decoding collapses rather than degrades. Phones decode from the camera preview stream rather than a full-resolution still, so a 12-megapixel sensor does not give you 12 megapixels of decoding.

  • Static codes with nothing to expire

    The destination is encoded in the pattern, so there is no account, no redirect under anyone else’s control, and nothing that stops working when a subscription lapses. That matters most for anything printed, where the code cannot be reissued.

    One major generator’s help centre states that a deactivated dynamic code cannot be revived even by creating a new code with the same content.

How to use it

  1. Paste the destination and pick the correction level

    Higher correction costs capacity, which pushes the symbol to a larger version with more, smaller modules — so it buys slack and costs scan distance at a fixed printed size.

  2. Add the logo and watch the budget, not the preview

    The preview tells you whether it looks good. The budget figure tells you whether it decodes, and those are different questions with different answers.

  3. Leave the corners alone

    Rounded data modules are effectively free down to about 0.7 of the module diameter. Styling the three finder patterns is not: the measured scan rate drops to 60% and stays there at every correction level, because locating the symbol happens before any correction runs.

  4. Check the contrast grade before printing

    Aim for grade C at minimum, and remember that the figure describes luminance separation rather than how different the two colours look to you.

Worked examples

Real input, real figures.

The largest logo a code will actually carry

You give it

https://dsyn.studio/qr-code-generator — 37 characters, level M.

You get

A version 3 symbol, 29 × 29 modules, 13 correctable codewords. A centred 7-module logo covers 5.8% of the area, touches 12 codewords and consumes 92% of the budget. At 8 modules it touches 14 against 13 correctable and the symbol stops decoding — 7.6% of the area, and completely dead.

What the highest correction level actually buys

You give it

The same 37 characters at level H.

You get

A version 5 symbol, 37 × 37 modules, 44 correctable codewords. A 16-module logo covers 18.7% of the area and sits at exactly 100% of the budget; 17 modules is over. So level H roughly trebles the usable logo area over level M, rather than delivering the 30% the myth promises.

Against a typical free QR generator

AspectThis toolA typical generator
Logo guidanceBudget measured per module size“Up to 30%”
ContrastISO/IEC 15415 Symbol Contrast, graded A–FA WCAG ratio, or nothing
Scan distanceFrom module count, at ~2.5 px per moduleThe 10:1 rule
Code typeStatic onlyDynamic, behind an account
ExpiryNone — the destination is in the patternDies with the subscription

Guide

What it will not do

  • The decode measurements behind the budget model used a single decoder implementation, which is more tolerant than a print verifier and possibly more tolerant than the median phone. The model is deliberately set on the conservative side of what was measured.
  • Scanning your own code once proves only that you are on the correct side of the cliff. Reed–Solomon correction has no graceful degradation, so it says nothing about how close to the edge you are.

Why "it scanned on my phone" proves nothing

Reed–Solomon correction has no graceful degradation. Across roughly 5,000 decode attempts, a symbol decoded 100% of the time right up to the last survivable module, and 0% one module later. There is no band where it works sometimes.

That is why the usual quality check fails. Scanning your own code once tells you that you are on the correct side of the cliff. It tells you nothing about how close to the edge you are — and the edge is where a slightly worn print, a cheaper camera or a steeper angle puts you on the other side. The budget meter above exists to show the margin the test cannot.

Static, so nobody can switch it off

Every code here is static: the destination lives in the pattern. Dynamic codes route through a vendor's short URL, which is what makes them editable and also what makes them fragile. One major generator's own help centre states that a deactivated code cannot be revived even by creating a new code with the same content.

For anything you print, that is the whole risk. The sound rule for a vendor is to never withdraw resolution and to charge for mutation instead — some do. We avoid the question by not owning your redirect at all.

Questions people ask

Straight answers. Each one links directly: copy the address after opening it.

How much of a QR code can a logo actually cover?

For a typical URL, about 4% of the area at level L, 9% at M, 14% at Q and 19% at H — measured, not estimated. The widely repeated figure of 30% comes from misreading the standard: ISO/IEC 18004 says level H allows recovery of 30% of the symbol codewords, which is not the same as 30% of the visible area. Three things eat the difference. The finder, timing and alignment patterns carry no error correction at all and are unrecoverable if covered. A solid logo clips codewords partially, and a partial loss counts as a total loss. And correction is applied per interleaved block, not pooled across the symbol.

What contrast does a QR code need?

The governing figure is Symbol Contrast under ISO/IEC 15415, computed as (Rmax − Rmin) / Rmax and graded A to F, where grade C at 40% is the usual acceptance floor. It is not a WCAG ratio. WCAG measures text legibility for human eyes; a camera sensor is a different instrument. Most pages answering this question quote WCAG ratios, which is the wrong unit. What matters in practice is luminance separation, not hue — red on blue decodes reliably while green on red does not, despite both looking equally awkward.

Do rounded or dotted modules stop a QR code scanning?

Rounded modules are effectively free down to about 0.7 of the module diameter. What is not free is styling the three corner finder patterns: measured scan rate drops to 60% and stays there at every error-correction level, because that is a detection failure rather than a correction failure. The scanner uses those patterns to locate the symbol before any error correction runs, so raising the level to H cannot help. If you want a styled code, style the data modules and leave the corners alone.

How far away will my QR code scan?

It depends on module count, not just printed size — which is exactly what the common 10:1 rule ignores. Two codes of the same physical size but different versions have different module sizes and therefore different scan distances. The real threshold is about 2.5 camera pixels per module, below which decoding collapses sharply rather than degrading gradually. Note that phones decode from the camera preview stream rather than a full-resolution still, so a 12-megapixel sensor does not give you 12 megapixels of decoding.

Will this code stop working later?

No. This generator makes static codes: the destination is encoded in the pattern itself, so there is nothing to expire, no account to keep, and no redirect under anyone else’s control. Dynamic QR codes, which most paid generators sell, point at a vendor-owned short URL — convenient because you can change the destination, and a genuine risk because the code dies if that vendor deletes it, changes their terms, or you stop paying. That matters most for anything printed, where you cannot reissue the code.

Is my data sent anywhere?

No. The code is generated in your browser and nothing is uploaded. You can confirm this by opening your network tab, or by disconnecting entirely — the tool keeps working.

Where these numbers come from

Capacity and correction figures are computed from ISO/IEC 18004 for all 40 versions. The logo, style and distance figures were measured locally with a reference encoder and decoder under a camera model — downsampling, blur, sensor noise and JPEG compression. One caveat stated plainly: those decodes used a single decoder implementation, which is more tolerant than a print verifier and possibly more tolerant than the median phone. The budget model is deliberately the conservative side of what we measured.