QR Code Generator

Generate a QR code online for free — just paste a URL or type any text. Adjust the error correction level, size, quiet zone and foreground/background colours, then download a PNG bitmap or an SVG vector. Your content is encoded in the pattern itself and everything is generated locally in your browser: nothing is uploaded, and the code never expires.
Content
Error correction
Size
px
Quiet zone
modules
Colours
Version
Matrix
Content length
Recovery
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. 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.
3. Use SVG for print (vector, sharp at any size) and PNG for web pages and chat.
4. 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.

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.

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.

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.

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.

Will putting a logo in the middle stop it scanning?

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 — the covered patch counts as damage to the decoder, which is exactly what the redundancy is there to absorb. 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.

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.

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.