QR Code Generator

A free online QR code generator: paste a URL or any text and the code appears at once. Beautify the dots and the eyes, add a logo and a scan-me caption, then download a PNG bitmap or an SVG vector. Everything is generated locally in your browser — nothing is uploaded, and the code never expires.
Content
Your QR code appears here
Enter content on the left and it is generated instantly
Version
—
Matrix
—
Content length
—
Recovery
—
Existing code
You can also just press Ctrl+V to paste a screenshot. The decoded text goes into the “Content” box above — edit it and you have a new code.
Beautify
Error correction
Size
px
Quiet zone
modules
Centre logo
None selected — the middle stays blank
Colours
Notes:
1. The code regenerates the moment you change anything — there is no button to press. Leave the field empty and no result is shown.
2. Already have a code whose content you want to change — upload it under “Existing code” or paste it with Ctrl+V, and the text read back out lands in the content box. Changing the content means generating a new code; the copy already printed will not change with it.
3. the higher the error correction level, the denser the pattern for the same content. Choose H if you want to overlay a logo in the middle; choose L or M for a plain URL or when the code has to be printed small.
4. Centre logo accepts PNG / JPG / SVG, and like the code itself the image is composited on your own machine. The slider sets the white pad's width as a share of the code area, the figure beside it works out how much area that actually covers, and going past what the error correction can absorb triggers a warning.
5. Once there is an image on it, scan it yourself, ideally with two or three different phones. The warning is only an area estimate; it cannot catch a busy pattern or colours that are too pale.
6. Beautify row has six ready-made templates — one tap swaps the whole style. To change the dots, eyes, colours or the border and caption on their own, hit “More beautify options”. “Plain” is selected by default — leave it alone and you get exactly the plain black-and-white code you had before; if you make a mess of it, tap “Plain” to get straight back.
7. Add a border or a caption and the downloaded image comes out bigger than “Size” — the size always measures the QR code itself; the border and the text are added outside the quiet zone, so they never eat into the white margin scanning needs.
8. Use SVG for print (vector, sharp at any size) and PNG for web pages and chat. Both formats carry the logo, the gradient and the border caption, and in the SVG the logo image is embedded as-is; only the caption is text in the SVG, not outlines, so a design app without the matching font will substitute another one — browsers are unaffected.
9. A QR code contains exactly the text you typed, and any scanner can read it back, so never put passwords or secret keys in one.

About QR code generation

Static vs. dynamic codes — this is what decides whether it expires

Many online services hand you a dynamic code: what is actually stored in the pattern is a short URL on their domain, so a scan hits their server first and is then redirected to your real content. The upside is that you can change the destination later. The cost is that the code's life is in someone else's hands — if the service shuts down, the account lapses or the free quota runs out, the code is dead, and by then it may be printed on a few thousand flyers. This page produces static codes: your text is encoded directly into the black and white squares, no server is involved, and so there is nothing that can expire. The trade-off is that changing the content means generating a new code. Use static codes for anything going to print, and reach for a dynamic code only when the destination genuinely has to change.

Changing an existing QR code: upload → edit → regenerate

Have a code whose URL you want to swap out? Upload it under “Existing code” above, or just paste a screenshot with Ctrl+V. The page decodes it locally, drops the original text into the content box, and the moment you edit the part you need to change, the new code is there. It runs on the same decoding logic as QR Code Scanner, and the image is just as unuploaded here; the only difference is that the reader page shows you the text, while this page passes it straight on to the generator.

Three things are worth spelling out, because people searching for “QR code editor” are often expecting something else. First, there is no such thing as editing a QR code in place — the content does not sit in some rewritable field; it *is* that grid of black and white squares, so any change necessarily produces a new pattern, and the copy already printed on your materials or stuck on a wall will never change with it. Wanting to “change the content at any time after it is posted” calls for a dynamic code, the kind that keeps the redirect target on a provider's server; the costs and risks are in the section on static versus dynamic codes above, and this site does not make those. Second, only the content carries over: colour, error correction level, quiet zone and centre logo are appearance settings applied at generation time, and the code does not record them, so reproducing the look of the original means setting them again below. Third, this all assumes the old code can still be read — if it is blurry, missing a corner or has had its white margin cropped off, check the causes listed on the reader page and find a more complete image.

Choosing an error correction level

QR codes carry built-in redundancy, so a partly damaged pattern still scans. L, M, Q and H recover roughly 7%, 15%, 25% and 30% respectively. The cost is density: for the same content, a higher level needs more modules. M is plenty for an everyday URL. Use H for packaging and outdoor material that will get scuffed, or when you want to drop a logo in the middle — as far as the decoder is concerned, that logo is damage, and the redundancy is what covers it. Conversely, if the code has to be printed very small, L keeps the module count down and the squares fatter, which actually makes it easier to scan.

Putting a logo in the middle of a QR code — right here on this page

Pick an image under “Centre logo” above — PNG, JPG and SVG all work. It is laid over the exact centre of the pattern as you watch, and it comes along when you download either the PNG or the SVG. Like the code itself, the image is composited inside your own browser and never uploaded, so there is no problem trying it with a company mark or with brand artwork that has not been announced yet.

How big it can get is a hard constraint, and the page does the arithmetic for you: the slider sets the white pad's width as a share of the code area, and the area it covers is that number squared — 20% of the width covers only 4% of the area, and it already looks substantial. The test is to compare the covered area against the share the error correction level can recover, and to deliberately spend only half of it: level H recovers about 30%, so the safe line sits at 15%; level L's 7% maps to 3.5%. Keeping half back is not timidity — error correction works block by block, so one solid patch concentrates the damage into a handful of blocks and hurts far more than the same area of scattered noise, and printing dots and camera noise eat into the remaining headroom anyway. Cross the safe line and the page says so; raising error correction to H or shrinking the logo clears it.

Two more things this page cannot do for you. Never cover the three square finder patterns in the corners or the white border around the edge — that is how a scanner finds the code and squares it up, which is also why the centre image can only ever grow outwards from the middle and must not be shifted elsewhere. And scan the finished code yourself, ideally with two or three different phones. The warning is only an area estimate — it cannot see a pattern that is too busy, colours that are too pale, or a logo whose edge blurs into the foreground colour. Ten extra seconds spent scanning a code with an image on it beats finding out after three thousand copies have been printed.

Beautifying a QR code: shapes, gradients and borders

Open the “Beautify” row and there are four things you can change. Dot style decides what the little squares in the middle look like: square is the standard form, rounded and dots are gentler, and Liquid welds runs of adjacent modules into one continuous rounded blob — the look most commercial codes have had for the past few years. Eye style covers the three position patterns in the corners on their own: the outer frame and the inner pupil take their shape and their colour separately. Foreground fill can go from a flat colour to a linear or radial gradient, and the gradient spans the whole code rather than repeating inside every module. Border and caption wraps a frame around the code and writes a prompt such as “Scan with WeChat” above or below it; the most common lines are buttons, so one click fills them in.

There are two limits worth knowing. First, the fancier the shape, the thinner the error budget: dots and liquid buy their look by shaving dark area off the edges of each module, which opens gaps between squares that used to meet exactly. Print it small, or stack it on top of the lowest L error correction, and it lands right on the edge of unreadable. The page warns you based on the combination you pick, but that is a warning, not a guarantee. Second, the size always measures the QR code itself: the border and the caption are added outside the quiet zone rather than eating into the white margin scanning needs, so the downloaded image comes out bigger than the number on the slider. That is deliberate — giving the quiet zone away to decoration is what actually breaks scanning.

Unlike the paid platforms, the beautifying on this page needs no sign-in and does not store your style in someone else's account; all of it is composited in your own browser. And a beautified code still downloads as an SVG vector, where the gradient, the border and the rounded dots are genuine paths — sharp at any size and safe to send to a printer. The one exception is the caption: in the SVG it is text rather than outlines, so a design app without the same font installed will substitute a different one.

The longer the content, the denser the pattern

The Version shown beside the preview is the QR specification, from 1 to 40; each step up adds 4 modules to each side. Longer content means a higher version, finer modules, and more demand on both print quality and the scanning camera. So keep URLs short — stripping utm_ tracking parameters will often drop the version by several steps. If the URL contains non-ASCII characters or spaces it is usually already in percent-encoded form; when you cannot tell what it really says, run it through URL Decoder first, confirm it carries nothing you did not intend, and then generate the code.

PNG or SVG?

PNG is a bitmap: fixed resolution, blurry when enlarged, and the right choice for email, chat and web pages. SVG is a vector: it records the position of each module rather than pixels, stays crisp at any size, and is what you hand to a printer or open in Illustrator for business cards and banners. Rules of thumb for print: keep the finished code at least 2 cm square, and leave the white border intact. That border is not decoration — it is the quiet zone the decoder needs in order to locate the pattern. It is the "Quiet zone" control on this page; keep it at 2 to 4 modules and never set it to 0.

The other direction: you already have a code and need to read what is inside it

Generating and decoding are two directions of the same thing, and this page only does the generating. When what you have is an image — a code someone sent you, an illustration inside a document, a screenshot on your screen — and you need the URL or text stored in it, use QR Code Scanner: upload it, drag it in, or just press Ctrl+V to paste a screenshot. It shows the original string exactly as stored and never opens a decoded URL for you, and on a phone it can also scan a physical code through the camera. Reading your own code back is a good habit — drag the PNG you downloaded here into the decoder and check that what comes out is the string you typed in, which is especially worth doing when the URL contains non-Latin characters, spaces or a long tail of parameters. Both pages run entirely in the browser; neither the image nor the content is uploaded.

FAQ

Do these QR codes expire? Are they permanent?

They do not expire. This page generates static codes: your content is encoded in the pattern itself, and scanning it never contacts any server of ours, so the code would still resolve to the same content even if this site disappeared. One caveat — if you encoded a URL, the code stays valid forever, but whether the page at that URL keeps working is up to whoever runs it, and has nothing to do with the QR code.

Can I change the content of a QR code? What about one that is already printed?

You can change the content; you cannot change the image that already exists. A QR code has no field you can rewrite in place — the content is encoded in the grid of squares itself, so technically every “edit” is a newly generated code. This page supports that flow: upload the old code under “Existing code”, the page decodes it locally and fills the content box, you edit it and get a new code, then download the PNG or SVG and replace the old file. But a code already printed on packaging, flyers or a roll-up banner, or already stuck on a wall, will never change along with it — it has to be reprinted. If what you want is “change the content at any time after it is posted”, that needs a dynamic code: the pattern holds a provider's short URL, scanning goes to their server first and then redirects, and the destination can be edited from a dashboard. The price is that the code lives only as long as that service does, and this site does not offer them.

How do I regenerate a QR code as a new one?

Three steps: under “Existing code” above, click “Upload an old code, read its content” and pick the image (or take a screenshot and press Ctrl+V straight on the page), and the page decodes it locally and puts the original text into the “Content” box; confirm or change that content; then download the PNG or SVG below. This is also the usual way to remake a blurry or too-small code as a sharp one — as long as the old code can still be read, the regenerated one is a mathematically clean pattern that prints at any size. If you only want to read the content and not generate anything, use the QR Code Scanner; that page can also open the camera and scan a physical code. Note that what you get is a new pattern with the same content: colour, error correction level and centre logo have to be set again, because the code itself does not record them.

Do I need an account? Is there a limit on codes or scans?

Neither. There is no sign-up, you can generate as many codes as you like, and there is no monthly scan cap. Counting scans requires routing every scanner through the counting party's server first; a static code never touches a server at all, so scans cannot be counted — and there is correspondingly no quota to run out of.

Can I turn an image, a video or a file into a QR code?

Not directly. A QR code holds a short piece of text — about 2,953 bytes at most, which will not fit even the smallest image. Every service advertising "turn your video into a QR code" is really uploading the file to its own servers and encoding the download link. If that is the effect you want, do it deliberately: upload the file to cloud storage you already trust, get the share link, and paste that link above. The link stays under your control and the file never goes to a third party.

How much text fits in one QR code?

The theoretical ceiling is about 2,953 bytes at version 40 with error correction L, or 7,089 digits if the content is purely numeric. That is an upper bound, not a recommendation: the longer the content, the denser the pattern and the harder it is for a phone to read. In practice, keep URLs under about 100 characters and plain text to a few hundred. If you exceed the capacity the page says so directly — shorten the content or drop the error correction level.

How do I add a logo to the middle of a QR code? Will it still scan?

This page has the feature built in: pick an image under “Centre logo” and it is laid over the exact centre of the pattern as you watch, then carried into both the PNG and the SVG download. Whether it still scans comes down to size — set the error correction level to H and keep the logo under about 15% of the code's area and it will usually still read, because the covered patch counts as damage to the decoder, which is exactly what the redundancy is there to absorb. The figure next to the slider shows how much area you are currently covering, and the page warns you as soon as you pass the safe line for that level. What you must never cover is the three square finder patterns in the corners or the white border around the edge; those are how a scanner locates and squares up the code in the first place. Whatever you produce, scan it with two or three different phones before sending it to print.

How do I make a QR code look nicer? Can I use round dots or gradient colours?

Yes, and the “Beautify” row is the quickest way: six templates — Plain, Rounded, Liquid, Gradient, Label and Outline — each with a live-rendered thumbnail, so one tap swaps the whole style. To adjust things one at a time, hit “More beautify options”: dots, eyes, colours, and the border and caption all sit side by side in the panel that opens. Dot styles are square, rounded, dots and liquid, where liquid welds runs of adjacent modules into smooth rounded blobs; the three eyes in the corners take their own shape and colour, and the outer frame and inner pupil can be set separately; the foreground can go from a flat colour to a linear or radial gradient that spans the whole code; and finally you can wrap it in a border and put a line such as “Scan with WeChat” above or below the code, with the common ones one click away. None of it needs a sign-in, and the style is not stored on our side — it is all composited locally in your browser. Tap the “Plain” template to return to an ordinary black-and-white code.

Can I still download a beautified QR code as a vector? Does adding a border change the size?

Yes — “Download SVG” works on beautified codes too, and the gradient, the rounded dots and the border are all real paths in the vector file, sharp at any size and ready for print. The one thing to watch is the caption: it is stored as text rather than outlines, which is fine in a browser but may be substituted in a design app without the same font installed — convert it to outlines there if that matters. As for size: adding a border or a caption really does make the downloaded image bigger than the number on the “Size” slider, because the slider always measures the QR code itself and the border and text are added outside the quiet zone — that white margin is what the scanning algorithm uses to locate the code, and decoration must not squeeze it out.

Is the image I insert uploaded anywhere? Which formats are supported?

It is not. Your browser reads the image you picked into memory and draws it straight onto the QR code's canvas; the whole thing happens on your machine, so this site never sees the image and never stores it. Any format your browser can display will work — in practice that means PNG (a transparent background is the most convenient), JPG and SVG. With a transparent PNG you do not have to worry about black modules showing through: the page first lays down a rounded pad in the background colour and then puts the image on top. When you download the SVG, the image is written into the file as embedded data, so that SVG is complete on its own and will not lose the picture when you send it to someone else.

Can I generate a WeChat or Alipay payment code?

No, and you should not try. A payment code contains a signed, platform-issued string that only the platform itself can produce; no third-party tool can forge one, and anything online claiming otherwise is best avoided. If what you actually want is "scan to add me on WeChat" or "scan to open my shop page", that is an ordinary link — copy the link the app already generated for you and encode that.

Why did it stop scanning after I changed the colours?

Decoders separate modules by light-versus-dark contrast, so the foreground has to be clearly darker than the background. Combinations like light grey on white or navy on black fail or read very slowly, and inverted codes — light modules on a dark background — are not supported by a substantial share of scanners. The page warns you when contrast is too low. The safe approach is to keep a dark foreground on a light background, and when you need brand colours, change only the foreground to a sufficiently dark shade.

How do I decode a QR code image and turn the code back into a URL?

That is the reverse direction, so use QR Code Scanner: upload the image, drag it in, or press Ctrl+V right on the page after taking a screenshot, and it reads out the URL or text stored in the code; on a phone it can scan a physical code through the camera too. It only displays the original string and never redirects — anyone can turn any URL into a code, so read the domain before you open it. When a code will not decode, usually a corner of the pattern has been cropped off, there is no quiet zone around it, or the image is too blurry; that page lists the full order in which to check.

How do I make sure the QR code I generated contains the right content?

Read it back: drag the downloaded PNG into QR Code Scanner and compare the decoded string against what you typed, character by character. This is more reliable than a quick scan with your phone — the phone jumps straight to the URL, so what you see is the page that opened rather than the exact string stored in the code, and the two often differ once percent-encoding or tracking parameters are involved. Before printing, or before handing the code to someone else, those ten seconds are worth it.

Is what I type sent to a server?

No. Once the page has loaded, the code is computed entirely by JavaScript running in your browser; what you type never leaves the device and we cannot see it. You can disconnect from the network and try again — it still works. Be clear about one thing though: a QR code holds the text itself, and anyone who scans it can read all of it, so do not encode passwords, secret keys or private links and then put the code somewhere public.