QR Code Generator Online
Create a QR code for any link — pick your colors, drop in a logo, export as PNG or vector SVG.
Any web address — opens straight in the phone browser. The most scanned QR type by far.
Include https:// so the code opens as a link. For plain text that is not a link, use the Text tab.
The three corner squares always stay square — scanners lock onto them first.
Fine at 1 for screens. Raise it to 4 before printing — that is the specification minimum, and too little margin is the most common print failure.
Drop one image here or click to select
PNG, JPG, WebP, SVG — screenshots, logos, or icons
- URL
SVG is vector — use it for anything printed. PNG is the right choice for screens.
How to generate a QR code
- Paste the URL you want the code to open. Include https:// so phones treat it as a link rather than plain text.
- Pick your colors. Keep the foreground dark and the background light — scanners rely on that contrast, not on the specific hue.
- Optionally upload a logo. Error correction is raised to level H automatically so the code still scans with the center covered.
- Choose a module style — square is the most reliable, rounded and dots trade a little scan margin for a softer look.
- Download as PNG for screens and messaging, or as SVG for anything that will be printed.
Free forever, unlimited scans, no watermark
Every code this generator produces is yours outright. There is no account to create, no trial that runs out and no plan to upgrade to — the free tier is the only tier, because there is nothing to bill for.
| This generator | |
|---|---|
| Sign-up required | No — the tool works before you have an account, and there is no account |
| Expiry date | None. The code cannot stop working |
| Scan limit | Unlimited — nobody is counting, because nothing phones home |
| Watermark | None on any export |
| Commercial use | Free. The QR standard is open (ISO/IEC 18004) and its patent rights were waived |
| Vector output | SVG included, at any resolution you need for print |
| Your data | Never leaves the browser tab |
Those claims are worth checking rather than trusting. Most of them follow from one architectural fact — there is no server in this product — and you can verify it yourself in about ten seconds, as described two sections below.
Static vs dynamic QR codes — why this one never expires
This is the single most important distinction in the whole category, and the one most generators are quietest about. It decides whether your printed code still works in five years.
| Static (what this tool makes) | Dynamic | |
|---|---|---|
| What is encoded | Your actual destination | A short link to a third-party redirect |
| Depends on a service | No | Yes — that company must stay in business |
| Stops working if the plan lapses | Never | Yes, typically within days |
| Destination editable after printing | No | Yes |
| Scan analytics | No | Yes |
| Cost | Free | Almost always a subscription |
| Code density | Grows with your URL length | Always short |
A dynamic code is genuinely useful when the destination will change or you need scan counts — a campaign landing page, a menu that gets replaced each season. You are paying for a redirect service, and that is a fair trade as long as you keep paying.
A static code is the right default for everything else. Signage, packaging, business cards, equipment labels, anything printed once and expected to last: the destination is baked into the pattern, so there is no middleman that can vanish, rebrand, get acquired or decide your free tier is over. If you need the editability later, put a short URL you control in the static code and change what sits behind it — that gives you the same flexibility without renting it.
Everything happens in your browser — nothing is uploaded
This generator has no backend. The URL you type, the logo you pick and the finished code never leave your device — there is no server to send them to. Open your browser DevTools, switch to the Network tab and generate a code: you will see no requests at all. The page keeps working with the network disconnected.
That matters more than it sounds. Most free QR services route your link through their own domain so they can count scans, and a dynamic QR code stops working the moment that service shuts down, changes its pricing, or decides your account has expired. The codes generated here are static: the destination is encoded directly into the pattern, so the code works forever and depends on nobody.
// The whole pipeline, start to finish
const { create } = await import('qrcode')
const qr = create('https://example.com', { errorCorrectionLevel: 'M' })
// qr.modules.size — matrix side in modules
// qr.modules.data — Uint8Array, 1 = dark module
const ctx = canvas.getContext('2d')
for (let row = 0; row < qr.modules.size; row++) {
for (let col = 0; col < qr.modules.size; col++) {
if (qr.modules.data[row * qr.modules.size + col] !== 1) continue
ctx.fillRect(offset + col * m, offset + row * m, m, m)
}
}Scanning on iPhone and Android — no app needed
A recurring worry when printing codes is whether people will need to install something. They will not. Both mobile platforms have read QR codes from the stock camera for years, and a dedicated scanner app has been unnecessary since roughly 2019.
iPhone and iPad
- iOS 11 and later — open the Camera app and point it at the code. A notification banner appears at the top; tap it to act
- Control Center — a Code Scanner button can be added in Settings → Control Center, which skips the banner entirely
- Photos app — since iOS 15, Live Text reads codes inside a screenshot or a saved photo
- The common failure is not technical: the banner disappears after a few seconds and people assume the code did not work
Android
- Android 9 and later — the stock camera reads codes on most devices, with Google Lens as the fallback on some manufacturer skins
- Google Lens — built into the Google app, Photos and Assistant, and reads codes from saved images too
- Samsung, Xiaomi and OnePlus all expose it slightly differently, which is why a short "scan with your camera" caption under a printed code removes a lot of hesitation
Test before you print
Print or display the code at the actual final size, then scan it with two different phones — ideally one iPhone and one Android — from the distance people will really stand at. Nearly every failed QR campaign would have been caught by this one-minute check, because a code that scans perfectly at 100% zoom on a monitor can be unreadable at 2 cm on matte paper.
QR versions and capacity — why longer links make denser codes
A QR code is not a fixed grid. It has 40 versions, from a 21×21 matrix up to 177×177, and the encoder picks the smallest one that fits your data at the chosen error-correction level. More characters means a higher version, which means more modules squeezed into the same physical square — and smaller modules are harder for a camera to resolve.
| Version | Matrix | Bytes at level M | Practical use |
|---|---|---|---|
| 1 | 21×21 | 14 | A very short link or code |
| 2 | 25×25 | 26 | A typical short URL |
| 5 | 37×37 | 106 | A URL with a few parameters |
| 10 | 57×57 | 311 | A short vCard |
| 20 | 97×97 | 1 062 | A full vCard with address |
| 40 | 177×177 | 2 331 | Maximum — hard to scan from print |
The practical takeaway: shorten the URL before you generate the code, not after. A link under 40 characters lands around version 2 or 3, giving you fat, forgiving modules that scan from across a room. The same destination behind a 200-character tracking URL produces a dense version 10 code that needs the phone held close and steady.
Error correction — how much damage a code survives
Every QR code carries redundant data so it still reads when part of the pattern is dirty, torn, or covered. There are four levels, and picking one is a trade between resilience and density.
| Level | Recoverable | Effect on size | When to use it |
|---|---|---|---|
| L | ~7% | Smallest code | Clean digital display, long payload |
| M | ~15% | Slightly larger | Default — screens and ordinary printing |
| Q | ~25% | Noticeably larger | Printed on textured or curved surfaces |
| H | ~30% | Largest code | Required when a logo covers the center |
Level H is what makes center logos possible at all. Covering roughly a fifth of the matrix destroys modules, and only the 30% redundancy of level H reliably absorbs that loss. This tool switches to H automatically as soon as you add a logo, so you cannot accidentally ship a code that scans on your monitor and fails on a printed flyer.
Color, contrast and the mistakes that break scanning
A scanner does not see color. It converts the camera image to greyscale and looks for a contrast edge, which is why the rule is about luminance, not hue. A dark blue code on white scans perfectly. A yellow code on white does not, even though a human sees the pattern clearly.
Safe choices
- Dark foreground, light background — the contrast ratio should be at least 4:1, and higher is always better
- Keep the quiet zone — the empty margin around the code is part of the specification, not decoration. Four modules is the minimum
- Leave the three corner squares square — those finder patterns are what a scanner locks onto first. This tool keeps them square even in dots mode for exactly that reason
What breaks codes in the wild
- Inverted codes — light modules on a dark background. Some scanners handle it, many do not. Not worth the risk on printed material
- Low-contrast pairs — grey on white, yellow on cream, pastel on pastel
- Cropping the margin to make the code fit a layout — this is the single most common print failure
- Printing too small — below about 2 cm even a low-version code becomes unreliable at arm's length
PNG or SVG — which export to use
Both exports come from the same matrix, so they are pixel-for-pixel equivalent in geometry. The difference is what happens when someone resizes them.
| PNG | SVG | |
|---|---|---|
| Scales without quality loss | No — fixed pixel grid | Yes — vector geometry |
| Best for | Websites, email, chat, slides | Print, stickers, signage, packaging |
| Opens everywhere | Yes | Yes, but some old tools need conversion |
| File size | Grows with dimensions | Constant, usually smaller |
| Editable in design tools | No | Yes — Illustrator, Figma, Inkscape |
The rule of thumb: anything that will be printed should be SVG. A printer works at 300 DPI or more, so a 512 px PNG blown up to a poster becomes visibly soft-edged, and soft edges are exactly what confuses a scanner. Vector output has no such ceiling — the same file works on a business card and a billboard.