QR Code Generator (PNG and SVG, Made in Your Browser)
Type or paste a link, text, Wi-Fi login, email address or phone number and the QR code appears at once, with no sign-up and nothing uploaded. The example address https://ponderloop.com/tools/qr-code-generator/ (47 bytes) becomes a version 4 code of 33 × 33 modules at error correction level M, drawn with a 4 module quiet zone as the standard asks. Download it as a PNG or a scalable SVG, or copy it. The encoder is written for this site to ISO/IEC 18004, so the code is built on your device.
Updated Runs in your browser: nothing you enter is uploadedHow this tool works
What should the code say?
Your QR code
Encoded text
https://ponderloop.com/tools/qr-code-generator/
- Version
- 4 (33 × 33 modules)
- Mode
- Byte (UTF-8)
- Error correction
- M, restores about 15% damaged data
- Data codewords
- 49 of 64 used
- Mask pattern
- 2
- Image
- 256 × 256 px, 6 pixels per module, 4 modules quiet zone
Made on your device: nothing you type is uploaded, saved or put in the address of this page.
How much a QR code holds
| Version | Size (modules) | Level L | Level M | Level Q | Level H |
|---|---|---|---|---|---|
| 1 | 21 × 21 | 17 | 14 | 11 | 7 |
| 2 | 25 × 25 | 32 | 26 | 20 | 14 |
| 3 | 29 × 29 | 53 | 42 | 32 | 24 |
| 4 | 33 × 33 | 78 | 62 | 46 | 34 |
| 5 | 37 × 37 | 106 | 84 | 60 | 44 |
| 7 | 45 × 45 | 154 | 122 | 86 | 64 |
| 10 | 57 × 57 | 271 | 213 | 151 | 119 |
| 15 | 77 × 77 | 520 | 412 | 292 | 220 |
| 20 | 97 × 97 | 858 | 666 | 482 | 382 |
| 25 | 117 × 117 | 1,273 | 997 | 715 | 535 |
| 30 | 137 × 137 | 1,732 | 1,370 | 982 | 742 |
| 40 | 177 × 177 | 2,953 | 2,331 | 1,663 | 1,273 |
Error correction levels
| Level | Restores up to | Version for the example | Size of the example |
|---|---|---|---|
| L (low) | 7% of the codewords | 3 | 29 × 29 modules |
| M (medium) | 15% of the codewords | 4 | 33 × 33 modules |
| Q (quartile) | 25% of the codewords | 5 | 37 × 37 modules |
| H (high) | 30% of the codewords | 6 | 41 × 41 modules |
Largest amount of data (version 40)
| Mode | Characters | Level L | Level M | Level Q | Level H |
|---|---|---|---|---|---|
| Numeric | Digits 0 to 9 | 7,089 | 5,596 | 3,993 | 3,057 |
| Alphanumeric | 0-9 A-Z space $ % * + - . / : | 4,296 | 3,391 | 2,420 | 1,852 |
| Byte (UTF-8) | Anything else | 2,953 | 2,331 | 1,663 | 1,273 |
What each type writes into the code
| Type | Format | Example |
|---|---|---|
| URL | The address as typed (https:// is added to a bare domain) | https://example.com/menu |
| Text | The text as typed, in UTF-8 | Gate code: 4821 |
| Wi-Fi | WIFI:T:<security>;S:<name>;P:<password>;H:true;; | WIFI:T:WPA;S:Guest;P:welcome123;H:true;; |
| mailto:<address>?subject=<subject>&body=<message> | mailto:hello@example.com?subject=Hello%20there&body=Line%20one%0D%0ALine%20two | |
| Phone | tel:<number>, digits and a leading + | tel:+15551234567 |
Wi-Fi escaping
| Character | Written as |
|---|---|
| \ | \\ |
| ; | \; |
| , | \, |
| : | \: |
| " | \" |
How to make a QR code
- Choose what it should say. Pick URL, Text, Wi-Fi, Email or Phone and fill in the boxes. The code updates as you type, and the encoded text is shown under it so you can check it.
- Set error correction, size and colors. Level M is a good default (about 15% of the codewords can be restored); choose Q or H if the code will be printed on something that can get scuffed or if you place a logo over it. Keep the quiet zone at 4 modules and keep dark modules on a light background. A warning appears when the colors have too little contrast.
- Download or copy it. Download PNG for documents and screens, Download SVG for print and anything that must stay sharp at any size, or copy the image or its text. Then scan it with a phone before you print many.
Frequently asked questions
- Is this QR code generator free, and is my data sent anywhere?
- It is free and it works entirely in your browser. The QR code is calculated on your device by code that ships with this page, so the link, the Wi-Fi password and the email address are never uploaded. They are not saved or put in the page address either. The codes are static: they hold the data itself, so they never expire and nothing can track the scans.
- Which error correction level should I choose?
- Error correction adds Reed-Solomon codewords so a damaged symbol can still be read. Level L restores about 7%, M about 15%, Q about 25% and H about 30%. Higher levels make the code larger: the example address is version 3 at L and version 6 at H. Use M for screens and clean prints, and Q or H for stickers, outdoor signs or codes with a logo in the middle. A bigger, simpler code at a lower level is usually easier to scan than a dense one.
- How big is the quiet zone, and why does it matter?
- The quiet zone is the empty border around the code. The standard (ISO/IEC 18004) asks for at least 4 modules on every side, which is the default here, and scanners use it to find where the code starts. You can set it from 0 to 16 modules, but the page warns when it is under 4.
- How much text fits in a QR code?
- At most 7,089 digits, 4,296 alphanumeric characters or 2,953 bytes at the lowest error correction level, and 1,273 bytes at the highest. The tool picks the most compact mode that holds your text and the smallest version that fits, and tells you if the text is too long. Shorter content gives a simpler code that is easier to scan, so a short link beats a long one.
- How do I make a Wi-Fi QR code?
- Choose Wi-Fi, enter the network name and password, and pick the security type (WPA covers WPA, WPA2 and WPA3 personal networks). The code holds a string like WIFI:T:WPA;S:Guest;P:welcome123;;. The characters \ ; , : and " are special in that string, so the tool puts a backslash in front of each of them. Current iPhone and Android cameras offer to join the network when they scan it. Anyone who can scan the code can read the password from it, so only share it where you would share the password.
- Which colors can I use?
- Any CSS color for the dark modules and the background. Scanners need strong contrast: below 3:1 the page warns you, and 4.5:1 or more is safer. Dark modules on a light background read best; a lighter foreground than background (an inverted code) is flagged because some scanners cannot read it. The contrast ratio is the WCAG 2 one used by this site's color contrast checker.
- Should I download PNG or SVG?
- PNG is a fixed grid of pixels, good for web pages, slides and documents; the tool draws each module as a whole number of pixels so the edges stay sharp, and may add a little extra background margin so the image is exactly the size you asked for. If the size is too small for the number of modules, the image is made as small as one pixel per module. SVG is vector drawing: it stays sharp at any size, so use it for print, signs and stickers.
- Does it work with emoji and non-English text?
- Yes. Text that is not plain digits or capital letters is written as UTF-8 bytes in byte mode, and the tool counts bytes, not characters, when it checks the limit. The standard has an optional character-set marker, which this tool leaves out, as most generators do; modern phone cameras read UTF-8 correctly without it, but a few older readers show unexpected characters for non-ASCII text.
- Why will my code not scan?
- The usual causes are low contrast, an inverted or colored code on a busy background, a missing quiet zone, a code printed too small for its density, or a screen glare. Make the code larger, use black on white, keep the 4 module border, shorten the content, or lower the error correction level to get a less dense symbol. Always test with a real phone before you print.
- Is the encoder correct?
- It implements the Model 2 QR Code of ISO/IEC 18004 from the standard: numeric, alphanumeric and byte modes, versions 1 to 40, Reed-Solomon error correction over GF(256), block interleaving, all 8 mask patterns chosen by the four penalty rules, and the BCH-protected format and version information. Its test suite checks the data and error correction codewords against published reference examples, checks the format and version bit strings, and decodes generated symbols for every version and level back to the original text. It does not support Kanji mode, structured append or Micro QR.
How it works
The text is converted to the string for the chosen type (Wi-Fi strings are escaped, email values are percent-encoded, phone numbers are reduced to digits and a leading +). The tool then picks the most compact single mode (numeric, alphanumeric or UTF-8 bytes), the smallest version from 1 to 40 whose data capacity at the chosen error correction level holds the segment (a 4-bit mode indicator, a character count of 8 to 16 bits for bytes, then the data), and pads to capacity with the terminator and the alternating bytes 0xEC and 0x11. The codewords are split into the blocks the standard gives for that version and level, each block gets its Reed-Solomon error correction codewords (polynomial arithmetic over GF(256) with x^8 + x^4 + x^3 + x^2 + 1), and the blocks are interleaved. They are placed in the zig-zag order around the finder, alignment and timing patterns. Each of the 8 mask patterns is tried and scored with the four penalty rules (runs of five or more same-colored modules, 2×2 blocks, finder-like patterns, and the balance of dark and light modules), and the lowest score wins, the first on a tie. Format information (level and mask) and, from version 7, version information are added with their BCH codes. The symbol is drawn with a 4 module quiet zone unless you change it. For PNG, each module is a whole number of pixels, so the size you ask for is rounded down to a multiple of the module count and the rest is background margin. For colors, a transparent color is blended over white, and the contrast ratio is WCAG 2 relative luminance, with a warning under 3:1. Everything runs in your browser; nothing you enter is sent anywhere.
Sources
- ISO/IEC 18004:2015, Information technology: Automatic identification and data capture techniques: QR Code bar code symbology specification
- ZXing wiki: Barcode Contents, Wi-Fi Network config (WIFI: string and escaping)
- RFC 6068: The mailto URI Scheme
- RFC 3966: The tel URI for Telephone Numbers
- Thonky: QR Code Tutorial (worked example for HELLO WORLD)
- RFC 3629: UTF-8, a transformation format of ISO 10646
More free tools
- URL Encode & DecodePercent-encode or decode URLs and query strings with correct UTF-8, split a URL into parts and parameters, and catch double-encoding. Runs in your browser.
- Color Contrast CheckerCheck the WCAG 2.2 contrast ratio of text on a background, see AA and AAA pass or fail, preview it live, and get the nearest text color that passes.
- Color Converter & Contrast CheckerConvert any CSS color between HEX, RGB, HSL, HWB, CMYK and OKLCH, find the nearest named color, and check WCAG 2 contrast for AA and AAA text.
- Image ResizerResize and compress JPEG, PNG and WebP images by width, height, percent or longest side, and convert the format. Runs in your browser; nothing is uploaded.
- Barcode GeneratorMake Code 128, EAN-13, UPC-A, EAN-8 and Code 39 barcodes with check digits and quiet zones. Download PNG or SVG at your size and DPI. Made on your device.
- Word CounterCount words, characters, sentences and reading time, and check your text against X, LinkedIn, Instagram, SMS and meta description limits.