QR Code Generator

Type a URL or any text to instantly generate a QR code. Choose the size and error-correction level, then download it as a PNG — all in your browser.

How to use

  1. Type in a URL or any text.
  2. Choose the size and error-correction level.
  3. Preview the code and download it as a PNG.

A QR code carries error-correction data, which is why it still scans when part of it is covered or the print smudges. But more text means a denser grid, and a dense grid printed at the same size scans less reliably. Shortening a long URL simplifies the pattern considerably.

In depth

How a QR code is read

The three large squares at the corners are position detection patterns. A scanner finds those first to establish the code's orientation and skew — which is why a QR code reads upside down.

The remaining grid holds the data, interleaved with error correction information.

Denso Wave created it in Japan in 1994 for tracking car parts. Where a barcode holds around 20 digits, QR holds far more, and reading from any angle was an explicit design goal.

Error correction levels

L (7%) · M (15%) · Q (25%) · H (30%) — how much of the code can be damaged and still read.

Higher levels are more robust but pack the grid more densely for the same content, which at a fixed print size can make scanning harder rather than easier.

M is plenty for on-screen display, where nothing is going to damage it.

Use Q or H for print and outdoor signage, which must survive scratches, weathering and creasing.

Use H if you place a logo in the centre, since the logo is obscuring data. Keep the covered area well below the nominal 30%.

Print size and scanning distance

The rule of thumb is one tenth of the scanning distance. A code read at 30cm needs to be 3cm; a poster read from 3m needs 30cm.

Preserve the quiet zone — four modules of blank space around the code. Butting a code against a background image is a frequent cause of failure.

Contrast matters. Dark code on a light background is the norm; inverted codes fail on some scanners.

Print at 300dpi or better so the module edges stay clean.

Shorter content scans better

More data raises the version and packs the grid tighter, which lowers the read rate at the same printed size.

Shortening a long URL simplifies the grid considerably.

You cannot drop https://, but www. is usually removable and tracking parameters can go if you don't need them.

Uppercase URLs are more efficient — QR's alphanumeric mode covers uppercase only, so lowercase forces byte mode and uses more capacity. Domains are case-insensitive, so HTTPS://EXAMPLE.COM produces a simpler code (paths are case-sensitive, so be careful there).

Static and dynamic codes

Static — the content is encoded in the code itself. That is what this tool creates: no expiry, no server, but the destination cannot be changed once printed.

Dynamic — the code holds a redirect service's URL, which forwards to the real destination. You can change the target later and see scan statistics.

Dynamic codes depend on that service continuing to exist. If the provider shuts down or moves to a paid tier, every printed code dies. For business cards and signage meant to last, static is the safer choice.

Security — treat unknown codes carefully

A QR code hides its destination from the person scanning it. You can judge a link by its domain; you cannot judge a QR code until you have scanned it.

Attackers exploit exactly that — quishing (QR phishing) works by placing fraudulent stickers over legitimate codes on parking meters, restaurant menus and public posters.

Check the URL your camera shows before opening it. Most camera apps display it first.

Be suspicious of a QR code stuck over another, especially one asking for payment or login.

Generation happens in the browser and your content is not transmitted.

FAQ

Do the QR codes expire?

No. These are static QR codes that encode your content directly, so they never expire or hit a scan limit.

Is my text sent to a server?

No. The QR code is generated entirely in your browser; nothing is uploaded.

Which error-correction level should I pick?

Higher levels (up to H) keep the code scannable even if part of it is damaged or covered, at the cost of a denser pattern. Use Q or H for print, and M is usually enough for on-screen use.

Method and sources

What this tool bases its numbers on, and how far those numbers go.

What this tool is
It encodes exactly the text you type into a standard QR symbol. Whether a printed code scans depends on size, contrast and print quality — things that happen after this page hands you the PNG.
Formula
The text is encoded per ISO/IEC 18004. The symbol version (grid size) is chosen as the smallest that fits your data at the error-correction level you pick, and Reed-Solomon check codewords are added at that level. The result is drawn to a canvas at your chosen pixel size and saved as a PNG, entirely in the browser.
Worked example
The four error-correction levels recover roughly 7% (L), 15% (M), 25% (Q) and 30% (H) of the codewords. Higher recovery needs more check codewords, so the same text at level H produces a denser grid than at level L.
Limitations
  • More data means a denser grid. A long URL pushes the symbol to a higher version, and at a fixed print size the modules get smaller and scan less reliably. Shortening the URL helps more than any setting here.
  • Print size and quiet zone decide real-world scanning. The standard expects a clear margin of four modules around the symbol; cropping it tight or printing small defeats an otherwise valid code.
  • The code is static. It points at whatever you typed, forever — there is no redirect layer, so a URL you later want to change cannot be changed without reprinting.
  • Contrast and surface matter. Light-on-dark inversion, glossy laminate, curved packaging and low-contrast colour pairs all break scanning that works fine on screen.
  • It does not validate the content. A mistyped URL, a missing https prefix or a link that later dies will encode perfectly and fail in the real world.
Effective date
Last reviewed

Related tools