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.
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 125+ 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.
Apple Wallet (formerly Passbook) stores boarding passes, event tickets, store cards, coupons, and loyalty cards directly on iPhone. Each pass is a .pkpass file, a signed bundle of JSON, images, and metadata, hosted on a public URL. When an iPhone user opens that URL (or scans a QR linking to it), Safari prompts them to add the pass to Apple Wallet with one tap.
How Apple Wallet passes work
A .pkpass file is a ZIP bundle containing a pass.json manifest, images (icon, logo, strip, background, footer), a manifest.json with SHA-1 hashes of every file, and a signature, a PKCS#7 detached signature over the manifest, produced with a Pass Type ID certificate issued by Apple. The pass.json declares the pass style (boardingPass, eventTicket, storeCard, coupon, generic), a unique serialNumber, the Pass Type ID, and any fields that will render on the front or back.
Passes can also declare a webServiceURL and an authenticationToken. When the user adds the pass, iOS registers a push channel against the webServiceURL via APNs. Your backend can then push updates (a boarding gate change, a store-card balance, a score update) and every installed copy of the pass refreshes within seconds. The QR you generate with this page never changes, it always points at the latest version of the .pkpass URL.
Host the .pkpass file anywhere that serves HTTPS with the correct MIME type application/vnd.apple.pkpass: S3 + CloudFront, Dropbox, your own Nginx/Caddy server, Cloudflare R2. Dropbox public links work but require adding ?dl=1. Google Drive does NOT work reliably, Drive's scan-and-virus check intercepts the download flow.
When to use this vs a generic URL QR
A generic URL QR opens Safari to whatever page you point it at, an install page, a landing page, a redirect. An Apple Wallet Pass QR skips Safari entirely when the URL ends in .pkpass or uses the passkit:// URI scheme: iOS recognizes the content type before committing to a browser and opens the native Add-to-Wallet sheet directly. One tap, pass installed.
Use this generator when the destination is the pass file itself and you want zero-friction install. Use a URL QR when you want to show a landing page first (upsell, disclaimer, region selector) or when the pass file doesn't exist yet and the user needs to sign up.
How to use this generator
Generate or obtain your .pkpass file (signed by Apple-issued pass certificate) and host it on a public HTTPS URL with the correct application/vnd.apple.pkpass MIME type.
Paste the full .pkpass URL into our generator.
Customize the QR style and download as PNG or SVG.
Print or display the QR. iPhone users scan with their camera, tap the Safari preview, then tap "Add" in the Wallet sheet.
Common uses
Event tickets, concerts, conferences, sports games. Pass auto-updates seat or gate via push.
Loyalty cards, coffee shops, restaurants, retailers. No more plastic cards.
Coupons, discount codes that surface at the right time and location via geofencing.
Boarding passes, airlines, ferries, trains. Auto-surfaces on the lock screen at the airport.
Membership cards, gyms, libraries, clubs.
Android users
Apple Wallet passes only work on iPhone. Android users who scan a .pkpass QR will see Chrome attempt to download a file their phone can't use. The cross-platform pattern is to generate a separate Google Wallet QR (uses pay.google.com/gp/v/save/{jwt} save URLs) and label each QR with the platform, or to put both QRs side-by-side on the same poster with "iPhone" and "Android" labels. If you need a single QR that handles both, host a device-detecting redirect, /pass that reads User-Agent and serves the .pkpass URL to iOS clients and the Google Wallet save URL to Android.
If the pass concept you're distributing is Apple-first (Apple Music, iMessage, FaceTime handoffs), our Apple Music QR and FaceTime QR generators are purpose-built for those flows.
Compliance checklist
Only distribute .pkpass URLs you own or are authorized to distribute. Apple's Pass Type ID certificate binds each pass to a specific developer account; passes signed by revoked / expired certificates stop working and the Wallet app shows a tampering warning. Apple's PassKit team also revokes certificates in response to platform-abuse reports.
Content-Type matters: serve application/vnd.apple.pkpass. Passes served with application/octet-stream download as a file on iOS instead of triggering the Add-to-Wallet flow, a common misconfiguration that leads to customer-support tickets.
Payment passes are separate: standard .pkpass supports boarding, ticket, coupon, generic, store-card, event-ticket. Payment passes (NFC tap-to-pay cards) require a PNP agreement with a card issuer + bank and additional Apple Wallet & Apple Pay entitlements from the Developer Program.
Consumer protection: FTC Endorsement Guides and EU Consumer Protection Cooperation Regulation apply to coupon and loyalty passes. Terms displayed in the pass must match what the customer signed up for; surprise expiry, blackout dates, or forfeiture clauses are unenforceable without prior disclosure.
Data minimisation: .pkpass passes are updated via push with a web-service URL you host. Every update is a data collection event under GDPR / CCPA. Document the legal basis and retention period.
Location services: geofenced coupons require iOS Location Services permission. Under GDPR, lawful basis for location-based push must be explicit consent; under the ePrivacy Directive this cannot rely on legitimate-interest.
When not to use this
Do not distribute .pkpass files that mimic airline boarding passes, event tickets, or government IDs you do not have authority to issue. Fake boarding passes bypass TSA / ICAO pre-screening displays and are prosecutable as forgery; Apple's fraud team revokes passes and pursues repeat offenders through developer-agreement termination.
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
Do I need a paid Apple Developer account to create .pkpass files?
Yes. Signing a .pkpass file requires a Pass Type ID certificate from your Apple Developer Program account ($99/year). Once signed, the .pkpass can be hosted anywhere, our generator just turns its URL into a QR. We don't sign passes on our end.
Can the QR contain the pass directly instead of a URL?
No. Apple Wallet passes are too big to fit in a QR (typically 50–500 KB including images). A QR can hold roughly 3 KB max. The standard pattern is to host the .pkpass on your server and put the URL in the QR, exactly what this generator does.
What MIME type should my server send?
Serve the .pkpass file with Content-Type: application/vnd.apple.pkpass. Without the correct MIME type, Safari may try to download or display it as a generic file instead of triggering the Add to Wallet flow.
Will Android users see anything when they scan?
Android users will see whatever Safari (iPhone) or their default browser does, usually a download of the .pkpass file, which is unusable on Android. For cross-platform passes, generate a separate Google Wallet QR.
Can the pass update after the user adds it?
Yes. If your .pkpass declares a webServiceURL, your server can push updates (boarding gate changes, score updates, balance changes) to all installed copies via APNs. The QR you generate doesn't change, it always points to the latest version of the pass URL.
Does this work with Google Wallet?
No, Apple Wallet and Google Wallet use different pass formats and save URLs. For Android, use our dedicated Google Wallet QR generator at /google-wallet-qr-code/. A common pattern is to print both QRs side-by-side on the same poster, each labeled with its platform.
What file host works best for .pkpass files?
S3 + CloudFront, Cloudflare R2, or your own Nginx/Caddy server are the most reliable. Dropbox public links work if you append ?dl=1. Google Drive does NOT work reliably, its virus scan intercepts the download flow and breaks the Add-to-Wallet handoff. Whatever host you use, serve the file with Content-Type: application/vnd.apple.pkpass.
Why is my pass not installing when I scan the QR?
The top three causes: (1) wrong MIME type, serve application/vnd.apple.pkpass, not application/octet-stream; (2) invalid signature, pass was signed with an expired or revoked Pass Type ID certificate, so iOS shows a tamper warning; (3) the hosting URL redirects, and iOS lost the content type through the hop. Test by opening the .pkpass URL directly in Safari on an iPhone, if it doesn't trigger Add-to-Wallet there, the QR isn't the problem.