Skip to content
WGX

QR Code Generator

Turn text or a link into a QR code that encodes the content itself — no redirect, no expiry — and download it as SVG or PNG.

What the code is for

Spaces and line breaks at the very start and end are left out, so a stray newline from a paste does not end up inside the code. Everything between is encoded exactly as typed.

Error correction

Loading the generator…

What a "dynamic" QR code is, and why this page does not make one

This is the part worth knowing before you print anything. A large share of free QR generators do not encode your link at all. They encode one of their own — a short address on their domain — and set up a redirect from it to yours. The square scans, the visitor arrives, and everything looks right. What has quietly happened is that every future scan of that code now passes through a server you do not own, cannot see and did not agree to depend on.

There are honest reasons to build it that way: a redirect lets the destination be changed after printing, and lets scans be counted. Most services offering it are straightforward about the trade. But the risk lands on the person who printed the code, regardless of anyone's intentions. If the service shuts down, changes its pricing, or simply lets the domain lapse, every copy of that code stops working — and the copies are on a thousand menus, a wall, a product run. Nothing can be done to them from a keyboard.

The code this page makes contains your content and nothing else. There is no address of ours inside it, no redirect, no scan counter, and no way for us to change or withdraw where it leads. That also means the two things a dynamic code buys — editing the destination later, and counting scans — are genuinely not available here. If you need them, you need a redirect, and the honest version of that is a short link on a domain you control, pointed at from a static code like this one. Then the dependency is on something you can renew.

The quiet zone, and why it has no switch

Every code here is drawn with four blank modules on all four sides. That border is called the quiet zone, and it is specified rather than stylistic: it is how a scanner works out where the symbol begins and ends against whatever is around it. Crop it — or place the code hard against a colored block, a photo edge or the trim line of a print — and many readers never detect that a code is present at all.

It is also the most common reason a QR that worked on screen fails on paper, because the cropping usually happens afterwards, in a layout program, to something that looked like extra white space. Some generators offer a control to remove it. This one does not, because there is no case where removing it helps and several where it silently ruins the file.

Error correction: damage tolerance bought with density

A QR code carries redundant data, so part of it can be unreadable and the content still recovered. How much is the error-correction level, and the four levels trade against size:

  • L — about 7% of the code can be lost. The sparsest square.
  • M — about 15%. The default, and the right answer for most printing.
  • Q — about 25%, in a noticeably denser square.
  • H — about 30%, the densest, for codes that will take a beating.

The cost is real: higher correction means more modules for the same content, and more modules in the same physical space means each one is smaller and harder for a camera to resolve. A level-H code printed at the size you would have used for a level-L one can scan worse, not better. Choose the level by where the code is going — a sticker on a parcel that will be scuffed, versus a line in a PDF nobody will touch — and then print it large enough for the level you chose.

Both are offered almost everywhere and both make the code worse. Scanning works by contrast between dark and light modules; the further the pair moves from near-black on near-white, the less margin every scan has, and an inverted or pastel code fails outright on some readers. A logo placed in the center works only by covering modules and leaning on the error correction to reconstruct them — which spends the damage tolerance you might need for a fold, a scratch or a bad print, on decoration, before the code has left the screen.

The output here is a plain vector, so nothing stops you adding either in a design tool afterwards. The difference is that you will be making that trade deliberately, with the code in front of you, rather than having it made for you by a default.

Capacity, and what to do when it runs out

A QR holds a bounded amount of data — at most 2,953 bytes at level L, and less as the correction level rises, because the redundancy occupies space the content would otherwise use. The page shows how much of that bound your content has taken, and says plainly when it will not fit rather than failing quietly.

The fix is nearly always to shorten the link. Content long enough to overflow a QR is characteristically a URL trailing a long string of tracking and campaign parameters, and most of what follows the question mark can usually go without changing where the link leads. Try that first — the URL Encoder / Decoder is useful for reading what is actually in a link before you cut it. Note that the limit counts bytes rather than characters: the content is encoded as UTF-8, so an accented letter costs two bytes, a CJK character three, and an emoji usually four, and a skin tone or a flag eight.

The file you actually want is the SVG

Both downloads come from the same matrix, but they are not equivalent. The SVG is a vector: it describes the square as geometry, so it is exactly as sharp on a shopfront window as on a business card, and it is a handful of kilobytes either way. It is drawn as one path of horizontal runs rather than one small square per module, which is how most libraries — including the encoder this page uses — draw one: for a 33-module code that is about 4 kilobytes against the roughly 15 the library's own export produces, for an identical picture. And it is black on a white square the size of the whole symbol, quiet zone included, so it scans the same on a white page, a dark slide or a colored poster.

The PNG exists because some tools and some print shops still will not take anything else. It is rendered at a generous module size so that it is a usable file rather than a thumbnail, but it has a fixed resolution, and enlarging it far enough will show that.

Nothing is sent

This page is static, with no server behind it, and the encoding runs in your browser. What you type is never transmitted, never stored and never logged — and the end-to-end test suite records the requests this tool makes and fails the build if one of them could carry the text. That claim is worth more here than on most pages, because a QR generator is a box people paste wifi passwords, home addresses and unlisted links into without pausing to wonder where the text is going. The page around the tool does load Cloudflare's analytics script, which counts the visit and never sees what you type; the privacy page says exactly what it reports.

Questions

Does this QR code stop working if this site disappears?

No. The square encodes your content directly — the characters you typed are inside the code itself, and scanning it never touches this site. That is not true of every generator: many produce a "dynamic" code that points at the generator’s own domain, which then redirects to yours. Those codes depend on a server you do not control, for as long as the code exists on paper. A code made here has no such dependency, so it keeps working after this page is gone.

Why can I not remove the white margin?

Because it is part of the QR specification, not decoration. The four-module blank border — the quiet zone — is how a scanner finds where the symbol starts and stops. Crop it and many scanners simply never recognize there is a code there, which is the single most common reason a printed QR fails. Generators that offer a "remove margin" switch are offering a way to break the file, so there is no such switch here.

Which error-correction level should I pick?

M, the default, unless you have a reason. The level sets how much of the code can be damaged, dirty or obscured and still read: roughly 7% at L, 15% at M, 25% at Q, 30% at H. The cost is density — a higher level packs more modules into the square, so it has to be printed larger to stay scannable. Pick H for something that will be handled, weathered or stuck on a curved surface; pick L only when the code will live on a screen or on clean paper and you need the smallest, sparsest square you can get.

Why is there no option for colors or a logo in the middle?

Both make a code harder to read while looking like features. A QR is decoded by contrast, so an ink-on-background pair that is not near-black on near-white loses margin on every scan, and inverted or low-contrast codes fail outright on some readers. A center logo works only by covering modules and relying on the error correction to reconstruct them — which means spending the damage tolerance you might need later on a decoration, before the code has even been printed. The SVG this page produces is plain, so if you want either, you can add them in a design tool with the trade in front of you.

Should I download the SVG or the PNG?

The SVG, wherever it is accepted. It is a vector: it stays sharp at any size, from a business card to a shopfront window, because it describes the square rather than a grid of pixels. The PNG is there because some tools and some print shops still refuse anything else; it is produced at a generous module size so it is genuinely usable, but it has a fixed resolution and will pixelate if you enlarge it far enough.

My content will not fit. What now?

Shorten it, and for the usual case that is easy. A QR holds a bounded number of bytes — at most 2,953 at level L, less at higher correction levels — and the content that overflows it is almost always a URL carrying tracking parameters. Everything after the "?" in a link is frequently disposable; removing it usually cuts the length by more than half. Note that the limit is in bytes, not characters: an accented letter costs two and an emoji usually four, because the content is encoded as UTF-8.

Does an accent or an emoji work?

Yes. The content is encoded as UTF-8 in byte mode, which is what modern scanners expect, so accents, umlauts, CJK characters and emoji all survive the round trip intact. They do cost more of the capacity than a plain Latin letter — two bytes for most accented characters, three for CJK, usually four for an emoji — and the capacity figure on the page counts the bytes, not the characters.

Why is my code getting bigger as I type?

A QR comes in forty fixed sizes, called versions, from 21×21 modules up to 177×177. The encoder picks the smallest version your content fits in, so adding characters eventually pushes it up to the next one. A denser code is not worse, but it does have to be printed larger: each module needs enough physical size for a camera to resolve it. If the module count on the page has climbed a long way, print bigger or shorten the content.

Is anything I type here sent anywhere?

No. This is a static page with no server behind it, and the encoding happens in your browser. Nothing you type is transmitted, stored or logged, and the end-to-end test suite records what the encoder asks the network for and fails the build if any of it could carry the text. This matters more than usual for this tool: people paste wifi passwords, private addresses and unlisted links into QR generators without thinking about where the text goes.

  • Password Generator

    Generate a strong password from your browser’s cryptographic randomness. Nothing is sent anywhere.

  • URL Encoder & Decoder

    Make text safe to put in a URL, and read an encoded one back.

  • UUID Generator

    Generate version 4 or version 7 UUIDs from your browser’s cryptographic randomness.