Skip to content
LookupOwl

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.

Up to 2,953 bytes. The code holds exactly this: there is no redirect.

A static code: no account, no expiry and no redirect that tracks scansWith JavaScript on, the code is drawn on this page and what you type never leaves it. Without it, links and text are drawn by our server and not stored. A Wi-Fi code needs JavaScript so your password stays on your device. To build one by hand, put the text WIFI:T:WPA;S:name;P:password;; into a QR tool that runs on your own device.

What the code holds: text, url, wifi (the web page only: it needs a password, which is never sent to a server), email, tel, sms or geo.

More options

For email and SMS.

Wi-Fi codes are made in your browser, so this needs JavaScript.

wifi: WPA (covers WPA2 and WPA3 personal), WEP or nopass.

wifi: the network does not broadcast its name.

Higher error correction survives scratches and logos but makes the code denser.

Image size in pixels.

The blank border. 4 is the standard.

Foreground colour as hex, for example #000000.

Background colour as hex, for example #ffffff.

Result

Generated just now

JSON

Preview

A static code: no account, no expiry and no redirect that tracks scans.

QR code, 25 by 25 modules.

Version 2, 25 by 25 modules, error correction M, 86% full

86% of the space for data is used.
Contrast 21 to 1
What is in the code
Exact texthttps://lookupowl.com/

22 bytes. No redirect: the code holds this text itself, so it works as long as it can be scanned.

Structured result (JSON) · 2.7 KB
{
  "type": "url",
  "payload": "https://lookupowl.com/",
  "payloadBytes": 22,
  "version": 2,
  "modules": 25,
  "ecc": "M",
  "capacityUsedPercent": 86,
  "contrast": {
    "ratio": 21,
    "ok": true
  },
  "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 33 33\" width=\"512\" height=\"512\" shape-rendering=\"crispEdges\" role=\"img\" aria-label=\"QR code\"><rect width=\"33\" height=\"33\" fill=\"#ffffff\"/><path fill=\"#000000\" d=\"M4 4h7v1h-7zM13 4h1v1h-1zM17 4h1v1h-1zM22 4h7v1h-7zM4 5h1v1h-1zM10 5h1v1h-1zM13 5h7v1h-7zM22 5h1v1h-1zM28 5h1v1h-1zM4 6h1v1h-1zM6 6h3v1h-3zM10 6h1v1h-1zM12 6h2v1h-2zM15 6h2v1h-2zM19 6h2v1h-2zM22 6h1v1h-1zM24 6h3v1h-3zM28 6h1v1h-1zM4 7h1v1h-1zM6 7h3v1h-3zM10 7h1v1h-1zM12 7h1v1h-1zM14 7h2v1h-2zM17 7h2v1h-2zM22 7h1v1h-1zM24 7h3v1h-3zM28 7h1v1h-1zM4 8h1v1h-1zM6 8h3v1h-3zM10 8h1v1h-1zM12 8h3v1h-3zM16 8h1v1h-1zM20 8h1v1h-1zM22 8h1v1h-1zM24 8h3v1h-3zM28 8h1v1h-1zM4 9h1v1h-1zM10 9h1v1h-1zM12 9h1v1h-1zM14 9h1v1h-1zM16 9h2v1h-2zM19 9h2v1h-2zM22 9h1v1h-1zM28 9h1v1h-1zM4 10h7v1h-7zM12 10h1v1h-1zM14 10h1v1h-1zM16 10h1v1h-1zM18 10h1v1h-1zM20 10h1v1h-1zM22 10h7v1h-7zM12 11h1v1h-1zM14 11h1v1h-1zM18 11h1v1h-1zM20 11h1v1h-1zM4 12h1v1h-1zM6 12h5v1h-5zM14 12h1v1h-1zM16 12h5v1h-5zM22 12h5v1h-5zM4 13h1v1h-1zM6 13h2v1h-2zM11 13h7v1h-7zM20 13h1v1h-1zM23 13h1v1h-1zM27 13h1v1h-1zM4 14h1v1h-1zM8 14h1v1h-1zM10 14h1v1h-1zM13 14h2v1h-2zM17 14h5v1h-5zM25 14h1v1h-1zM27 14h2v1h-2zM5 15h1v1h-1zM7 15h3v1h-3zM11 15h2v1h-2zM18 15h1v1h-1zM20 15h2v1h-2zM23 15h2v1h-2zM28 15h1v1h-1zM4 16h2v1h-2zM7 16h1v1h-1zM9 16h2v1h-2zM12 16h1v1h-1zM17 16h2v1h-2zM21 16h2v1h-2zM24 16h1v1h-1zM26 16h3v1h-3zM4 17h1v1h-1zM7 17h3v1h-3zM11 17h4v1h-4zM16 17h2v1h-2zM20 17h1v1h-1zM23 17h1v1h-1zM25 17h1v1h-1zM27 17h1v1h-1zM4 18h1v1h-1zM9 18h3v1h-3zM18 18h2v1h-2zM21 18h1v1h-1zM23 18h3v1h-3zM27 18h2v1h-2zM4 19h1v1h-1zM7 19h1v1h-1zM9 19h1v1h-1zM16 19h1v1h-1zM18 19h2v1h-2zM21 19h1v1h-1zM23 19h2v1h-2zM28 19h1v1h-1zM4 20h1v1h-1zM6 20h2v1h-2zM9 20h3v1h-3zM14 20h1v1h-1zM16 20h2v1h-2zM19 20h6v1h-6zM26 20h1v1h-1zM12 21h2v1h-2zM17 21h1v1h-1zM20 21h1v1h-1zM24 21h2v1h-2zM4 22h7v1h-7zM13 22h1v1h-1zM15 22h4v1h-4zM20 22h1v1h-1zM22 22h1v1h-1zM24 22h1v1h-1zM26 22h3v1h-3zM4 23h1v1h-1zM10 23h1v1h-1zM12 23h2v1h-2zM15 23h1v1h-1zM18 23h1v1h-1zM20 23h1v1h-1zM24 23h2v1h-2zM4 24h1v1h-1zM6 24h3v1h-3zM10 24h1v1h-1zM12 24h4v1h-4zM19 24h6v1h-6zM26 24h3v1h-3zM4 25h1v1h-1zM6 25h3v1h-3zM10 25h1v1h-1zM12 25h3v1h-3zM16 25h2v1h-2zM21 25h2v1h-2zM24 25h5v1h-5zM4 26h1v1h-1zM6 26h3v1h-3zM10 26h1v1h-1zM12 26h1v1h-1zM17 26h2v1h-2zM25 26h2v1h-2zM28 26h1v1h-1zM4 27h1v1h-1zM10 27h1v1h-1zM16 27h2v1h-2zM20 27h1v1h-1zM23 27h3v1h-3zM28 27h1v1h-1zM4 28h7v1h-7zM12 28h3v1h-3zM16 28h1v1h-1zM18 28h1v1h-1zM21 28h1v1h-1zM23 28h6v1h-6z\"/></svg>",
  "warnings": []
}

Next step

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

  1. 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.
  2. 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.
  3. 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.

LevelPart that can be damagedGood for
LAbout 7%Clean screens and short links
MAbout 15%Most printed codes
QAbout 25%Stickers, packaging and outdoor signs
HAbout 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.

LevelBytes of textDigits only
L2,9537,089
M2,3315,596
Q1,6633,993
H1,2733,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
curl "https://lookupowl.com/api/v1/tools/qr-generate?q=https%3A%2F%2Flookupowl.com%2F"
MCP
claude mcp add --transport http lookupowl https://lookupowl.com/mcp