Make a QR code
Choose what the code should do, type it in, and download the code as a PNG or SVG sized for print. The code is made inside your browser and never expires, because no server sits between the code and its destination. Text goes in exactly as typed, a web address as a browser reads it, and Wi-Fi, email, call and text message details in the standard formats phones read; the page shows what the code holds before you download it.
QR Code Generator
- Runs on your deviceNo upload. Nothing you enter leaves your browser.
- Free, no accountNo sign-up, nothing stored on our servers. Limits: up to 2,953 bytes in one code at the lowest error correction; logo pictures up to 2 MB; PNG files up to 4,096 pixels wide.
- FormatsA web address, Wi-Fi details, email, phone number or text in; PNG and SVG out
- Works onCurrent Chrome, Edge, Firefox and Safari, desktop and mobile.
How it works
- Choose what the code should do: open a web address, join a Wi-Fi network, start an email, a call or a text message, or show text. Fill in the fields; the code and its checks update as you type.
- Set the colours, the margin and the error correction. If you like, add a logo: choose a picture file (PNG, JPEG or WebP) from your device. The page only allows a logo size that the code can still be read through.
- Type the printed width and download the PNG or the SVG. Scan the code with your phone before you print many copies.
Questions
Do these QR codes expire?
No. What the code holds is written into its pattern of squares, and nothing is looked up on a server when someone scans it, so it keeps working as long as the destination does. The other side of that: a printed code cannot be changed later. If you may need to change where it leads, point it at a page on your own site and change that page instead.
Is my Wi-Fi password safe here?
It is never sent anywhere: the code, the PNG and the SVG are made by your browser on your device, and the password goes into the code and nowhere else. But a Wi-Fi code is not a secret: anyone who can photograph the printed code can read the password from it, so put it where only your guests see it.
Which phones can read the codes?
The codes follow the QR code standard ISO/IEC 18004 (Model 2), versions 1 to 40, with the four error correction levels. The encoder is checked in this site's tests against ReportLab's, an independent implementation, and every file the page makes is read back with the zxing-cpp barcode reader. Wi-Fi, email, call and text message codes use the common formats that camera apps recognise (WIFI:, mailto:, tel: and SMSTO:); what a phone then does, such as offering to join the network, is up to the phone.
How big can the logo be?
The page works out which parts of the code a logo would cover. It allows a logo only when each block of the code keeps at least half of its error correction for smudges, glare and camera blur, and never over the square finder patterns or the smaller alignment patterns scanners use to straighten the image. At some sizes, such as versions 7 to 13, an alignment pattern sits in the very centre, so no logo is offered; shorten the content or change the error correction level. Which levels allow a logo therefore depends on what the code holds, not simply on how high the level is: a higher level makes a larger code, which can move an alignment pattern into the centre. The page lists the levels that allow a logo for your content, with the largest size at each. When you add a logo, a level you chose yourself is kept if the logo fits at it; otherwise the page picks the level with the most room and says so under Error correction, with the level it was and why. When no level has room, the level is left as it is. Always test-scan the downloaded file.
What colours can I use?
Any, as long as the modules are clearly darker than the background. The page shows the contrast and warns below 4:1; codes with light modules on a dark background are read by most phone cameras but by many hand-held scanners not at all. With a transparent background the code takes the colour of what it is printed on.
How large should I print it?
A rule of thumb is that a code scans from about ten times its width: a 3 cm code from about 30 cm. Each module should be at least about 0.3 mm; the page warns below that. Keep the margin of 4 modules around it. The PNG carries its print size, so it prints at the width you typed; the SVG is sized in millimetres and stays sharp at any size.
What are the campaign tracking fields?
They add the UTM parameters (utm_source, utm_medium, utm_campaign and the optional ones) that analytics tools such as Google Analytics read, so visits from the printed code show up as their own source. They go at the end of the address's query, before any #fragment, and the other parameters keep their order. When you fill in a field, a UTM parameter of that name already in the address is replaced by the field's value (the page names it when the value differs), and a UTM parameter that appears more than once is kept once, which the page says too. With or without campaign fields, the address is written as a browser reads it. For example, https:// is added in front when no scheme is typed, the scheme and the site name are put in lower case, a site name with letters outside ASCII is written in its ASCII form (xn--), a default port (:443 for https, :80 for http) is left out, /./ and /../ are resolved, a backslash becomes /, a site name alone gains its /, and a character a browser escapes, such as a letter outside ASCII in the path, is written as % codes. Apart from such changes, capital letters in the path, escapes such as %2f and a + stay as typed. What the code holds is shown under it before you download. This page counts no scans itself.
Can I make many codes at once?
Label Maker makes a sheet of labels with a QR code for every row of a list, for example one per product or table.
Can I create codes in bulk?
Yes. Paste CSV with name,payload headings to download up to 100 SVG QR codes and an exact JSON manifest as a ZIP. Batch codes use a separate black-on-white, 40 mm design with a four-module margin. No short-link hosting or scan tracking is provided.
Is anything uploaded?
No. The page loads a small script into your browser and every calculation runs on your device. You can check this yourself in the browser's network panel: after the page has loaded there are no upload requests. Closing the tab discards what you entered.
Do I need an account or to pay?
No. These basic tools are free and store nothing on our servers. The only limits are the tool's own: up to 2,953 bytes in one code at the lowest error correction; logo pictures up to 2 MB; PNG files up to 4,096 pixels wide.
What does this page keep in my browser?
Nothing you open or type. While the tab is open, the tool pages keep a short list of the steps taken in it, in the tab's session storage: the step (page opened, started, succeeded, first success, used again or failed), the tool's name, the time, how many files were used and, for a failure, an error code; never a file name, the contents of a file or your text. It holds at most the latest 200 steps, and the browser deletes it when the tab closes. The page never sends it. Where a Report a problem button is shown, you can attach the last 20 steps to your report; nothing is attached unless you tick that box. In local storage the page keeps only choices you made: a Light or Dark theme until you choose System again, the language you picked with the EN / 中文 switch if it differs from your browser's language, and this tool in your recently used list if you switched that list on at the tools page.
Questions or problems
Found a problem or missing feature? Tell us. Please describe the steps; do not send confidential data.