QR Code Generator

Type any text or URL, pick an error correction level and size, and download a QR code PNG — generated entirely in your browser.

Live preview — updates as you type.

How it works

1

Type your content

A URL, a plain message, contact info — anything you want encoded into a scannable code.

2

Tune the settings

Pick an error correction level and output size — the preview updates live as you change either.

3

Download the PNG

One click downloads a ready-to-print or ready-to-share PNG at your chosen size.

What people use a QR code generator for

QR codes bridge print and screen — a phone camera turns a printed pattern straight into a link, a contact card, or a message.

Linking print materials to a website

Menus, business cards, event flyers

Quick Wi-Fi or contact sharing

Testing a deep link during development

Packaging labels linking to instructions

A few things worth knowing

The pattern isn't drawn with any custom logic here — it's generated by the well-established, widely-used qrcode-generator library (MIT-licensed), vendored locally so nothing loads from a third-party CDN at runtime. That library implements the same Reed-Solomon error correction and matrix-placement rules used by essentially every QR encoder, so the codes this tool produces scan the same way any standard QR reader expects.

Error correction level is a real tradeoff, not just a setting to max out: a higher level makes the code more resilient to damage or a logo overlay, but it also packs more redundancy into the same physical space, which can make a code with a lot of text visually denser and slightly harder for some cheap cameras to scan from a distance. For a code that will be printed clean and kept intact, Medium is usually enough.

Text is converted to UTF-8 bytes before encoding, so accented characters, non-Latin scripts and emoji all round-trip correctly — the QR standard itself doesn't care what the bytes represent, only that a compliant scanner decodes them back to the same bytes you started with.

Frequently asked questions

What does the error correction level do?

It controls how much of the QR code's data is redundant, so a scanner can still read it even if part of the code is damaged, dirty, or partially covered (for example by a logo placed in the middle). L (Low) can recover about 7% of the code, M (Medium) about 15%, Q (Quartile) about 25%, and H (High) about 30%. Higher levels make the QR code visually denser for the same content, since more of it is error-correction data rather than your original text.

Which error correction level should I use?

Medium (M) is a reasonable default for most uses. Use High (H) if the code will be printed small, displayed somewhere it might get scuffed or partially obscured, or if you plan to place a logo over the center. Use Low (L) only when you need the smallest, simplest possible pattern and the code will be displayed cleanly, since it leaves the least room for scan errors.

Why does the QR code pattern change size for the same text?

QR codes come in fixed "versions," each with a set grid size that can hold a certain amount of data at a certain error correction level. This tool automatically picks the smallest version that fits your text and chosen error correction level, so both longer text and a higher error correction level can push the code to a bigger, denser grid.

Is there a limit to how much text a QR code can hold?

Yes. The QR code standard tops out at a few thousand characters even at the lowest error correction level, and in practice most scanners struggle with anything that dense. This tool enforces a generous but finite input length and will show a clear error rather than silently failing if you go over it.

Will this QR code work for special characters, accents, or emoji?

Yes. Text is encoded as proper UTF-8 bytes before being turned into the QR code, so accented letters, non-Latin scripts, and emoji all encode and scan correctly on modern QR readers.

Is this QR code generator free to use?

Yes, completely free, with no account, no sign-up, and the QR code generated entirely in your browser — the text you enter is never sent to a server.