Skip to content
Processing locally — files never leave your device

QR Code Generator

Generate scannable QR codes for any text, URL, email, or phone number. Customize size and error correction, then download as PNG or SVG.

Type something to generate a QR code.

Bloggers — embed this widget for free

Add this tool to your own site with one line of HTML. Free forever — just keep the small credit link.

How to use QR Code Generator

  1. Type or paste your content into the Text or URL box — a website link, plain text, an email address, or a phone number all work.
  2. Set the size in pixels. 256 px is fine for screens; bump it up for print so the modules stay large enough to scan from a distance.
  3. Pick an error-correction level: L, M, Q, or H. Higher levels survive more damage but pack the data into a denser grid.
  4. Adjust the margin (quiet zone). A margin of at least 2 modules around the code helps scanners lock on; do not crop it to zero.
  5. Download as PNG for sharing online or as SVG for print — the SVG is a vector and stays sharp at any size.

How QR codes encode your data

A QR code is a 2D matrix barcode defined by the ISO/IEC 18004 standard. Unlike a 1D barcode, which is a single row of bars, a QR code stores data across a grid of black and white squares called modules. The three large squares in the corners are finder patterns that let a scanner locate and orient the code even when the photo is rotated or skewed. The rest of the grid carries your data plus error-correction information.

Versions and sizes

QR codes come in 40 versions. Version 1 is a 21×21 grid; every step up adds four modules to each side, reaching 177×177 at version 40. A bigger version holds more data but needs more physical space and a sharper camera to read. This generator picks the smallest version that fits your content automatically — so the less you encode, the simpler and more reliable the code.

Error-correction levels L, M, Q, H

QR codes use Reed-Solomon error correction, which is why a code still scans with part of its surface dirty, torn, or covered. You trade data capacity for resilience across four levels: L recovers ~7% of damage, M ~15%, Q ~25%, and H ~30%. Higher levels reserve more of the grid for recovery data, so the same content produces a denser code. Pick H for codes printed on packaging or with a logo overlay; pick L only when you must squeeze maximum data into a small symbol.

What kind of data fits

QR codes have four encoding modes — numeric, alphanumeric, byte (UTF-8), and kanji — chosen automatically based on your input. Numeric data is the most compact (up to ~7,089 digits), alphanumeric is next (~4,296 characters), and arbitrary UTF-8 text is the least dense (~2,953 bytes). A QR code is just a string, so the convention is that scanner apps recognise prefixes: https:// opens a link, mailto: drafts an email, tel: dials a number, and plain text is shown as-is. To check what an existing code already holds before you scan it on your phone, you can decode a QR code from an image or your camera first.

The quiet zone matters

The blank margin around a QR code — the quiet zone — is part of the spec, not decoration. The standard calls for a margin of at least four modules. Cropping it tight or placing the code against a busy background is one of the most common reasons a code fails to scan. Keep the margin set to 2 or more here and leave clear space around it when you place it.

Encoding something more specific?

This generator handles any plain string, but several payload types have a dedicated tool that builds the exact prefix and escaping for you. If your goal is to connect guests to WiFi, share a contact, or trigger a text message, start with the purpose-built version rather than hand-typing the format here.

  • WiFi QR code generator — assembles the WIFI: credential string so a scan offers a one-tap join.
  • vCard QR code generator — wraps name, phone, and email in a BEGIN:VCARD block your phone can save.
  • QR code decoder — go the other way and read what an existing code holds before you act on it.

Frequently asked questions

Which error-correction level should I pick?
M (medium, ~15% recovery) is the sensible default and what is preselected. Use L (~7%) only when you must fit a lot of data into a small code. Use Q (~25%) or H (~30%) when the code will be printed small, displayed on a textured surface, or have a logo placed over the centre — the redundancy lets it still scan despite the obstruction.
How much data can a QR code hold?
The theoretical maximum is about 7,089 numeric digits, 4,296 alphanumeric characters, or 2,953 bytes — but only at the largest version and lowest error correction. In practice, keep it short: the more you encode, the denser and harder-to-scan the grid becomes. For URLs, use a short link rather than a long one with tracking parameters.
What is a QR version?
A QR version is its size in modules (the little squares). Version 1 is 21×21 modules and holds very little; each version up adds 4 modules per side, up to version 40 at 177×177. The library automatically chooses the smallest version that fits your data at the error-correction level you selected, so you never set it manually.
Is the QR generated on a server?
No. The encoding runs in JavaScript on the page itself via the open-source qrcode library, so the URL or note you type is turned into pixels right where you typed it. Open your browser developer tools and watch the Network tab while you generate — you will see no request carrying your content. That matters most when the link points at an internal dashboard or an unlisted draft you do not want logged anywhere.
PNG or SVG — which should I download?
Choose PNG for websites, slides, chat, and anywhere a raster image is expected. Choose SVG for print, large signage, or anywhere it might be resized, because SVG is a vector and never pixelates. Both encode exactly the same data.
Why will my QR code not scan?
The usual culprits are: too much data crammed into a tiny size (increase the pixel size), no quiet zone (keep the margin at 2 or more), too little contrast (keep it dark-on-light), or printing so small that individual modules blur together. Raising the error-correction level and the size usually fixes a flaky scan.
Can I put a logo in the middle?
This tool outputs a clean code, but if you overlay a logo yourself in an image editor, set the error-correction level to Q or H first. The extra redundancy lets the scanner reconstruct the modules hidden behind the logo. Keep the logo under roughly 20–30% of the code area.
Do these QR codes expire?
No. This generates a static QR code — the data is baked directly into the pattern. There is no redirect, no tracking, and no account, so it works forever and offline. (Dynamic QR codes that point at a short URL you can edit later are a different, server-backed product.)

More tools you might find useful in the same flow.

Built by Muhammad Tahir · About