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;; |
| “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-1212becomes the+12125551212in 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.