Bulk QR codes, explained
A bulk QR code generator turns a list into one code per line, so you can label products, inventory, seats or tickets without making each code by hand. Everything is generated in your browser, one code after the other, and packed into a single ZIP.
// 10 qr types
URL · Plain text · WiFi credentials
Email with subject & body
SMS · Phone (tel:) · vCard contact
GPS location (geo:) · Calendar event
Cryptocurrency (BTC, ETH, LTC, XMR)
// output formats
PNG — at 128, 256, 512 or 1024px
SVG — infinitely scalable, ideal for print
Copy to clipboard — paste into any app
Shareable link — QR encoded in URL
ZIP archive — for bulk generation
// customization
Dot styles — square, rounded, dots
Color themes — 6 presets + full custom
Logo overlay — upload any image
Error correction — L/M/Q/H (up to 30%)
// privacy
100% client-side — QR content never sent to a server
Keeps working offline — once the page has loaded
No account — no signup, ever
No tracking of your inputs — only a cookieless page-view count
Is there a limit on how many codes I can create?
There is no quota or paid tier: the tool simply loops over every line of your list in your browser. The practical limit is your device's memory, because every code stays in memory until you download the ZIP; a few hundred codes at 512 px is comfortable, and 1024 px codes take the most room.
How are the files in the ZIP named?
Each PNG is named after its label, or after the content when there is no label, with http:// or https:// removed, other characters replaced by _ and the name cut to 40 characters. Names that come out the same get _2, _3 and so on, so nothing is overwritten. Give every line a label (Table 12,https://…) for readable file names.
What if my text contains a comma?
A comma within the first 60 characters of a line is read as the label separator, so Hello, world would become the label Hello with world as content. Put a label in front (Greeting,Hello, world): only the first comma splits, the rest is encoded as written.
Can I use bulk QR codes as event tickets?
Yes. Give every ticket a unique value (for example Ticket 001,EVT-2026-001), generate and print the codes, and open the 🎟 Check-in tab at the door. It scans continuously: a first scan flashes green with a beep, a code that was already scanned flashes red with a double buzz and shows when it was first used. The same code held in front of the camera is ignored for 2.5 seconds, so it is not counted twice. You get live valid, duplicate and total counters and a CSV export (checkin-YYYY-MM-DD.csv). The session is stored in that one browser and survives a reload, but it is not shared between devices, so use one scanning device per list.
What types of QR codes can I generate?
10 types: URL (any web link), plain text, WiFi (SSID + password + security, scans directly connect), Email (with pre-filled subject and body), SMS, Phone (click to call), vCard (full contact card — name, phone, email, org, title, address), GPS location (opens maps app), Calendar event (iCalendar format), and Cryptocurrency (Bitcoin, Ethereum, Litecoin, Monero).
How do I add a logo to my QR code?
In the ⚡ Generate tab, use logo overlay in the settings panel to upload an image (PNG, SVG, JPG …). It is drawn in the centre at about 22% of the code width, on a white rounded square. Uploading a logo switches error correction to H (also the default), so the code survives the covered centre. The logo is included in the PNG download and the copied image, but not in the SVG download or in bulk codes.
What is SVG export and why use it?
SVG (Scalable Vector Graphics) is a resolution-independent format. Unlike PNG which becomes blurry when enlarged, an SVG QR code scales perfectly to any size — ideal for business cards, posters, merchandise, presentations, and print materials. Click ↓ SVG in the download bar after generating.
How do I scan and read a QR code?
Switch to the Scan & Read tab. Either drag & drop a QR code image, click to upload one, or tap Start camera scan to use your device camera in real-time. The tool uses jsQR entirely in the browser to decode — the image is never uploaded anywhere. Uploaded images are read as dark modules on a light background, so a light-on-dark code (such as the default Terminal theme) is only recognised by the camera scan.
How do I create a WiFi QR code?
Select the 📶 WiFi type. Enter your network name (SSID), password, and security type (WPA/WPA2 is most common). When a phone scans the QR code, it will automatically offer to connect to that network — no typing required.
What dot styles are available?
Three styles in the ⚡ Generate tab: Square (standard, maximum compatibility), Rounded (rounded modules) and Dots (circular modules). The style applies to every module, including the three corner finder patterns, and is kept in the SVG download; bulk codes always use square modules. Square is the safest choice; test rounded or dots with a few phones before you print.
Can I create a vCard QR code to share my contact?
Yes. Select the 👤 vCard type and fill in any combination of name, phone, email, organization, job title, website, and address. When scanned, the phone offers to add the contact directly to the address book — no app required.
Do QR codes expire?
Static QR codes never expire. The data is baked into the pattern — there is no external service or server involved. Unlike dynamic QR codes from paid services, these work forever as long as the linked URL remains active.
Is my data sent to a server?
The content you encode is not sent to a server: QR generation, SVG export, bulk processing and scanning all run in your browser with JavaScript. The page loads its QR libraries (qrcodejs, jsQR and JSZip) from the cdnjs CDN and counts page views with cookieless Simple Analytics. Two things to know: in the single-code generator your last six codes are kept in this browser's local storage for the recently generated list, and the address bar is updated to ?data=… with the encoded content, so it lands in your browser history. Your bulk list is not stored at all.
Can I link directly to a generated QR code?
Yes. The generator reads a data URL parameter and the address bar stays in sync as you type, so you (or an AI assistant) can build a deep link by hand. Open ?data=https%3A%2F%2Fexample.com to load that QR pre-generated — a value starting with http opens as a URL QR, anything else as a text QR. The aliases url, text and content also work, and the share button copies the current link. Links carry at most the first 300 characters of the content, so a long text or vCard is cut off in a shared link. Older #hash links keep working too.
More free tools