Free tool · no signup
QR code generator
Static codes that never expire and need no account — the data lives in the square, not on somebody's server. Built in your browser and downloadable as SVG or PNG.
What the code does
Typed exactly as given. Nothing is capitalised or rewritten — the path of a link is case-sensitive, and a code that opens a different page than the one you typed is worse than a slightly bigger square.
Anyone who can photograph this code has your wifi password. It is meant for a guest network on a counter, not for the network your own devices are on.
Encoded as vCard 3.0, which is what phone address books read. Contact cards are the longest of these formats, so this code will be denser than the others — leave out what you do not need.
Scanning this opens a new email with the fields already filled in. It does not send anything — the person still has to press send.
Include the country code with a leading plus. A number written for one country will not dial from another, and a printed code has no way to ask.
Uses the SMSTO: form, which is the one both Android and iPhone cameras understand. The message is filled in ready to send, not sent.
What is actually encoded
This is the exact string inside the square. Every content type has its own format — this is what makes a scanned wifi code join a network instead of showing a line of text.
Your code
Affects the PNG file only. The preview above is scaled to fit, and the SVG has no size of its own — it is sharp at any of them.
Built by this browser with no network request, no account and nothing stored on this device. The code is static: what you typed is inside the square, so it works offline and never expires.
How to use it
How to use the QR Code Generator
01
Pick what the code should do
A link, a wifi network, a contact card, an email, a phone number or a text message. Each one has its own encoding, so a phone that scans it offers the right action rather than showing a line of text.
02
Choose the size and how much damage it should survive
Higher error correction rebuilds a code that has been scratched, smudged or partly covered, and costs capacity — the square grows. The page tells you what each level would cost for what you have typed.
03
Download SVG for print, PNG for screens
SVG stays sharp at any size, which is what you want for a menu, a sign or a sticker sheet. PNG is for a slide, an email or anywhere that will not take vector art.
Static and dynamic codes are not two features. They are two products
Search for a QR generator and most of the first page will hand you a dynamic code. It looks the same and it behaves differently in one crucial way: the square does not contain your link. It contains a short address on the generator's domain, and when somebody scans it their phone goes there first and is forwarded on. That indirection is what makes the marketed features possible — editing the destination after printing, counting scans, targeting by country — and it is also what makes the code a rented asset. The moment the account lapses, the trial ends or the company is acquired and the old domain quietly stops resolving, every printed copy of that code becomes a dead link. There are a great many dead menus and dead estate agent boards in the world for exactly this reason.
A static code has none of those features and none of that risk. Everything you typed is encoded in the pattern itself, so scanning it never touches anyone's server, and the code keeps working with no account, no subscription and no company behind it. If the destination needs to change later, the answer is to point the URL you encoded at something you control — a short path on your own domain — and change where that goes. That is the same benefit without handing anyone else the keys to your printed material.
Every content type has a real format behind it
A QR code is a way to carry a string of text, and what a phone does with that string depends entirely on the string being in a shape the phone recognises. This is the part most generators get approximately right and some get plainly wrong.
Wifi credentials use WIFI:T:WPA;S:network;P:password;;. The separators are significant, which means a network name containing a semicolon, a colon, a comma or a backslash has to be escaped or the parts run together and the phone reads nonsense. A contact card is vCard 3.0 with carriage-return line endings, because that is what address books parse. An email is a mailto: address with the subject and body percent-encoded as query parameters. A phone number is tel:, and a message is SMSTO: — not sms:, which is handled inconsistently across phones. Get any of these wrong and the code still scans perfectly; it just shows a line of text instead of doing the thing, which is a failure nobody notices until it is printed on five hundred flyers.
Why the square grows, and the three ways to shrink it
QR codes come in forty fixed sizes, called versions, from 21 modules across up to 177. The encoder picks the smallest one your content fits into, so adding a few characters can push you over a boundary and suddenly the pattern has noticeably more, smaller squares. Three things pull it back.
The first is shorter content — a link of forty characters instead of a hundred and forty. The second is a lower error correction level, which is a genuine trade rather than free space, and is covered below. The third is the least known: the format has three ways of packing data, and it chooses automatically based on what you typed. Digits alone are stored at about three and a third bits each. Capital letters, digits and a handful of punctuation marks — the setA–Z 0–9 space $ % * + - . / : — are stored at five and a half bits each. Anything else, including any lower-case letter, falls back to eight bits per byte, and accented or non-Latin characters take several bytes apiece. That is why a phone number produces a much simpler pattern than a web address of the same length, and why an all-capitals link is denser than a mixed-case one.
This tool will not capitalise a link to reach that denser mode, and it is worth saying why, because some generators do. The domain part of a URL is case-insensitive but the path is not:example.com/Menu and example.com/menu are different pages on most servers. Silently upper-casing to save a few modules would produce a smaller code that goes somewhere else, and a code that scans to the wrong page is a worse failure than a large one, because nothing about it looks wrong.
Error correction is insurance, and it is priced in capacity
Part of every QR code is redundant data that lets a scanner rebuild sections it cannot read. There are four levels: L recovers roughly 7% of the code, M about 15%, Q about 25%, and H about 30%. That redundancy occupies room that would otherwise hold your content, so raising the level either reduces what fits or grows the grid — the panel above tells you which, for what you have actually typed, rather than making you guess.
For a code on a screen, in a slide or in an email, M is right; nothing is going to damage it. For anything printed on a surface that will be handled, weathered or partly covered — a table sticker, a delivery van, a piece of packaging, a poster at a bus stop — Q or H is worth the extra modules. The one place people overestimate what error correction buys them is logos. Covering the centre of a code works because the redundancy rebuilds what the logo hides, but that redundancy was the margin for a fingerprint, a crease or a scuff, and once it has been spent on branding it is not there for anything else.
Printing one so it actually scans
The rule of thumb worth remembering is that a code should be about one tenth of the distance it will be scanned from. Something read at arm's length, like a menu or a leaflet, wants around 3cm across. A poster read from three metres wants around 30cm. Below roughly 2cm, phone cameras begin to struggle regardless of distance, and a dense code — a long contact card at level H, say — needs more room than a short link because its individual squares are smaller.
Two details cause most printed failures. The first is the quiet zone: the blank margin around the pattern is part of the specification, four modules wide, and scanners use it to find the edges. Cropping it off or running artwork up to the pattern is a common way to break a code that worked on screen. The second is contrast and polarity. Dark pattern on a light background is what scanners expect; inverting it, or printing dark on dark, will fail on many phones even when a preview looks fine. If you take one precaution, it is to scan the printed proof with more than one phone before the run.
Questions
What people ask about the QR Code Generator
Will this code stop working, or expire?
Does anything about the code get uploaded?
SVG or PNG — which one do I need?
How big should I print it?
What does the error correction level actually do?
Why does a wifi code need its own format?
WIFI:T:WPA;S:network name;P:password;;, with semicolons, colons, commas and backslashes inside your network name or password escaped so the parts do not run together. A generator that simply writes the password out as plain text produces a code that scans and then shows a line of text nobody can do anything with. The same is true of contact cards, which use the vCard format, and of the email, phone and message types.Can I put a logo in the middle?
Why did the code get denser when I added a few characters?
The long version
This tool is one page of a 189-page book
35 chapters for freelancers and small businesses, with a 120-prompt business library (B-001 to B-120) and 7 appendices.
Other free tools
Keyword Match Type Tool
Format a keyword list for broad, phrase, exact and every negative type
Open itInvoice Generator
Build a clean invoice in 30 languages and print it to PDF
Open itPassword Generator
Generate strong passwords in your browser and see what they are actually worth
Open itCV Maker
Build an ATS-friendly resume and download the PDF, free and unwatermarked
Open it