A free QR code generator that checks its own work
This QR code generator makes static QR codes for websites, WiFi networks, contact cards (vCard), calendar events, phone calls, text messages, emails, map locations and crypto payments. You can style them with colours, rounded or dotted modules, a logo and a caption. Download a crisp PNG or a vector SVG, make hundreds at once from a list, or read existing codes with your camera. There is no sign-up and no watermark, the codes never expire, and there is no redirect service in between: the content is in the pattern itself.
Why it tests every code
Styling is where QR codes break. A logo covers data, light colours lower the contrast, and dots shrink the dark area a camera looks for. So after drawing, the page decodes the image again with the open-source jsQR reader and compares the result with what you typed. A green ✓ Tested means it matches. If not, the panel tells you what to change. The three large corner squares (finder patterns) are always drawn solid, even with dots or rounded modules, because scanners use them to find the code.
What each type puts in the code
- URL: the web address. Without a scheme,
https:// is added.
- WiFi: the
WIFI:T:WPA;S:…;P:…;; format that the iPhone and Android cameras understand, with special characters escaped. Phones offer to join the network.
- vCard: a vCard 3.0 contact with name, company, title, phone, email, website and address. Commas and semicolons in your text are escaped, so a company like “Smith, Jones & Co” stays intact.
- Event: an iCalendar event with title, start, end, location and description. All-day events use dates only.
- Phone / SMS / email:
tel:, SMSTO: and mailto: links. Spaces and brackets are removed from numbers.
- Location: a
geo: link with latitude and longitude, which opens the maps app.
- Crypto: a payment link for Bitcoin, Litecoin, Ethereum (amount converted to wei) or Monero.
Text is encoded as UTF-8, so accents, emoji and non-Latin scripts come out right. The info line under the code shows its size in modules, its version (1 to 40) and how many bytes it holds.
PNG, SVG and print
The PNG uses whole pixels per module, so edges are sharp and nothing is blurred by scaling. Choose 1024 or 2048 px for print. The SVG is a vector file with your colours, dot style, logo and caption. It scales to any size and opens in Illustrator, Inkscape, Figma, Canva and Word. Keep the white border (the quiet zone): scanners need about four modules of empty space around the code. If you set it smaller, leave that space in your layout.
Bulk QR codes and ticket check-in
The Bulk tab turns a list into codes, up to 1,000 at a time: one item per line, optionally with a name before a tab or a comma (Table 12, https://…). The ZIP has PNG and SVG files plus an index.csv that lists which file holds what. Tick “use my colours, style and logo” to apply the design from the Generate tab, with each name as a caption. The Check-in tab scans tickets at the door, beeps green for a first scan and red for a duplicate, and exports the list as CSV.
Privacy
Codes are made and read in your browser. Nothing you type is uploaded. For URL and text codes the address bar holds a ?data= link you can bookmark or share. WiFi passwords and contact details are never put in a link. The last few codes are kept in this browser so you can reopen them, without WiFi passwords. The page uses no cookies and no tracking. It loads the QR, scanner and ZIP libraries from cdnjs.