Free online QR code generator

Type any text or link to instantly generate a clean QR code. Choose the error-correction level, output size, margin and foreground / background colours, then download a PNG or copy it in one click. Generation happens entirely in your browser — no watermark, nothing uploaded.

QR code content

Waiting for input
Any text or URL is supported (Chinese and Emoji are encoded as UTF-8); one code holds up to about 2953 bytes depending on the error-correction level.

Preview

Version / EC
-
Module grid
-
Content bytes
0 B

How a QR code works — and why a damaged one still scans

A QR code is really a tiny storage device written in black and white squares. The three finder patterns in the corners let a camera locate the code and judge its rotation, a timing pattern supplies the coordinate grid, and the middle area lays out data and error-correction codewords on a grid whose size grows with the version (Version 1 to 40, from 21x21 up to 177x177 modules). This tool picks the smallest workable version for your content and shows the version and module count under the preview.

What lets a QR code survive damage is Reed–Solomon error correction: every codeword carries redundant check data. The four levels can recover roughly 7% (L) / 15% (M) / 25% (Q) / 30% (H) of damaged modules. Higher levels resist dirt and tearing better but carry less data, so the same text can jump two versions and look noticeably denser. Use Q or H for outdoor, handled or poorly printed codes; L or M is fine on screens or for long content. Those logos you see in the middle of many codes sit in the spare room that H-level correction gives up.

On privacy there is a line people often get wrong: generating is offline, scanning is online. This tool encodes your text directly into the pixels with the browser Canvas, so nothing is transmitted when you make a code — even a private link. But the instant you print or display it, that link is public: everyone who scans gets the address itself. A dynamic code that redirects to a changeable target needs a third-party service to record and forward it, which buys the flexibility to retarget later at the cost of the service going down, the code dying when a plan expires, and the platform seeing who scans. A static code has none of that — but what you print is what stays forever, so confirm the link before printing.

For print and placement, a few practical rules: denser codes need larger physical size — aim for at least 0.4 mm per module, and roughly 3x3 cm minimum for a URL on press or a poster. Keep a quiet zone of at least two modules on every side (this tool defaults to four). With custom colours, keep strong foreground/background contrast; inverted (light-on-dark) codes work on most readers but are less reliable than standard. Choose the 1024 px output for high-resolution print — PNG is lossless, so edges stay crisp when scaled up.

Before a large print run, always test-scan with your own phone and a second device: batch printing cannot be recalled the way a web link can.

Frequently asked questions

Is the content I encode kept private?

The QR code is generated entirely in your browser, so nothing is sent anywhere while you create it. But remember: once a code is printed or shown, anyone who scans it reads the encoded text — a code is public by nature.

Which error-correction level should I pick?

M (15%) is the balanced default. Use Q or H for codes that will be outdoors, handled or printed at low quality, and for codes with a logo in the middle. Higher levels survive more damage but hold less data, so the same text may jump to a denser version.

Can I put a link that is not yet online?

A QR code only stores text; it goes live when a phone opens the link. Make sure the URL resolves on the public mobile internet before printing — a dead link is the most common reason a scan fails.

What is the maximum data size?

About 2953 bytes at the lowest level, shrinking as you raise error correction. Chinese and Emoji use more bytes because they are stored as UTF-8.