QR Code Generator

Logo, gradients, rounded dots, custom eyes — updated live as you type.

{{ __t('giro_intro_hint') }}

{{ __t('giro_iban_invalid') }}
{{ __t('giro_amount_invalid') }}
{{ __t('giro_amount_hint') }}
{{ (payload.giroText || '').length }} / 140

{{ __t('giro_ec_note') }}


{{ __t(s.labelKey) }}
{{ __t(s.labelKey) }}
{{ __t(s.labelKey) }}

{{ __t('gradient_rotation') }} {{ dotRotation }}°
{{ __t('gradient_rotation') }} {{ eyeRotation }}°

{{ __t(f.labelKey) }}

{{ size }} × {{ size }} px

{{ __t('empty_preview') }}

What is a QR code?

A QR code (Quick Response Code) is a two-dimensional barcode developed by Denso Wave in 1994. It can store text, URLs, contact info, Wi-Fi credentials and more, and is read by virtually every smartphone camera without a dedicated app.

This QR code generator supports six content types and rich styling: rounded dots, custom eyes, color gradients and a logo in the center — all in your browser, no sign-up, no watermark.

Common use cases

  • URL — business cards, menus, posters, landing pages
  • Wi-Fi — guests connect by scanning, no need to type the password
  • vCard — full contact details straight to the address book
  • Email / SMS — pre-filled messages with subject and body
  • GiroCode — SEPA transfer by scan; the banking app fills in amount, IBAN and reference automatically

GiroCode: QR Code for SEPA Bank Transfers

A GiroCode is a QR code based on the EPC069-12 standard from the European Payments Council. It carries every detail of a SEPA transfer – beneficiary, IBAN, optional BIC, amount and remittance information. When the payer scans it with their banking app, the transfer form is already filled in, eliminating typos in the IBAN or amount.

GiroCodes are recognized by virtually all German and Austrian banking apps and many across Europe. They are ideal for invoices, donation appeals, membership fees, reminders or posters – anywhere someone should transfer money quickly and without errors.

Create a GiroCode – step by step

Generate a scan-ready GiroCode in under a minute:

  1. Select the GiroCode tab above.
  2. Enter the beneficiary name and IBAN. The BIC is optional for current SEPA transfers.
  3. Optionally add an amount and remittance text – or leave the amount blank so the payer can choose it.
  4. Download the QR code as PNG or SVG and print it on your invoice, flyer or poster.

Note: the amount is given in euros. If you leave the amount field empty, the payer can enter it themselves – handy for donations. The whole code is generated in your browser; no bank details are sent to any server.

Error correction levels (L, M, Q, H)

QR codes have four error correction levels: L (~7%), M (~15%), Q (~25%) and H (~30%). Higher levels keep the code scannable even when damaged or partially covered by a logo, at the cost of denser modules. M is fine for paper print; use Q or H if you overlay a logo or place the code outdoors.

How QR codes work internally: ISO/IEC 18004

The QR code was invented in 1994 by Denso Wave (a Toyota subsidiary) for fast scanning of car parts in manufacturing. "QR" stands for "quick response". Since 2000 the format is standardized as ISO/IEC 18004. A QR code consists of a matrix of black and white squares ("modules") sized as one of 40 versions depending on payload. Version 1 is 21x21 modules and holds up to 25 alphanumeric characters at low error correction (level L). Version 40 measures 177x177 modules and can carry up to 4296 alphanumeric, 7089 numeric or 2953 byte-encoded characters. Nothing more fits.

The three large squares in the corners are finder patterns. They allow scanners to recognize the code regardless of rotation or skew. The fourth, smaller square at the bottom right is the alignment pattern — it helps with perspective correction. Between them sit the timing patterns: alternating black-white modules acting as a coordinate ruler. These structures are fixed and carry no data; they occupy roughly 30% of a small QR code. Only the remaining area gets filled with payload and Reed-Solomon error correction.

The four error-correction levels (L, M, Q, H) let the code stay readable after physical damage. L (low) tolerates 7% loss, M (medium) 15%, Q (quartile) 25%, H (high) 30%. Higher levels need more modules, making the code denser. Default is M; for QR codes with a center logo, choose at least Q so the logo doesn't break readability. Outdoor use (posters, shop windows, stickers) benefits from H against dirt and UV fading. Key rule of thumb: the logo must cover at most 30% of the code area, otherwise Reed-Solomon correction fails.

Step by step: build a QR code correctly

For a reliably scannable QR code in production:

  1. Pick data type: URL, Wi-Fi, vCard, email, SMS. Shortest URLs (max 40 chars) yield densest codes — consider a URL shortener if needed.
  2. Match error correction to use: M for digital, Q for logo overlay, H for outdoor/print/stickers.
  3. Mind the minimum size: 2x2 cm for 30 cm scan distance, 5x5 cm for 1 m, 30x30 cm for 5 m. Rule of thumb: 1:10 ratio (code edge to scan distance).
  4. Keep the quiet zone clear: 4 modules of white margin around the code. Without it many scanners fail to detect the finder patterns.
  5. Test before printing: scan with at least three different devices (iPhone, Android, older smartphone) and different lighting.

Concrete capacity and application examples

Putting capacity figures into practice:

  • Short URL https://calcsi.com (18 chars) → version 2, 25x25 modules — crisply printed it scans at 2 cm code size.
  • Long URL with tracking params (200 chars) → version 9, 53x53 modules — minimum 4x4 cm for reliable scanning.
  • Wi-Fi code WIFI:T:WPA;S:Home;P:password123;; (40 chars) → version 3, 29x29 modules — iOS/Android auto-join when scanned.
  • vCard with name, phone, email, URL (~150 chars) → version 7, 45x45 modules — scanning opens the contact-import dialog.
  • Maximum: 4296 alphanumeric characters (level L) → version 40, 177x177 modules — only useful on posters A2 size or larger, otherwise too dense to scan.

Limits and typical pitfalls

Even a technically perfect QR code can fail if the environment is wrong. Glossy paper (high-gloss print) reflects flash light and makes smartphone camera scanning impossible — prefer matte paper or larger codes. Ink print on absorbent paper can cause module bleeding, so codes need at least 0.5 mm line width. Low contrast (e.g. dark-blue code on black background) breaks scanning — foreground/background contrast must be at least 50%, ideally black on white. On strongly curved surfaces (bottles, mugs) the alignment marker helps only so much; more than 30 degrees of curvature is problematic. For web use: avoid PNG scaling, always export at the exact print size. SVG is preferable to any anti-aliasing artifacts.

Frequently asked questions

Which error correction level should I choose?
For digital display M (15%) is enough. With a logo: at least Q (25%). For print, stickers, posters: H (30%). Higher levels use more modules — often no problem for short data.
How small can a QR code be?
Rule of thumb: code size = scan distance / 10. For 1 m scan distance, ~10x10 cm is enough. Minimum 2x2 cm for close use. Below 1.5 cm print size, many smartphone cameras fail.
Can I change a QR code afterwards?
A static code is fixed. To change content afterwards ("dynamic QR codes") use a URL shortener like bit.ly or your own redirect service: the code points to a constant short URL, the destination can change.
Are my data sent to a server?
No. The code is generated entirely in your browser via JavaScript. The logo is embedded locally too — no upload, no tracking.
Which format should I export: PNG or SVG?
SVG for print (scales losslessly, crisp edges in printing). PNG for web/social media (fast, compatible). Avoid PNG upscaling: export at target size directly.
Can a QR code contain malware?
The code itself can't — it is just text. But the encoded link can point to phishing or malware pages. Scanners typically show the URL for confirmation first — always inspect before tapping.
Which banking apps recognize a GiroCode?
Almost every banking app from savings banks, cooperative banks and private banks in Germany and Austria supports the EPC/GiroCode standard. Open the QR feature in the app (usually inside the transfer dialog) and scan the code – the transfer details are filled in automatically.
Is it safe to create a GiroCode online?
Yes. At CalcSI the GiroCode is generated entirely in your browser – the IBAN, amount and beneficiary never leave your device. A GiroCode only contains the same data printed on any invoice; sensitive login credentials are never part of the code.

Related tools