Business utility

QR Code Generator

Generate a QR code for any URL or text. Custom colors, PNG or SVG download.

Options

Preview

Enter text or a URL to generate a code.

About this tool

A QR code generator that runs entirely in your browser. Type a URL, choose colors and error-correction level, and download a high-quality PNG or SVG. Nothing is sent to a server — the encoding happens locally.

It's useful for the small operational chores businesses run into all the time: a QR on a packaging label, a sign in a window, a slide at the end of a presentation, the corner of a business card. None of those need the tracking, analytics, or "sign up for an account to keep your QR codes" that most online generators bundle in.

How QR codes actually work

A QR code is a two-dimensional grid of dark and light squares. The pattern encodes the text using a combination of three things: a position-detection pattern (the three large nested squares in the corners that let scanners find and orient the code), data modules (the squares that actually carry the encoded bytes), and Reed-Solomon error-correction codewords (extra data that lets a scanner recover the message even if some of the code is damaged or obscured).

The error-correction level you choose decides how much of the code can be lost while still scanning:

  • L — recovers ~7% of damage. Best when the code is printed at high quality and won't be obscured.
  • M — recovers ~15%. The default; good for most cases.
  • Q — recovers ~25%. Use for codes printed on curved surfaces, low-quality print, or in environments with smudge/glare risk.
  • H — recovers ~30%. Use if you plan to overlay a logo in the center of the code, or if it'll be printed very small.

Higher error-correction levels produce denser, more complex codes. At a given physical size, an H-level code has finer modules than an L-level code with the same content — which makes the H code harder to scan at very small print sizes. Trade-off accordingly.

Picking a size, picking a color

  • Print size. The minimum reliable scanning distance is roughly 10× the physical size of the QR code. A 2 cm (¾ inch) QR scans cleanly from ~20 cm away; a 10 cm (4 inch) QR scans from a meter. Print at the size your readers will actually be at.
  • Contrast matters more than color. Black-on-white is most reliable because phone cameras detect dark/light contrast best. Custom colors work — but the foreground must be meaningfully darker than the background. Light gray on white may not scan. Dark blue on white is fine. Yellow on white is borderline. White on light yellow is invisible to a scanner.
  • Quiet zone. The blank margin around the code is part of the spec — scanners use it to detect where the code starts and stops. Don't crop right to the edge; keep at least a 4-module-wide white border around the code. This generator includes the right margin automatically.
  • Don't print over a photograph. Background images behind a QR almost always reduce scan reliability. If you must do it, use an H-level code with a high-contrast solid-color rectangle behind the code, slightly larger than the code itself.

If you might want to change the destination later, don't hardcode the URL

A printed QR code can't be edited. If you print 5,000 stickers with a QR that points to https://example.com/promo-march and the promo URL changes, you have 5,000 dead stickers.

The standard fix: encode a URL on a domain you control that redirects to the destination, and change the redirect target whenever you need. So instead of encoding https://example.com/promo-march, encode https://example.com/r/promo and have your server send a 302 redirect to wherever that promo currently lives. Update the redirect, not the QR.

Many "dynamic QR" services do this but lock the redirect behind their hosted service (and start charging you). Doing it yourself with a single Netlify, Vercel, or Cloudflare redirect rule costs nothing and never expires.

Frequently asked questions

Will my QR code work forever?

The image itself never expires — it's a static encoding of the text you provided. What can break is what it points to. If the QR encodes a URL and that URL changes or goes offline, the QR will still scan but lead nowhere. Encode URLs you control; if the destination might change, use a redirect on your own domain.

What error-correction level should I use?

M (the default) for most cases. H if the code will be printed at small sizes, applied to curved surfaces, or covered by a logo in the middle. Higher levels make the code denser, so at very small physical sizes, H may scan less reliably than M despite recovering more damage.

Can I add my logo in the middle?

This version doesn't composite a logo into the code. You can do it in any image editor afterward — overlay a square logo covering the center 15–20% of the code. Use error-correction level H if you do, so the missing modules don't prevent scanning.

Can I use any colors?

Yes, but contrast matters. Foreground and background need enough contrast for cameras to distinguish them. Black-on-white is most reliable. If you can read the code easily by eye at arm's length, a phone camera can scan it.

PNG or SVG — which should I download?

PNG for inserting into documents, presentations, or anything that needs a raster image. SVG for printing at any size (vector, infinitely scalable) and for web use. SVG files are usually much smaller. Both produce the same scannable code.

Is my input sent anywhere?

No. The encoding happens entirely in your browser using a vendored open-source library. Nothing is sent to a server, stored, or logged.

What's the maximum amount of text I can encode?

Up to about 2,953 bytes (~2,900 characters of plain ASCII), but the code becomes very dense past a few hundred characters. For URLs longer than ~300 characters, use a redirect on your own domain to shorten the destination before encoding.