Every certificate gets its own code, so you can tell which ones came back. Print 2 or 3 to a page with cut marks, keep the CSV of codes, and send one by text as a square image. Free, no signup, no per card fee.
This part is the same on every certificate.
Your logo is read in this tab and drawn straight onto the page. It is never uploaded.
Type the value the way you want it printed, for example $50, £25, or Two Free Classes. The dollar, pound and yen signs print as typed. The PDF font set does not carry the euro, rupee, won, peso, shekel or baht signs, so those print as a three letter code such as EUR. The preview always shows exactly what will print. Add a row for each denomination and they all print in one run with one shared code list.
Each QR opens this link with that certificate's code on the end, like ?gc=WL-4H7K-QN23. That is a one scan lookup for whoever is on the desk. It does not mark anything redeemed and there is no account behind it, so you still tick the code off in the CSV yourself. Leave it empty and no QR is printed.
Nothing loaded. Codes are random, so a repeat is very unlikely, but loading your last CSV makes it impossible.
A square image sized for a text message, WhatsApp or an Instagram post. The certificate keeps its printed proportions and sits on a coloured backdrop to fill the square. Pick the code you are sending so you can cross it off later.
Designing a nice looking gift certificate is the easy half. The half that goes wrong in January is telling the difference between a certificate you sold and a photocopy of one you already honoured. That needs one thing: a different code on every certificate, and a list of those codes you can search. This page prints both in one pass, so the PDF you print and the CSV you keep always describe exactly the same batch.
Codes come from your browser's cryptographic random number generator, not from a counter, so nobody can guess the next one from the one they were given. The alphabet leaves out 0, 1, I, L and O, so the misreads that cause the most trouble on a handwritten or phoned in code are gone. Every code in a run is checked against the others before anything is written, and if you load your previous CSV it is checked against that too.
If you give a link, each certificate carries its own QR that opens that link with its code attached as a query parameter. That saves whoever is on the desk from typing the code, and it works with any booking page, form or website you already have. It is a lookup shortcut, nothing more. There is no server and no account here, so nothing marks itself as used. Redemption is you finding the code in the CSV and writing the date next to it, which for most small businesses is the whole system they need.
The border is a guilloche pattern, drawn from overlapping waves, because a plain box in a word processor does not look like something worth fifty dollars. Treat it as decoration and nothing else. Any pattern inside a PDF you can download and print again is not protection against copying, and this page will not pretend otherwise. The code list is the real control.
Print at 100 percent scale with page scaling switched off, otherwise the cut marks move. Ordinary paper is fine, but 120 to 160 gsm feels far more like something worth buying and still goes through a home printer. Cut with a guillotine if you have one, or fold and cut along the corner marks. The sequence number is there so you can count the stack without reading every code.
Point of sale gift card programmes charge roughly a couple of dollars a card and usually want a minimum order, and printed certificate orders start at a similar place once you add shipping. The design step alone is often a paid subscription. This is free, runs in your browser, and can print a fresh batch the same afternoon somebody asks for one.
Your logo, your wording and your codes stay in this browser tab and are never uploaded. To be exact about it: the page loads its PDF and QR libraries from a public CDN and records an anonymous page view like every page on this site. Neither of those carries anything you typed here.