Verify our privacy claims live, from your browser▾
These values are computed in your browser right now. No server round-trip. Click any row for a one-line explanation.
Outbound requests after page load…Expected: 0Everything runs in your browser, so no data ever leaves after the initial page load.
Third-party domains contacted…Expected: 0No analytics, no CDN fonts, no avatar services, no trackers, single origin only.
Cookies set…Expected: 0No session, no analytics, no preferences in cookies. Nothing to sync, nothing to leak.
localStorage keys…Only your saved QRs and preferencesSaved templates, history, and language preference. Inspected in Application → Local Storage.
Service worker status…Offline-readyStatic assets cached for offline use. You can disable your network and the generator still works.
Network status…Offline proof: turn off WiFi, click Generate. Still works.The simplest proof. If this were secretly a client for a server, offline would break it.
This symbology renders monochrome with foreground and background colours only. Templates, dot/eye shapes, gradients, frames, and centre logos are QR-only features and are hidden here.
Show 30 more templates
Save a style with the button above to keep your favourites here.
#000000
#FFFFFF
#8B5CF6
Upload an image to use as your frame.
Drag the QR to position, scroll or pinch to zoom, use the slider to rotate.
Show 108 more icons
No icons match your search.
Any letter, number, or emoji works. Emoji 🎉 ❤️ 🍕 ⭐ make it pop, and still scan reliably.
Renders behind the QR at adjustable opacity. Auto-forces EC=H so the QR still scans through the photo.
Batch Generation
Upload a CSV to generate up to 500 QR codes in a single batch. Each row becomes its own QR, pick a template or override 21 properties on a per-row basis: colors, frames, dot/eye/eyeball styles, gradients, transparency, size, error correction, format, built-in logo, and more.
21 columns: type, data, filename, frametext, frame, template, fgcolor, bgcolor, size, ec, dotstyle, eyestyle, format, logo, gradient, g2, gtype, gangle, transparent, eyeball, eyecolor. Only type and data are required. Use | to separate fields inside data (e.g. ssid|password|WPA).
All 130+ QR/barcode types supported, including URL, WiFi, vCard, TOTP, Swiss QR-bill, PIX, PromptPay, ZATCA, PayNow, Bitcoin + Lightning, and more. Download the sample CSV to see every column, all 50 templates, 22 frame styles, and 375 built-in logo icons in action.
1. Download the sample CSV · 2. Edit it in Google Sheets, Excel, Numbers, or any text editor · 3. Upload it here
Your link is encoded inside the QR itself, no server in the middle, nothing to expire, nothing to renew. Print it once, it keeps working.
Save the entire QR (type, all field values, style, frame, logo, business card design) as a single .qr.json file. Load it later to recreate everything in one click.
Enter content to generate your QR code
Encoded payload
Recent
You're editing an existing Pro code. Click "Update Pro code" below to save your changes back to Pro.
Need to change the destination after it's printed?
Same no-lock-in approach as the free tool. Pro lets you change the destination after printing and see who's scanning (country and device only, never IP or cookies). Every dynamic code ships with a static backup, so there's nothing we can turn off. From $9/month billed annually.
EPC Girocode is the European Payments Council's standard for encoding SEPA Credit Transfer details into a QR code (specification EPC069-12). It's most widely used in Germany, Austria, and Switzerland, where it appears on invoices, donation forms, and utility bills under the name "Girocode" or "GiroCode". When a customer scans it with their banking app, the recipient name, IBAN, amount, and reference are pre-filled, they only need to confirm and authenticate.
Girocode vs SEPA QR, what's the difference?
They use the same EPC069-12 payload format. "Girocode" is the German/Austrian brand name and is recognized by virtually every banking app in the DACH region (Sparkasse, Volksbank, Deutsche Bank, Commerzbank, ING, DKB, N26, Erste, Raiffeisen, etc.). "SEPA QR" is the broader European term. Our generator outputs an identical payload either way, pick the page that matches the audience you're printing for.
How to create a Girocode
Recipient name, the name on the receiving account (max 70 chars).
IBAN, international bank account number (e.g. DE89 3704 0044 0532 0130 00).
Amount (optional), fixed payment amount in EUR. Leave blank for open-amount QRs.
Reference / Purpose (optional), invoice number or payment description (max 140 chars).
BIC (optional), required only for non-EEA SEPA countries; most banks derive it from the IBAN.
Common uses
Invoices (Rechnungen), eliminate IBAN typos at payment time.
Donation requests for churches, NGOs, and political parties.
Utility bills, rent receipts, and recurring service invoices.
Event tickets, conference fees, and club membership renewals.
Compliance checklist
Conform to the EPC069-12 Girocode / SEPA QR spec v3.0. Non-conforming payloads (missing service tag, wrong version, bad character set) are silently rejected by Sparkasse and Volksbank apps even if scannable.
Merchant identification: German / Austrian retail invoices must include the Händler's full legal name, address, USt-IdNr (VAT ID), and Handelsregister number per UStG §14 / §14a. These must appear next to the Girocode, not only in the QR payload.
Refund rights: under PSD2 as transposed into German ZAG and Austrian ZaDiG, payers retain 13-month unauthorised-transaction dispute rights. Merchants cannot waive via terms printed with the QR.
Charitable fundraising: Germany's regional Sammlungsgesetze (e.g. Baden-Württemberg) and Austria's Spendenabsetzbarkeit rules require charity IDs alongside donation QRs. For tax-deductible donations, print the Spendenbescheinigung issuer ID.
GDPR: a printed IBAN + recipient name is personal data under the DSGVO (and BDSG / DSG). You are the controller; don't reproduce another merchant's Girocode without written agreement.
Direct debit mandates are separate: a Girocode initiates a one-off SEPA Credit Transfer. It cannot authorize a recurring SEPA Direct Debit, that requires a signed mandate under Regulation (EU) 260/2012 Art. 5.
When not to use this
Do not print a Girocode with a reference field that implies recurring authority ("mandate for monthly payments"). SEPA SCTs are one-off pushes; such wording misleads the payer and is actionable by Verbraucherzentrale under UWG §§3, 5.
Also by Abundera
E-signatures that hold up in court
Abundera Sign goes beyond basic e-signatures. Every document gets cryptographic proof, independent verification, and a tamper-evident evidence package.
Auto-generated court-ready evidence packages
Personal Document Seal, detects tampering instantly
Anchored to 5 independent systems, no single point of failure
Almost every German, Austrian, and Swiss banking app: Sparkasse, Volksbank, Deutsche Bank, Commerzbank, ING-DiBa, DKB, comdirect, N26, Postbank, Erste Bank, Raiffeisen, Bank Austria, BAWAG, Hypo, UBS, Credit Suisse, Raiffeisen Switzerland, and most fintech apps. Outside DACH, support is more uneven, many banks recognize the underlying SEPA QR format even if they don't market it as Girocode.
Is Girocode the same as Swiss QR-bill?
No. Switzerland has its own newer standard (Swiss QR-bill, also called QR-Rechnung) that replaced the old red and orange payment slips in 2022. Swiss QR-bill is a different payload format and includes a Swiss cross in the middle. Girocode is the EPC EU standard and is also accepted by many Swiss banking apps for SEPA EUR transfers, but for domestic CHF payments inside Switzerland, use Swiss QR-bill instead.
Does the QR need a logo or specific branding?
The EPC069-12 spec doesn't require any logo, the QR works on its own. In practice, most printed Girocodes carry a small "Girocode" or banking-app icon next to the code so users recognize they can scan it with their banking app. You can add one with our logo overlay feature if you like.
Can I use Girocode for non-euro payments?
No. The EPC069-12 specification is locked to EUR. For other currencies you need a different rail entirely, wire transfer, SWIFT, or a payment URL.
What's the maximum amount?
The EPC069-12 spec allows up to 999,999,999.99 EUR per transaction, but the practical limit is set by your bank's daily transfer cap. SEPA Instant Credit Transfer is capped at 100,000 EUR per transaction in many countries; standard SEPA has no inherent cap but banks impose their own.