Skip to content

QR Code Generator

Turn text, URLs, Wi-Fi logins, emails, phone numbers, text messages and contact cards into QR codes saved as PNG or SVG, with logo, colors and error correction.

Center logo (optional)

This image is processed only in this browser and is never uploaded.

Appearance
Error correction level

A higher level keeps the code scannable when it is dirty or partly covered, but it can hold fewer characters.

100%

100%

Preview

Enter some content and the QR code will appear here.

What you enter is processed only in this browser and is never sent to a server. How it works

A website address converted into a scannable QR code

How to use

Pick a type under “What to encode” and the matching fields appear. As soon as the required field is filled in, the QR code is drawn under “Preview”. So that the phone scanning it knows what kind of content it is, the tool rewrites your entries as text in a set format before storing them.

Type Required field Example of the text stored in the code
Text / URL “Text or URL” Exactly what you type
Wi-Fi “Network name (SSID)” WIFI:T:WPA;S:MyCafe;P:coffee\;2026;;
Email “To” mailto:hello@example.com?subject=Hi%20there
Phone number “Phone number” tel:+12125551212
Text message “Recipient’s number” SMSTO:+12125551212:Hello
Contact card “Name” A vCard 3.0 that begins with BEGIN:VCARD
  • For Wi-Fi, setting “Security” to “None (open)” removes the “Password” field, and switching on “Hidden network” stores that flag in the code.
  • A phone number needs at least two digits and may include +, parentheses, hyphens, dots and spaces. Only the number goes into the code, without the separators. +1 (212) 555-1212 becomes the +12125551212 in the table above.
  • The email “Subject (optional)” and “Body (optional)” are converted into a form that can sit inside an address. One space becomes 3 characters (%20), é becomes 6, and a single Korean, Chinese or Japanese character becomes 9, so a long message makes the code dense quickly.

Save the finished code with “Download PNG” or “Download SVG”. If your browser supports it, a “Copy image” button also appears and puts the PNG straight onto the clipboard.

Error correction levels and how much a code holds

A QR code stores its content as a grid of small black and white squares called modules. “Error correction level” sets how much recovery data is added so the code can still be read when part of it is dirty or covered. A higher level can recover from more damage, but it needs more modules for the same content and lowers the most a code can hold.

Level Damage it can recover from Max. English letters and symbols Max. 3-byte characters Modules in the sample address
L About 7% 2,953 984 33 × 33
M (default) About 15% 2,331 777 37 × 37
Q About 25% 1,663 554 45 × 45
H About 30% 1,273 424 49 × 49

The sample address is the 77-character https://example.com/products/summer-sale-2026?utm_source=poster&utm_medium=qr. The figures for English letters and symbols assume ordinary text that includes lowercase letters. With digits only, level L holds up to 7,089 digits. Characters that take 3 bytes each in UTF-8, such as Korean, Chinese and Japanese characters or the euro sign (€), fit only a third as many as English letters. Go past the maximum and a message in place of the preview tells you to lower the level or shorten the content.

Printed at the same size, a code with more modules has smaller modules, and a camera has a harder time reading them. For a short address shown on a screen, L or M is enough. For a print that may get scratched or dirty where it is posted, Q or H is the better choice. If you need more headroom, shorten the content first by stripping tracking tags from the address.

Logo and colors

“Center logo (optional)” takes a PNG, JPG, WebP or SVG image of up to 2 MB.

  • With a logo in place, “Error correction level” is locked to H, so the part the logo covers can be recovered, and you can no longer choose a level. Remove the logo and it returns to the level you had picked.
  • Under “Logo size”, “Small” is 16% of the width of the QR image and “Medium” is 20%.
  • The logo fills a square slot. A wide or tall image keeps its middle and loses both ends, so use an image that is close to square.
  • “Add background padding behind the logo” puts a border in the background color around the logo so that it doesn’t run into the modules of the code. That border is painted in the solid background color even when you make the background transparent.

“Foreground color” and “Background color” each have a slider beside them for opacity. Take the background down to 0% and you get a transparent code you can lay over another design. Three warnings can come up while you choose colors.

  • One appears when the foreground opacity is below 100%, because the modules fade depending on what ends up behind them.
  • One appears when the contrast between foreground and background is below 4:1. Pure red (#ff0000) on white falls just short of 4:1 and triggers it. Blue (#0000ff) is about 8.6:1 and does not.
  • One appears when the contrast is high enough but the foreground is lighter than the background, because some readers cannot scan a reversed code with light modules on a dark background.

The contrast and light-on-dark checks ignore the background’s opacity. Before you hand out a code with changed colors, scan it yourself with two or three different phones.

Before you print

  • Margin: “Margin (in modules)” sets the width, in modules, of the empty band around the code, known as the quiet zone. The default is 4 modules and you can set anything from 0 to 20. A camera uses that band to find the edge of the code, so if you reduce it, keep the area around the code clear in your layout. At 0, a warning tells you the code may not scan.
  • Size: “Size” is the length of one side of the PNG, margin included, from 64 to 2000 px (300 px by default). For a large print, raise the value or use the SVG, which stays sharp at any size.
  • Test scan: print one copy at the size you will really use and read it from the distance people will scan it from. If it doesn’t read, print it larger or shorten the content to bring the module count down.

Sources

Frequently asked questions

If someone scans a Wi-Fi QR code, can they see the password?

Yes. A Wi-Fi QR code holds the network name and the password as plain, unencrypted text. Joining with a single scan is convenient, but anyone who has the image can read the password with an ordinary QR reader. Treat a printout or a photo of the code as you would the password itself. The "Password" box in this tool also shows what you type without masking it, so take care if you are sharing your screen.

I entered a web address, but scanning it shows plain text and no website opens.

Check that the address starts with https://. "Text / URL" stores exactly what you type without tidying it up, so an address entered as example.com, with nothing in front, may be read as ordinary text. The ZXing documentation listed under the sources also recommends including the protocol so that the content is recognized as a URL. Spaces and line breaks before or after the address are stored too, so delete them as well.

Is it all right if my Wi-Fi name or password contains symbols like ; : , ?

Yes. In the Wi-Fi QR format the semicolon, comma, colon, double quote and backslash are the symbols that separate fields, so left as they are they would be misread. This tool puts a backslash in front of each of them for you. A password of coffee;2026 goes into the code as P:coffee\;2026, and the device that scans it turns it back into the original password.

How does a contact card QR code split the name into first and last name?

A name typed with spaces in the "Name" box is split according to its script. A name written only in Hangul, Chinese characters or kana is treated as family name first: the first word is stored as the family name and the rest as the given name. 홍 길동 becomes family name 홍, given name 길동, and 山田 太郎 becomes family name 山田, given name 太郎. For any other name, the last word is stored as the family name and everything before it as the given name. Jane Doe becomes family name Doe, given name Jane. With no space, the whole entry goes in the family name slot. This means a family-name-first name typed in Latin letters, such as Hong Gildong, is stored with the two swapped. Type a name like that as Gildong Hong. The full name shown in the address book is exactly what you typed in every case.

Does scanning a phone number QR code place a call right away?

All the code holds is a phone address such as tel:+12125551212. What happens after the scan is up to the reader app. The ZXing documentation listed under the sources says a reader should open the dialer with the number filled in but should not start the call automatically. Text message and email QR codes work the same way: they open a draft with the recipient and content already filled in.

Can I change the contents of a printed QR code later?

A QR code from this tool contains exactly what you entered. There is no short link in between, so the code doesn't depend on any service and can't expire after you make it. If it holds an address, it keeps opening for as long as the page at that address exists. The other side of this is that once a code is printed you can't change what it holds, whether that is a web address or a Wi-Fi password, and you can't tell how many times it has been scanned. If the content changes, you have to make a new code and print it again, so for a code that will stay up for a long time, use an address that isn't going to change.

Open-source software used: node-qrcode (MIT), dijkstrajs (MIT)

Last updated: