QR Generator

QR Code Generator

Turn any text or link into a QR code. It runs entirely in your browser, so nothing you type is uploaded — and the codes it makes never expire.

Customise
4

Make a QR code for something specific

A QR code holding a plain link is only one of the things the format can do. The pages below build the right payload for you, so a phone recognises what it has scanned and offers the right action — joining a network, opening a payment app, saving a contact — instead of showing you a wall of text.

How it works

Type your text and press Generate. The code is drawn on a canvas in your browser using error correction level L and a four-module quiet zone — the white border scanners need to find the code's edges. You can copy it to the clipboard, download it as a PNG at around 950 pixels, or, on a phone, send it straight to the share sheet.

The downloaded PNG is deliberately larger than what you see on screen. QR codes are drawn from square modules, and scaling a small image up later turns those squares into grey mush that scanners struggle with. Starting large and scaling down is safe; the other direction is not.

Nothing you type leaves your browser

This matters more than it sounds. Most free QR generators send whatever you type to a server to render the image — which means your Wi-Fi passphrase, your UPI ID or your client's phone number is now sitting in somebody's log file. A fair number go further and put a redirect of their own in the middle of your link, so they can count the scans and, in some cases, start charging you once the code is printed.

None of that happens here. The encoder is a JavaScript library your browser downloads once and runs locally; the page has no upload path for your text at all. The codes it produces point directly at whatever you typed, with no redirect in between, so they keep working whether or not this site does.

The site does count anonymous usage — how many codes were generated, and whether each was a link, a Wi-Fi network, a payment or a contact. The content is never part of that.

Printing a code that actually scans

The rule of thumb is that a code needs to be about a tenth as wide as the distance it will be scanned from. A code on a table tent read at 30 cm can be 3 cm across; one on a poster read from three metres needs to be 30 cm. Err on the large side — oversized codes cost nothing, undersized ones simply don't work.

Keep the white border. It looks like wasted space and it is the first thing designers crop; it is also how a scanner tells where the code ends. Keep the contrast high and dark-on-light: inverted codes, light-on-dark, and low-contrast pastel pairs all fail on a meaningful share of scanners even though they look fine to you.

Then test it. Scan the printed article — not the file on screen — with both an iPhone and an Android phone before you print a thousand of them.

Frequently asked questions

Do these QR codes expire?

No. The information is encoded in the pattern itself, so the code works for as long as whatever it points at works. There is no account behind it, no redirect that could be switched off, and nothing that stops working if this site disappears. Codes from services that offer scan tracking are usually the opposite — they encode a short link on the provider's domain, and that link is theirs to expire or start charging for.

Is there a limit to how much text I can put in?

The format tops out around 2,900 bytes at the error correction level used here, but you will want to stop well before that. Every extra character adds modules, and a dense code needs to be printed larger and scanned in better light. For links, shorter is genuinely better — a long tracking URL can double the size of the pattern.

Can I see how many times my code was scanned?

Not with a code from this site, and it is worth understanding why. Scan counting requires the code to point at a redirect the provider controls, so that they see every scan before forwarding the visitor on. That means a third party in the middle of your link, and a code that stops working if they shut the redirect down. If you need the numbers, put your own tracking parameters on the destination URL and read them in your own analytics.

Do you store what I type?

No. There is no request that carries it. The page counts anonymous events — a code was generated, of what kind — and the content is deliberately never attached to them. You can confirm this yourself in the browser's network tab.

Does it handle emoji, Hindi or Chinese text?

Yes. The payload is encoded as UTF-8, which every current scanner reads correctly. Our Android app does the same. Some older generators restrict you to Latin-1 and will refuse anything outside it, so if a code from elsewhere rejects your text, that is usually why.

Which error correction level does it use?

Level L, which can recover from about 7% damage and produces the smallest code for a given payload. Higher levels exist mainly so a code can survive a logo pasted over the middle of it, or printing on something that creases. If you plan to overlay artwork, generate the code here, then rebuild it at a higher level with a tool that supports overlays.