Free QR code generator
Make a static QR code for a link, a line of text, an email, a phone number or a place, with no account, no expiry and no redirect that tracks scans.
Result
Preview
A static code: no account, no expiry and no redirect that tracks scans.
Version 3, 29 by 29 modules, error correction M, 93% full
What is in the code
mailto:[email protected]?subject=Hello39 bytes. No redirect: the code holds this text itself, so it works as long as it can be scanned.
Structured result (JSON) · 3.4 KB
{
"type": "email",
"payload": "mailto:[email protected]?subject=Hello",
"payloadBytes": 39,
"version": 3,
"modules": 29,
"ecc": "M",
"capacityUsedPercent": 93,
"contrast": {
"ratio": 21,
"ok": true
},
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 37 37\" width=\"512\" height=\"512\" shape-rendering=\"crispEdges\" role=\"img\" aria-label=\"QR code\"><rect width=\"37\" height=\"37\" fill=\"#ffffff\"/><path fill=\"#000000\" d=\"M4 4h7v1h-7zM13 4h1v1h-1zM15 4h3v1h-3zM20 4h1v1h-1zM22 4h3v1h-3zM26 4h7v1h-7zM4 5h1v1h-1zM10 5h1v1h-1zM15 5h1v1h-1zM18 5h5v1h-5zM26 5h1v1h-1zM32 5h1v1h-1zM4 6h1v1h-1zM6 6h3v1h-3zM10 6h1v1h-1zM12 6h3v1h-3zM19 6h2v1h-2zM23 6h2v1h-2zM26 6h1v1h-1zM28 6h3v1h-3zM32 6h1v1h-1zM4 7h1v1h-1zM6 7h3v1h-3zM10 7h1v1h-1zM12 7h2v1h-2zM15 7h1v1h-1zM17 7h3v1h-3zM21 7h1v1h-1zM23 7h1v1h-1zM26 7h1v1h-1zM28 7h3v1h-3zM32 7h1v1h-1zM4 8h1v1h-1zM6 8h3v1h-3zM10 8h1v1h-1zM12 8h1v1h-1zM14 8h1v1h-1zM17 8h1v1h-1zM20 8h4v1h-4zM26 8h1v1h-1zM28 8h3v1h-3zM32 8h1v1h-1zM4 9h1v1h-1zM10 9h1v1h-1zM12 9h2v1h-2zM15 9h1v1h-1zM18 9h2v1h-2zM21 9h1v1h-1zM26 9h1v1h-1zM32 9h1v1h-1zM4 10h7v1h-7zM12 10h1v1h-1zM14 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM22 10h1v1h-1zM24 10h1v1h-1zM26 10h7v1h-7zM12 11h1v1h-1zM19 11h1v1h-1zM24 11h1v1h-1zM4 12h1v1h-1zM6 12h5v1h-5zM14 12h2v1h-2zM17 12h2v1h-2zM21 12h1v1h-1zM23 12h1v1h-1zM26 12h5v1h-5zM4 13h1v1h-1zM6 13h2v1h-2zM14 13h1v1h-1zM17 13h1v1h-1zM19 13h14v1h-14zM5 14h3v1h-3zM9 14h2v1h-2zM12 14h1v1h-1zM14 14h2v1h-2zM17 14h4v1h-4zM24 14h1v1h-1zM26 14h1v1h-1zM28 14h1v1h-1zM4 15h2v1h-2zM8 15h2v1h-2zM12 15h1v1h-1zM14 15h3v1h-3zM18 15h3v1h-3zM23 15h3v1h-3zM28 15h2v1h-2zM4 16h3v1h-3zM10 16h2v1h-2zM14 16h3v1h-3zM20 16h3v1h-3zM24 16h1v1h-1zM28 16h5v1h-5zM6 17h1v1h-1zM8 17h2v1h-2zM13 17h1v1h-1zM15 17h1v1h-1zM17 17h1v1h-1zM21 17h1v1h-1zM23 17h7v1h-7zM31 17h2v1h-2zM6 18h2v1h-2zM10 18h2v1h-2zM13 18h7v1h-7zM21 18h1v1h-1zM24 18h1v1h-1zM26 18h2v1h-2zM4 19h1v1h-1zM6 19h1v1h-1zM8 19h2v1h-2zM12 19h3v1h-3zM17 19h1v1h-1zM19 19h2v1h-2zM23 19h2v1h-2zM26 19h1v1h-1zM29 19h1v1h-1zM5 20h6v1h-6zM12 20h1v1h-1zM14 20h1v1h-1zM16 20h1v1h-1zM18 20h4v1h-4zM23 20h1v1h-1zM30 20h2v1h-2zM4 21h1v1h-1zM6 21h2v1h-2zM11 21h1v1h-1zM13 21h2v1h-2zM16 21h1v1h-1zM20 21h1v1h-1zM23 21h10v1h-10zM4 22h1v1h-1zM9 22h3v1h-3zM15 22h2v1h-2zM19 22h4v1h-4zM26 22h1v1h-1zM28 22h3v1h-3zM4 23h1v1h-1zM6 23h3v1h-3zM11 23h3v1h-3zM15 23h1v1h-1zM18 23h1v1h-1zM26 23h2v1h-2zM4 24h1v1h-1zM7 24h1v1h-1zM10 24h1v1h-1zM12 24h1v1h-1zM14 24h1v1h-1zM16 24h1v1h-1zM19 24h1v1h-1zM21 24h1v1h-1zM24 24h7v1h-7zM32 24h1v1h-1zM12 25h4v1h-4zM17 25h2v1h-2zM20 25h1v1h-1zM23 25h2v1h-2zM28 25h1v1h-1zM30 25h3v1h-3zM4 26h7v1h-7zM14 26h2v1h-2zM17 26h4v1h-4zM23 26h2v1h-2zM26 26h1v1h-1zM28 26h1v1h-1zM30 26h1v1h-1zM4 27h1v1h-1zM10 27h1v1h-1zM12 27h2v1h-2zM15 27h3v1h-3zM19 27h2v1h-2zM23 27h2v1h-2zM28 27h2v1h-2zM32 27h1v1h-1zM4 28h1v1h-1zM6 28h3v1h-3zM10 28h1v1h-1zM12 28h2v1h-2zM18 28h2v1h-2zM21 28h1v1h-1zM24 28h7v1h-7zM4 29h1v1h-1zM6 29h3v1h-3zM10 29h1v1h-1zM12 29h1v1h-1zM14 29h1v1h-1zM17 29h1v1h-1zM20 29h1v1h-1zM22 29h2v1h-2zM29 29h1v1h-1zM31 29h2v1h-2zM4 30h1v1h-1zM6 30h3v1h-3zM10 30h1v1h-1zM12 30h1v1h-1zM16 30h1v1h-1zM18 30h2v1h-2zM21 30h3v1h-3zM25 30h4v1h-4zM31 30h1v1h-1zM4 31h1v1h-1zM10 31h1v1h-1zM13 31h1v1h-1zM15 31h1v1h-1zM17 31h2v1h-2zM22 31h8v1h-8zM31 31h1v1h-1zM4 32h7v1h-7zM12 32h1v1h-1zM14 32h3v1h-3zM18 32h1v1h-1zM21 32h1v1h-1zM23 32h1v1h-1zM26 32h1v1h-1zM28 32h1v1h-1zM30 32h1v1h-1z\"/></svg>",
"warnings": []
}More in Make and convert
Next step
- Password generatorNeed a strong Wi-Fi password first?Open in Password generator
- HTTP headers and redirectsCheck where your link really goesCheck [email protected] in HTTP headers and redirects
Why a static code never expires
A QR code is just a picture of some text. In a static code the picture holds your text itself, so it works for as long as someone can scan it. Nothing on our side has to stay switched on, and there is nothing to renew.
Most "free" generators make a dynamic code instead. The picture holds a short link to the maker's server, which then sends people on to your address. That lets them count scans and sell you a plan, and it also means your printed code stops working the day the trial ends or the company changes its mind. Below the code we show the exact text it holds, so you can check that there is no middleman.
How to make a code
- Pick what the code holdsA link opens a web page. Text shows a message. Email, phone number and SMS start a message or a call. A location opens a map. Wi-Fi lets guests join your network.
- Type or paste itThe code redraws as you type. A link should start with https:// so phones treat it as a web address. The page counts the bytes and shows how full the code is.
- Check it, then downloadScan it with a phone before you print it. Download a PNG for documents and screens, or an SVG for print, where it stays sharp at any size.
Error correction, size and colour
A QR code carries spare data so it can still be read when part of it is dirty, scratched or covered. You choose how much. Automatic picks the smallest code that fits your text and then the strongest level that does not make it any bigger.
| Level | Part that can be damaged | Good for |
|---|---|---|
| L | About 7% | Clean screens and short links |
| M | About 15% | Most printed codes |
| Q | About 25% | Stickers, packaging and outdoor signs |
| H | About 30% | Codes that will get scuffed, or carry a logo |
Higher levels survive more damage but make the code denser, so each square is smaller and harder to read at a distance. Keep the quiet zone, the blank border, at 4 modules, as the standard asks. Use a dark colour on a light background: phone cameras read that best, and the page warns you when your colours are too close or turned around.
How much a code can hold
The biggest code, version 40, is 177 by 177 modules. What fits depends on the kind of text and the error correction level. Plain text and links are stored as bytes. Digits alone and capital letters with a few symbols are packed tighter, and the generator uses the tighter form whenever your text allows it.
| Level | Bytes of text | Digits only |
|---|---|---|
| L | 2,953 | 7,089 |
| M | 2,331 | 5,596 |
| Q | 1,663 | 3,993 |
| H | 1,273 | 3,057 |
Shorter text makes a simpler code that scans faster and from further away. If you are putting a long address in a code, a short, clean address that you control works far better than a huge one.
Questions people ask
Do these codes expire?
No. The code holds your text itself, so it works as long as it can be scanned. There is no account, no trial and no server of ours that has to keep running for it to work.
Is what I type sent to you?
Not with JavaScript on: the code is drawn in your browser and nothing you type is sent to us or to analytics. Without JavaScript the page has to ask our server to draw a link or text code, which we do not store or log. Wi-Fi codes are never made on our server.
Will you count how often my code is scanned?
No, and we cannot. A static code goes straight from the phone to your address, so nobody in the middle sees a scan. If you want scan counts, add tracking to your own web page.
What is the difference between PNG and SVG?
A PNG is a picture made of pixels at the size you chose, good for documents and screens. An SVG is drawn with shapes, so it stays sharp at any size and suits print. Both hold the same code.
Why does my code look so dense?
A long text or a high error correction level needs more squares. Shorten the text, pick a lower level, or use a shorter link that you control. Capital letters and digits also pack tighter than mixed case.
Can I put a logo in the middle?
Not yet. If you add one yourself, use error correction level H and test the code on a few phones, because anything over the code covers data.
Can I use the codes in print and for business?
Yes. The code is your text in a standard format (ISO/IEC 18004), with no licence or branding of ours on it. QR Code is a registered trademark of Denso Wave.
Can an AI agent make a QR code with this?
Yes. The same tool is available through the REST API and the MCP server as qr_generate, which returns the SVG and the exact text. It refuses Wi-Fi, because a Wi-Fi password should never be sent to a server.
Use it from AI, the API or the command line
Every LookupOwl tool is also a free API and an MCP tool, with no key and no account. This one is qr_generate. Please be kind to the rate limits.
curl "https://lookupowl.com/api/v1/tools/qr-generate?q=https%3A%2F%2Flookupowl.com%2F"claude mcp add --transport http lookupowl https://lookupowl.com/mcp