A QR code on its own is a black square; on a table card, a poster, a badge or a product insert it needs a design around it: a headline, a call to action, a logo, a short URL for people who do not scan. With Shareglint that design is a template and the QR code is one of its image fields. We do not generate QR codes — you make the code with a QR library or the system that issues it (a ticketing tool, a menu service, a link shortener), and the template lays it out and renders the card.
The templates
| Template | Use | QR field |
|---|---|---|
qr-card |
Table cards, posters, flyers, "scan to…" social posts | qr, with headline, CTA, caption, URL label, logo |
event-badge |
Attendee badges with a check-in code | qr, with name, role, company, ticket type, event |
event-ticket |
Tickets with seat, gate and a code | (a code image in your own copy of the template) |
menu-special |
A dish of the day with a "scan to order" code | add a qr field in your own copy |
qr-card and event-badge have a qr image field built in; any template can get one when you copy it into your account and add an image field. All of them render in every size preset (og 1200×630, square 1080×1080, portrait 1080×1350, story 1080×1920, pinterest 1000×1500, youtube 1280×720) and as one-page PDFs.
Making the QR code
Any QR library produces a PNG or SVG you can host and pass by URL. Two common ones: node-qrcode for JavaScript and qrcode for Python. In Node:
import QRCode from 'qrcode';
import { writeFile } from 'node:fs/promises';
// A large PNG with the default quiet zone; upload it where the renderer can fetch it.
await writeFile('table-12.png', await QRCode.toBuffer('https://northwind.cafe/order?table=12', { width: 800, margin: 4 }));
Upload the file to your storage or CDN and send its public URL. Image fields take public URLs fetched when the card renders; private or internal addresses are refused.
One card per table, ticket or product
curl -X POST "https://shareglint.com/v1/batches" \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"template": "qr-card",
"format": "pdf",
"rows": [
{ "id": "t12", "filename": "table-12", "headline": "Order from your table", "cta": "Scan to see the menu", "url_label": "northwind.cafe/t12", "qr": "https://cdn.example.com/qr/table-12.png" },
{ "id": "t13", "filename": "table-13", "headline": "Order from your table", "cta": "Scan to see the menu", "url_label": "northwind.cafe/t13", "qr": "https://cdn.example.com/qr/table-13.png" }
]
}'
Each row is one card; format: pdf gives a one-page vector PDF per card, at the template's size (96 px per inch), ready for the print shop, and the ZIP contains them all named by filename. Rows per batch by plan: Free 50, Starter 500, Pro 1,000, Scale 2,000, Business 5,000. For screens and social posts, use PNG instead.
Make it scan
QR codes fail in print more often from layout than from data. QR Code was invented by DENSO WAVE and is standardised as ISO/IEC 18004 (qrcode.com); in practice:
- Keep the quiet zone. The white margin around the code is part of it. Do not let the template's background, a border or a shadow eat into it — generate the code with its margin and keep it on a white or very light area.
- Contrast. Dark code on a light background. Brand-coloured codes work if the contrast stays high; inverted (light on dark) codes may not scan on every phone.
- Size. Bigger is safer, especially on posters read from a distance. Generate the code image larger than it will be shown, so it stays sharp.
- Short URLs. A shorter URL makes a simpler code with bigger modules that scans more easily from further away.
- Test before printing. Scan the rendered card — not the bare code — with several phones, in the light where it will hang.
Always print the URL in words under the code (url_label) for people who cannot scan.
Codes that change
If the destination of a code may change — a seasonal menu, a campaign page — point the code at a short URL you control and change the redirect instead of reprinting. The card itself stays the same: same code, same file. If you do need new codes, generate them, upload them, and run the batch again; only the rows whose code URL changed render anew, so reprinting ten tables out of sixty costs ten renders.
Where QR cards are used
- Restaurants and cafés: table cards for menus and ordering (restaurant menu specials).
- Events: badges and tickets with check-in codes from your ticketing system (event graphics).
- Retail and packaging: inserts linking to manuals, warranties or reorder pages, one code per product.
- Social posts: "scan to join" or "scan to download" cards, where a QR code on screen is useful to people viewing on another device.
Cost
One render per card and size; repeats are free. Sixty table cards as PDFs are 60 renders, once. The Free plan's 100 renders carry a watermark — test with it, but not for print; Starter is $9 a month for 2,000 renders (pricing).
What it does not do
- It does not generate, track or shorten QR codes or URLs.
- It does not produce multi-up print sheets (several cards on one A4 page); each PDF is one card, and your print shop or a PDF tool imposes them.
- It does not check that a code scans; test the printed result.