Make a QR code

The code is generated on this device. What you type is never transmitted.

If you leave off a scheme, https:// is added for you.

Dot style
Corner frame style
Corner dot style
Colors
Error correction

Higher levels survive more damage (and logos) but make the code denser.

Center logo

The image is read locally with FileReader and drawn into the code on this device. It is not uploaded anywhere.

Only the style choices above are stored, in this browser's localStorage. Content you type is never stored.

Your code appears here.

Start typing on the left — the preview updates as you go.

Exactly what this code contains

This raw string is the entire content of the code. There is no shortener, no redirect, and no hidden layer — scan it with any reader and you get exactly this.

Download

Decode any QR code

Check what a code really contains before you scan it with your phone — including codes made elsewhere. Decoding happens in this browser tab; the image is never uploaded.

Drop a QR image here, paste one from the clipboard, or press Enter to choose a file.

Verify this yourself

Don't take this page's word for anything. Each claim here is mechanical and you can check it in about a minute:

  1. Nothing you type leaves the browser. Open your browser's DevTools, switch to the Network tab, then type a URL and generate a code. No request appears — there is no backend to send anything to.
  2. It works with the network off. Turn on airplane mode (or DevTools' offline mode) and generate another code. The whole tool keeps working, because everything runs locally.
  3. Third-party code is blocked at the HTTP layer. In the Network tab, click this page's document request and look at the response headers. The Content-Security-Policy header forbids the page from loading scripts from, or connecting to, any other origin — even if the code were later modified to try.
  4. Read what actually runs. Every line of this site's application code is delivered to your browser unminified — use View Source or the DevTools Sources panel to read app.js exactly as it executes. There is no hidden code and no server-side code, because there is no server side.
  5. The code is only what you see. The raw payload shown next to the preview is the entire content of the code. Decode it with any third-party reader to confirm.

Common questions

Do QR codes made here expire?

No. Every code made here is static: the content is stored in the pattern itself, not on a server. Once you download it, the code works for as long as it stays legible — there is no account, subscription, or service that could switch it off, including this site going away.

Is it really free? What's the catch?

There is no paid tier, no account, and no usage limit. The download buttons give you full-resolution PNG, JPEG, and SVG with no watermark. The site has no ads and no tracker to monetize you with either — you can verify that in the section above.

Can a QR code track whoever scans it?

A static code cannot. Scan tracking works by routing the scanner through a server someone controls — a shortened or "dynamic" link — which records the visit before redirecting. Codes made here contain exactly the text shown in the payload box, so a scan goes straight to your content without passing through this site or anyone else.

What is the difference between static and dynamic QR codes?

A static code stores your content directly in the pattern. A dynamic code stores a link to a redirect service, which lets the owner change the destination later — and lets the service log every scan, break the code if the subscription lapses, or shut down. This site only makes static codes. The trade-off is real: you cannot edit a static code after printing it, so double-check the content first.

Does the generator work offline?

Yes. After your first visit, the whole site is cached on your device by a service worker, so both the generator and the decoder keep working with no connection at all. That is also easy to check: turn on airplane mode and make a code.

Which download format should I use for print?

SVG. It is a vector format, so it stays sharp at any size, from a business card to a poster. Use PNG for screens and documents. If you add a logo, pick a higher error correction level so the code still scans with part of the pattern covered.