Coupon QR code generator
100% Private & Local — Your data never leaves your browser. These QR codes are permanent and will never expire.
Coupon settings
Design
Add a centre logo
The image is read in this page and embedded in the code as a data: URL. It is not uploaded, and it stays inside the file you download.
More design options
The dark half of the code. Keep it well below the background in lightness.
Covers the quiet zone as well as the gaps between modules. A transparent background leaves it out of the file, so nothing is drawn with it.
Contrast 11.5:1 between the modules and the background.
PNG and WebP keep an alpha channel; the SVG simply omits the background rectangle. Whatever the code is placed on becomes the light half of the contrast.
A gradient fills the dark modules only. Its lighter end sets the contrast a scanner actually gets, so both ends have to stay dark.
The second colour, used only while a gradient is selected. It is measured for contrast alongside the first.
Degrees clockwise from a left-to-right sweep. A radial gradient spreads from the centre outwards, so the angle applies to a linear one only.
Rounded shapes cover less of each cell. The centre stays covered, which is where a decoder samples, but a small print of a dense code reads more reliably as squares.
The ring of the three finder patterns.
The eye inside each finder pattern.
The blank margin around the code, measured in modules. 4 is the specified minimum.
Higher recovery survives more damage and costs capacity, so the same content produces a denser symbol.
A logo sits at the centre and holds the level at H. Its width limit follows the symbol: 14% on the smallest code, 30% on a dense one.
Live preview & export
Enter the coupon code.
Export
Raster, for screens
Complete the form to enable the downloads.
Export size and encoded text
- Payload
- Nothing encoded yet
- Symbol
- Not built yet
- Recovery
- Q
Waiting for input
Two ways to put an offer on paper: a link that opens your checkout, or the code itself as plain text that reads with no connection. Both encode the payload directly, so the printed voucher does not depend on a service staying subscribed.
When someone scans it
In link mode the reader offers to open your checkout address. In plain-code mode it shows the code, and the terms line underneath if you added one.
Two modes, two different payloads
Link mode encodes the checkout address you paste, with https:// added if you leave the scheme off, and nothing else. Plain-code mode encodes the code itself, followed by the terms line on a second line when you supply one.
The second mode is the one that keeps working at a market stall, a festival gate or anywhere with no coverage, because the payload is the voucher rather than a route to it. The first is the one that saves the customer typing, provided your platform can apply a discount from a link.
- Link mode payload: https://example.com/discount/SPRING20
- Plain-code payload, first line: SPRING20
- Plain-code payload, second line: the terms line, if you added one
Why the code is not injected into your link
Platforms name their discount parameter differently. Shopify uses a /discount/CODE path. Many WooCommerce stores read a coupon_code query parameter. Others use a different name again, or apply nothing from the address at all and expect the code to be typed at checkout.
Guessing wrong produces the worst possible failure: a link that opens the store, applies no discount, and looks completely correct in every test you run until a customer complains. So link mode encodes the address you paste and leaves it alone. Generate the discount link in your own admin, paste it here, and scan it once against a real basket before the print run.
Printing on receipts, flyers and shelf edges
Recovery level Q is the default for this tool because vouchers get creased, folded into pockets and printed on paper that was never meant to last. Level Q restores about a quarter of the symbol's codewords, and for a short code it is free: an eight-character code fits version 1 — 21 modules, the smallest symbol there is — at level Q just as it would at level M.
Thermal receipt paper is the hardest surface of the three. It loses contrast with heat and age, and a roll that has spent a summer in a warm shop prints greyer than the one you tested with, so give a receipt code more printed width than a flyer would need.
Two further constraints are worth respecting on any of them. Keep the four-module quiet zone clear of borders and cut lines. And treat inverted printing — light modules on a dark background — as unsupported: it is outside the specification, and while phone cameras often cope, dedicated scanners often do not.
Questions and answers
Will the discount apply automatically at checkout?
Only if the link you paste does that on its own. This tool encodes your address unchanged rather than guessing a discount parameter, so test the link in a browser before printing it.
Which mode should I use?
Link mode when there is a working online checkout and a connection at the point of scanning. Plain-code mode when the code is redeemed by a person, or when the scan happens somewhere without coverage.
Can I change the offer after the vouchers are printed?
Not in the code — it is static by design. You can change what the code means: in link mode, change what the destination page does; in plain-code mode, change what your till accepts for that code.
Why is the terms line only available for plain text?
Because a URL is a single line with no room for a second one. In link mode the terms belong in printed text beside the symbol, where a customer can read them without scanning.
How a static QR code works
Every code on this site is static: the payload is written into the black and white modules themselves. Nothing is looked up when the code is read, no server of ours takes part, and no subscription holds the printed code up. The same property is the limit — once it is printed, what it contains cannot be changed.
Three things then decide whether a printed code reads: how many bytes the payload came to, which recovery level absorbs the damage, and how wide a single module ends up on paper. These guides work through each of them with the numbers.