🔒 100% Private — Nothing Leaves Your Browser

QR Code Generator — Create, Customize & Batch Generate QR Codes Privately

Generate static QR codes for URLs, WiFi networks, vCards, UPI payments, WhatsApp chats, and 8 more types — with custom colors, gradients, shapes, and your logo. Bulk-generate hundreds of codes from a CSV spreadsheet and download them as a ZIP. Every QR is rendered in your browser using the open-source qr-code-styling library. Your content, Wi-Fi passwords, and contact details never leave your device. No signup, no watermarks, no usage caps, no expiring codes.

Most "free" QR generators either upload your data to their servers, bury usable features behind a 14-day trial that silently expires your printed codes, or cap your downloads. This tool does none of that. Static QR codes generated here work forever because they encode your data directly — no redirect through our domain, no dependency on our servers staying online.

100% browser-based Works offline Unlimited & free No signup, no watermarks

Uses qr-code-styling (MIT licensed) for rendering. Error correction per ISO/IEC 18004. Last updated: April 2026.

QR Code Generator

URL

Enter a full link or a domain; we add https:// when no protocol is present.

Design

Colors & gradients
Module & eye shapes

Data modules (dot style)

Corner (finder) frame

Inner corner dot

Logo
Advanced

Larger borders help scannability on busy backgrounds. Live preview: 300×300 px; exports use the size you choose below.

Enter a URL to see the QR preview.

How QR codes work (and why "static" matters)

A QR code is a two-dimensional grid of modules — the black and white squares you see in the pattern. The camera reads the arrangement of those modules to recover the original data (a URL, contact card, Wi-Fi string, and so on). The ISO standard defines versions 1 through 40: each step up uses a larger grid and can store more data. When you add characters, the encoder often moves to a higher version, which is why the same style of code can look "busier" as the payload grows.

Error correction adds redundant information so a partially damaged, dirty, or covered code can still decode. Levels are often labeled L, M, Q, and H (roughly 7% through 30% recovery). Higher correction makes the pattern denser but tolerates more abuse — including a logo in the middle if you keep the logo size modest.

A static QR code embeds your destination or payload directly. What you encode is what every scan sees, today or in ten years, with no company in the middle. A dynamic code, by contrast, usually encodes a short link that points to someone else's server; that server decides where to send the user and can log every scan. That is useful for analytics and for changing a destination after print — but it means you depend on that service staying online, honest, and affordable for as long as your stickers and posters last. This tool is static-only: the pattern is the message, not a pointer we can rewrite later.

The 12 QR code types, explained

URL — The most common use: open a website, landing page, or deep link. Put one on a poster, product card, or table tent so people can open your page without typing.

Plain text — Encodes a short message or code (coupon text, stock ID, instructions). Handy when you do not want a network round trip; the scanner just shows the string.

Email — Opens the user's mail app with a pre-filled recipient and optional subject and body. Use for support addresses, press contacts, or feedback lines on packaging.

Phone — Starts a voice call to the number you specify. Event hotlines, doctor offices, and "call us" campaigns use this to avoid mis-dialed digits.

SMS — Opens a text to a number, optionally with a pre-written message. Common for short codes, opt-ins, and "text KEYWORD to …" style campaigns.

WiFi — Joins a network from the scan: guests at cafés, short-term rentals, and small offices use it so visitors never see a password written on a sticky note. The payload follows the standard WIFI:… format.

vCard — Bundles contact fields (name, org, phone, email) for one-tap "add to contacts." Networking events, business cards, and lanyard badges are typical use cases.

WhatsApp — Starts a chat with your business number, optionally with opening text. Widely used for customer support in India, Brazil, and other markets where WhatsApp is the default channel.

UPI (India) — Encodes the upi://pay link so GPay, PhonePe, Paytm, BHIM, and bank apps can show a pay screen. Street vendors, drivers, and small shops use these for real-time bank transfers.

Location (geo) — Opens maps at latitude and longitude, sometimes with a label. Useful for venue doors, trailheads, and "we are here" print on event flyers.

Calendar event — Carries a vEvent block so the phone can add a meeting or party to the calendar in one step. Good for wedding save-the-dates, meetups, and training sessions.

App / store link — Encodes a direct app store or your own landing URL. Many teams use a single HTTPS landing page that detects iOS vs Android; the QR always points to that one stable link.

Why browser-based generation matters

Government and law-enforcement advisories have repeatedly warned consumers about malicious QR codes: the US Federal Trade Commission (FTC) has published consumer alerts (including in 2023 and 2025) on QR-related scams and "quishing," and the FBI Internet Crime Complaint Center has highlighted risks from tampered or deceptive codes. These are public warnings about a real attack pattern: a code that looks legitimate but points somewhere harmful.

A separate, industry-wide issue affects legitimate free tools: some dynamic QR services encode a short redirect that runs on their domain, not yours. The printed code does not point to your final URL; it points to that service. If the company changes pricing, turns off a free tier, is acquired, or shuts down, your physical materials can stop working, send people somewhere else, or break in ways you cannot fix without reprinting. The comparison is structural, not a dig at any one brand — it is how redirect-based products are built.

Browser-based static generation (what you do here) never sends your Wi-Fi password, vCard, or UPI string to DoItSwift for encoding. The pattern is built from your input on your device. You can load the page once, disconnect from the network in DevTools, and still generate a code: nothing in that workflow requires a server to see your payload. That is the privacy and longevity model static codes are meant to offer.

Design tips: logo size, contrast, and error correction

Error correction and logos: At higher levels (especially Q and H), the standard allows roughly a quarter to nearly a third of the code to be obscured and still decode — which is how centered logos are possible. If you add a large image, increase correction and keep the logo small relative to the full square.

Size rule of thumb: keep the logo under about 30% of the QR width. Bigger is not always better: scanners need enough module contrast around the eyes and data area.

Contrast: the foreground (modules) should be clearly darker than the background. Inverting to light-on-dark can fail on many phone cameras. For logos, a light or white box behind a colored mark usually scans more reliably than a full-bleed dark block.

Printing tips

For a typical marketing URL, aim for a printed code at least about 2 × 2 cm (roughly 0.8 in) in quiet conditions; dense payloads (long URLs, vCards) often need about 3 × 3 cm or larger to scan comfortably on first try.

Export SVG or high-resolution PNG (e.g. 1024 or 2048 px) and send to print at 300 DPI or higher for small formats. Before you print 5,000 stickers, print one at final size, walk across the room, and scan with an ordinary phone — that single test saves more money than it costs.

Leave a quiet zone (blank margin) of at least a few modules around the pattern. Glossy lamination, foil, and strong glare from spot lighting are common real-world reasons a perfect on-screen code fails in the wild; matte stock and diffused light help.

How this approach compares to typical free QR generators

Free QR generators fall into a few broad categories — server-based generators, freemium dynamic-QR platforms, and browser-based tools like this one. Each involves different trade-offs around privacy, longevity, and cost. The comparison below focuses on the trade-offs themselves, not on any specific product.

Comparison of browser-based, server-based, and freemium dynamic QR approaches
Capability Browser-based generators (like this tool) Server-based free generators Freemium dynamic-QR services
Where generation happens In your browser On the provider's servers On the provider's servers
Works offline after first load Yes No No
Your data touches a third party No Yes, during generation Yes, continuously (scan traffic redirects through the provider)
Codes expire after a trial period No — static codes are permanent Usually no Often yes (14-day trials are common)
Signup required for full features No Usually no Yes
Bulk CSV import with full design customization Yes (here) Rarely on free tiers Usually paid
Dynamic URL editing and scan analytics No — static only, by design Usually no Yes (paid)
Logo embedding on the free tier Yes Varies Varies
Shape and gradient customization Yes Varies Yes
SVG / print-quality vector export Yes Varies Usually paid
On-page ads None Often Often
Tracking and analytics on the tool page Minimal (page analytics only) Varies Varies

This comparison describes common trade-offs across broad categories of free QR tools. Policies, pricing, and feature sets change; try any tool yourself before committing to production print runs.

Static-only, on purpose

If you need to change the destination after a poster is live, or you need scan counts and funnels per campaign, you are asking for a hosted redirect product with a real backend. Those products exist, many are paid, and that is not a failing — it is a different architecture. This page does not try to be that.

What we do instead: static codes. The data you type (or your CSV) is what gets encoded. The PNG, SVG, or ZIP you download is yours. No middle layer has to keep working for your museum label or shop window to stay valid. For many use cases — Wi-Fi at a rental, a menu link, a vCard, a UPI payee, a one-off event — that simplicity is the whole point.

Reviewed by DoItSwift Editorial. This tool uses the open-source qr-code-styling library (MIT license) for all rendering. All generation happens in your browser; no QR content is transmitted to DoItSwift or any third party. Information on QR code security risks references public warnings from the US Federal Trade Commission and the FBI Internet Crime Complaint Center.

Last reviewed: April 2026 · Static QR codes — no data stored, no analytics, no dependencies after download.

FAQ

Are my QR codes really generated in my browser?

Yes. The qr-code-styling JavaScript library runs in your browser and produces the QR image locally. No content is sent to DoItSwift for generation. You can verify this by opening DevTools → Network, generating a code, and observing that no request carries your input. You can also disconnect from the internet after the page loads and the tool still works — which is impossible for server-based generators.

Will the QR codes I download expire?

No. These are static QR codes — the data you enter is encoded directly into the black-and-white pattern. There is no redirect through our servers, no short-link layer, and no expiration date. If you encode https://example.com, the QR will always resolve to exactly that URL, forever, regardless of whether DoItSwift exists in 10 years.

Why can't I make a dynamic QR code here?

Dynamic QR codes work by encoding a short redirect URL through a service's server. To edit the destination later, the service has to keep its redirect server running, and your printed codes depend on that service staying online and honoring the link forever. We don't run a backend, so we can't offer dynamic codes. If you need editable URLs or scan analytics, you'll need a paid tool that runs its own servers — that's a different product category. We do static codes only, on purpose, because static codes don't depend on us (or anyone else) staying online.

Are there usage limits, watermarks, or signup requirements?

None. Generate as many QR codes as your browser can handle in a session. There are no download caps, no "powered by" watermarks, no trial periods, and no account to create. The tool is free to use commercially — the underlying qr-code-styling library is MIT licensed.

How does bulk generation work?

Upload a CSV with one row per QR code. We parse the CSV in your browser using Papa Parse, render each QR with qr-code-styling, and zip the results with JSZip. The ZIP downloads directly from your browser. No row of your CSV is uploaded anywhere. Very large batches (>500 codes) may take a minute and use significant memory — keep the tab open until it finishes.

What CSV format does bulk mode expect?

Three columns: type, content, filename. Type is one of the 12 supported types (url, text, email, phone, sms, wifi, vcard, whatsapp, upi, geo, event, app). Content is the value to encode — for simple types it's the text or URL; for complex types like vCard or WiFi, supply the fully-formed payload string. Filename is optional. Download the template above to see working examples.

What size and resolution should I export for printing?

For print, choose SVG (vector, scales to any size without quality loss) or PNG 1024/2048 for raster workflows. Minimum print size is about 2 × 2 cm for URL codes and 3 × 3 cm for data-heavy codes like vCards. Print at 300 DPI or higher. Always scan a test print at the intended size before mass-producing.

Why does my QR code have different pattern density as I type?

QR codes have 40 "versions" (sizes) and more data requires a higher version with more modules. As you add characters, the code automatically moves to a larger version to fit the data, which looks denser. Lower your error correction level or shorten the content to keep density lower. The version number is shown under the preview.

Can I add a logo? Will it still scan?

Yes, upload a PNG, JPG, or SVG up to 2 MB. The tool masks the center of the QR so the logo sits cleanly. Scannability is preserved by the QR standard's error correction — up to 30% of the code can be obscured at error correction level H and still decode. Keep the logo below 30% of the QR's width and use level Q or H if you add a logo.

Are WiFi, vCard, and UPI QR codes safe to share privately?

A WiFi or vCard QR code contains the credentials or contact details directly — anyone who scans it gets what's inside. That's how the format works. The privacy guarantee here is that DoItSwift never sees those credentials because generation is local; but once you print or publish the QR, anyone who scans it has the content. Treat printed WiFi or vCard QR codes the same as a printed password or business card.

Do UPI QR codes from this tool work with GPay, PhonePe, and Paytm?

Yes, if the UPI ID you entered is valid. The tool generates the standard NPCI UPI URL format (upi://pay?pa=...&pn=...&am=...&cu=INR) which all major Indian UPI apps support. Test-scan before printing for merchant use. UPI QR codes only work inside India via UPI-registered apps.

Which error correction level should I choose?

L (7%) makes the smallest code and is fine if the code will be displayed clean on a screen. M (15%) is a sensible default for most print. Q (25%) and H (30%) produce denser codes but tolerate damage, dirt, or a logo overlay. Choose H if you're embedding a logo or printing in outdoor/high-wear conditions.

Can I use this tool offline?

Yes. After the page loads once, your browser caches the scripts. Disconnect from the internet and the tool keeps working — generation, preview, export, and bulk ZIP all happen locally. A first visit on a new device requires a connection to load the page.

Is this tool free for commercial use?

Yes. Codes generated here are free to use for any purpose, including commercial projects. There is no attribution requirement. The underlying qr-code-styling library is MIT licensed.

← Generators hub