QR Code Generator
Create QR codes for links, Wi-Fi, contacts, email, phone and SMS. Choose colours and error correction, add a logo, download PNG or SVG.
Processed locally in your browser. Your text is not uploaded.
What this tool does
Turn a web address, a block of text, Wi-Fi login details, an email, a phone number, an SMS or a contact card into a scannable QR code. Pick the content type, fill in the fields, and the code updates as you type. Wi-Fi codes use the standard WIFI: format with the special characters in names and passwords escaped correctly, so phones can join the network by scanning.
You control the size (up to 2048 px), the quiet-zone margin, the foreground and background colours and the error-correction level. Higher levels let a code survive more damage or a logo in the middle, at the cost of a denser pattern. The tool warns you when your colours are too close together or inverted, because many scanners cannot read light-on-dark or low-contrast codes.
The QR matrix is calculated and drawn in your browser. Nothing you type, and no logo you add, is sent anywhere. Download a PNG for documents and screens or an SVG for print, where it stays sharp at any size.
How to use it
- 1Choose a content type: text, URL, Wi-Fi, email, phone, SMS or contact (vCard).
- 2Fill in the fields. The preview updates immediately.
- 3Adjust size, margin, colours and error correction. Keep dark-on-light with strong contrast for the most reliable scanning.
- 4Optionally upload a logo. The tool switches to the highest error-correction level automatically.
- 5Download the PNG or SVG, or copy the image or the encoded content. Scan the result with a phone before printing a large batch.
Supported formats
Outputs PNG and SVG. Logo upload accepts PNG, JPG, WebP and SVG images.
Privacy
This tool runs in your browser. The data you provide is processed on your device and is not sent to our servers.
Limitations
- A QR code holds a limited amount of data: roughly 1,270 bytes at the highest error-correction level and up to about 2,950 bytes at the lowest. Longer input is rejected with an error.
- A centre logo covers part of the code. Error correction level H can recover from this, but scan the finished code on more than one device. A very large logo can make it unreadable.
- Custom colours, low contrast and inverted (light on dark) codes may not scan on every reader. The warning is a guide, not a guarantee.
- Codes are static: the content is fixed inside the pattern. There is no tracking or editing after you print it.
- Contact cards use basic vCard 3.0 fields. Some phones ignore fields they do not support.
FAQ
Does the QR code expire or stop working?
No. The code simply contains your text, so it works as long as the thing it points to does. If you encode a URL, the code is only as permanent as that web page.
Which error-correction level should I pick?
M (about 15% recovery) is a good default. Use Q or H for codes that will be printed on rough surfaces, folded or partly covered. Adding a logo forces level H.
How do I make a Wi-Fi QR code?
Choose Wi-Fi, enter the network name and password, and pick the security type your router uses (usually WPA/WPA2). Tick hidden network only if the SSID is not broadcast. Phones that support Wi-Fi QR codes will offer to join when scanned.
PNG or SVG?
Use SVG for print and anything that may be scaled, since it is vector and stays sharp. Use PNG for slides, chat apps and web pages.
Is the content stored anywhere?
No. The code is generated locally in your browser and nothing is uploaded.
Related tools
Barcode Generator
Generate Code 128, EAN-13, EAN-8, UPC-A, Code 39, ITF-14 and more with validation and check digits. Download PNG or SVG.
Password Generator
Create strong random passwords and passphrases with your browser's secure random generator. Choose length and characters, see the entropy. Never sent anywhere.
Email Signature Generator
Build a clean, table-based HTML email signature with photo, contact details and social links. Live preview, copy as HTML or rich text, download.
Lorem Ipsum Generator
Generate placeholder text by paragraphs, sentences or words. Start with the classic opening, wrap in HTML paragraphs, or use a seed for repeatable output.