What the code is for
Account or card number?
A higher level survives more smudging and folding, at the cost of a denser code.

The code is generated in your browser. Account numbers, Wi-Fi passwords and everything else you type stay on your device.

How it works

A QR code holds text, and what makes one code a link and another a Wi-Fi network is the shape of that text. This tool writes the shape each kind of scanner expects, which is the part that is easy to get almost right and have nothing work.

A link needs its scheme. A code holding `example.com` opens a web search on most phones; one holding `https://example.com` opens the site. This page adds `https://` to anything shaped like a hostname and leaves everything else exactly as typed, so plain text stays plain text.

A Wi-Fi code follows the `WIFI:T:WPA;S:name;P:secret;;` syntax that both Android and iOS read. Semicolons, commas, colons and backslashes are delimiters in that syntax, so a password containing one has to be escaped — the usual symptom of a tool that skips this is a code that works for every network except the one you needed it for.

A contact card uses vCard 3.0 rather than the newer 4.0. On the merits 4.0 is the better standard; in practice the iOS camera and most Android scanners read 3.0 far more reliably, and a contact card that will not open is worth nothing.

Formula

modules per side = 17 + 4 × version, from version 1 (21×21) to version 40 (177×177)

The library picks the smallest version that fits your text at the error-correction level you chose. More text, or a higher correction level, means a denser code — which is why a long URL at level H needs to be printed larger to stay scannable.

Worked example

A Wi-Fi code for a network whose password contains a semicolon:

Network name
Cafe Corner
Password as typed
sun;set2026
Password as encoded
sun\;set2026
Full payload
WIFI:T:WPA;S:Cafe Corner;P:sun\;set2026;;

Without the backslash the scanner reads the password as `sun` and stops at the semicolon, then fails to join — with an error message that says nothing about why.

Frequently asked questions

What error correction level should I use?

M is the usual choice and the one payment codes use. Go to Q or H if the code will be printed and may be smudged, folded or partly covered — at the cost of a denser code that needs to be printed larger.

PNG or SVG?

SVG for print and design work, because it stays sharp at any size. PNG for places that only accept a bitmap, such as a social post or a chat message.

Does the Wi-Fi code expose my password?

Yes. The password sits inside the code as plain text, and anyone who can scan the code can read it. That is how the format works, so only display the code where you are happy for people to join the network.

Is anything I type sent to a server?

No. The code is generated in your browser with JavaScript. This site is a set of static HTML files; there is no server to receive what you enter.

Why does my code stop working when I add more text?

Each QR version holds a fixed amount of data, and past version 40 there is no larger code. Long text also makes the modules smaller at the same printed size, so it needs a bigger print. Shortening the text, or lowering the correction level, both help.

Why does the code have a white border?

That is the quiet zone, and the specification requires four modules of it. Scanners genuinely fail without it — a code pasted flush against other content is the most common reason an otherwise valid code will not read.

Sources

Report a problemWrong result, out-of-date figures or a display bug? Send it from here. The page address and tool name are attached for you — just describe what is wrong.

Report a problem

The more specific the faster it gets fixed: what you entered, what you got, and what you expected.

What kind of problem?
0/2000

Only used to reply to you, nothing else.

Sent with your report

Page
/en/qr-code-generator
Tool
QR Code Generator
Language
English

The values you typed into the tool are not sent. Besides what is listed below, the server records the browser type and uses your IP address to rate-limit submissions — the privacy policy has the detail.