How to Create a QR Code for Free (URL, Text, Email)
Generate a clean, scannable QR code for any link or text, right in your browser — download as PNG or SVG, no sign-up, no tracking.
What a QR code is for
A QR code packs text — usually a URL — into a pattern a phone camera can read instantly. It's the fastest way to move someone from the physical world to a link: menus, business cards, posters, packaging and event invites all use them.
Because a QR code is just encoded text, creating one needs no account and no personal data — and that includes whatever you choose to encode.
How the standard actually works
The specification, ISO/IEC 18004, defines 40 versions. Version 1 is a 21×21 grid of modules and each step up adds four modules per side, so version 40 is 177×177 — 40 versions in total. A symbol also carries one of four error correction levels: L recovers about 7% of the codewords, M about 15%, Q about 25% and H about 30%.
The payload is split into blocks, each block gets Reed-Solomon error correction codewords appended, and the blocks are interleaved so that a scratch crossing several blocks damages them evenly rather than destroying one. On top of that sit the function patterns — the three finder squares, the timing lines, the alignment grid and the dark module — and finally eight candidate data masks are generated and scored so the least visually confusing one wins.
Generating one in your browser
The QR Code Generator encodes from scratch in TypeScript rather than delegating to a third-party package, and the whole thing runs on your device. Nothing about the code is sent anywhere, so a Wi-Fi password or a private link stays private.
One deliberate simplification: the tool picks a single mode for the whole string. Digits are cheapest, then uppercase alphanumeric, then UTF-8 bytes. A single lowercase letter in an otherwise uppercase string therefore pushes everything into byte mode and cuts capacity. Splitting a string across modes would fit more characters at the price of a denser, harder-to-scan code.
Text outside ASCII is written as UTF-8 bytes with no ECI header, which is the assumption most readers make. Some scanners decode those bytes differently and show garbled characters instead — worth testing if non-Latin text matters to you.
Capacity, and why your URL fits less than you expect
At error correction level L, version 40 holds 7,089 digits, 4,296 uppercase alphanumeric characters, or 2,953 bytes. A typical https:// URL is mostly lowercase, so it lands in byte mode and its real ceiling is closer to the byte figure. Raising the error correction level shrinks every one of these numbers.
Designing codes that scan
High contrast between the modules and the background matters most: aim for at least a 4:1 ratio, which means near-black on white rather than a pale tint. Keep the four-module quiet zone around the code — the tool includes it, and cropping it is one of the most common causes of a failure.
For print, judge the size by module rather than overall width. Each module needs about 0.5 mm or more for a phone camera to resolve it, which is roughly 83 mm across for a version 40 code and 40 mm for a version 4. Print at 300 dpi or better.
Use the SVG for print and for anything that will be resized: it is vector, so it scales without resampling. The PNG is a raster image and only looks sharp at the pixel size you exported.
Avoid inverting the colours. A light-on-dark code reads on many modern phones and fails on plenty of others, so treat it as a risk you have tested rather than a free stylistic choice.
Error correction and file format
Error correction balances data density against damage resilience: L reserves the least space for recovery, M is a safe all-round default, and H is worth the extra density for stickers and packaging that get scratched or handled.
Higher error correction repairs damage to the modules themselves. It cannot rescue glare, motion blur, a curved surface, or a code printed too small to resolve — those are optical problems, not data problems, and no level setting fixes them.
Testing before you print in bulk
Scan the finished code with the phone you expect to be used, under the lighting and at the distance it will actually be read. No generator can guarantee a code scans in every condition, and one test is worth a hundred reprinted signs.
Try it free — QR Code Generator
Turn any text, URL, or Wi-Fi configuration string into a QR code. Customize colors, error correction, and size, then download as PNG or SVG. Nothing is uploaded.
Open QR Code Generator