QR Code Generator
Generate a QR code for any URL, text, Wi-Fi credential, or plain string.
How to use
- Paste the URL, text, Wi-Fi string, or vCard into the Content field.
- Adjust size, error-correction level, colors, and margin as needed.
- Click Download PNG or Download SVG.
- Test the code by scanning it with your phone before printing it.
What does it do?
The tool turns any string into a QR code. It supports all four standard error correction levels (L / M / Q / H), custom foreground and background colors, a configurable quiet-zone margin, and two output formats (PNG raster or SVG vector). The QR version is chosen automatically based on the amount of data you type.
Example
Input: https://freetoolspot.com
Size: 300 × 300
ECC: M (15% recovery)
Margin: 2 modules
Output: 300 × 300 PNG, black on white, ~1.2 KB Why is my QR code not scannable?
If a generated QR won't scan, it is almost always one of these.
- Insufficient contrast. Pale gray on white or dark blue on black usually fails. Scanners need strong contrast — prefer near-black on near-white.
- Inverted colors (light on dark). The QR spec assumes
dark modules on a light background. Some phones tolerate inversion,
many do not. Use
#000000foreground on#ffffffbackground unless you have tested on many devices. - Margin set to 0. QR codes need a "quiet zone" of blank space around them — the spec calls for at least 4 modules, this tool defaults to 2 which works in most cases. If the code touches nearby text or graphics, scanning fails.
- Logo overlay too big for the ECC level. Covering more than ~30% of the code breaks it even at level H. Keep logo overlays under ~20% of the total area.
- Printed too small. Rough rule:
scan distance ÷ 10= minimum QR side length. A QR at arm's length needs ~2 cm; across a room it needs ~30 cm. - Upscaled a small PNG. Blowing up a 128 × 128 PNG to poster size blurs the module edges. Use the SVG download for print — it stays crisp at any size.
Is my data private?
Yes. We don't save any of the content you encode — not URLs, not Wi-Fi passwords, not vCards, nothing. Every input is discarded when you close or refresh the tab, and there's no log or record on our side of what you turned into a QR. Feel free to verify in your browser's developer tools.
Frequently asked questions
How much data can a QR code hold?
The theoretical maximum is 4,296 alphanumeric characters, 7,089 digits, or 2,953 bytes — but only at error-correction level L and the densest version. In practice, keep URLs under ~300 characters so the code stays easy to scan. If you need to encode more, use a URL shortener.
Which error-correction level should I pick?
L (7% recovery) produces the sparsest, easiest-to-scan code — use it for screens. M (15%) is a good default for print. Q (25%) and H (30%) make the code denser but let it survive a center logo overlay, smudges, or a crease. Pick H only if you plan to overlay a logo.
Why is my QR code not scanning?
Almost always one of: insufficient contrast between foreground and background, dark background with light foreground (scanners expect the opposite), margin set to 0 so the code touches other content, or a logo overlay too big for the error-correction level. Use dark-on-light, margin 2+, and test before printing.
Should I download PNG or SVG?
Use SVG for anything that will be printed, scaled, or placed in a design tool — it stays sharp at any size. Use PNG if the target only accepts raster images (most social platforms, some email clients). SVG also has a much smaller file size for QR codes.
Can I encode Wi-Fi credentials or a contact card?
Yes. Use the format WIFI:S:MyNetwork;T:WPA;P:mypassword;; for Wi-Fi (phones will offer to join). For a contact, paste a full vCard text block. Most phone cameras recognize both formats automatically when scanned.
Do you save the content I encode into QR codes here?
No. We don't save any of the URLs, Wi-Fi credentials, vCards, or plain text you encode. Nothing is stored or logged, and everything is discarded the moment you close or refresh the tab. There's no record on our side of what you encoded. You're welcome to verify in your browser's developer tools.