📱 QR Code Generator

Generates QR codes entirely in your browser — nothing is uploaded. Static and permanent, so they never expire, need no account, and carry no tracking redirect.

Free No Signup Required Browser-Based

Recovers ~15%. The usual default.

Version 2 · 25 × 25 modules · level M · 26 of 26 bytes used

Static and permanent. It encodes your content directly, so it works offline, never expires, and there is nothing to keep paying for.

What QR Code Generator Does

A QR code is not a link to your data — it is your data, drawn as squares. That single fact decides most of what matters about a generator, because it means a code built from your actual content will keep working forever, with no account, no service and no internet connection in the middle.

The catch is that most generators do not do that. The top result for this search ships with scan tracking switched on by default, which quietly makes the code point at the provider's own domain instead of yours. That buys you editable destinations and scan counts, and it costs you permanence: when the subscription lapses or the company sunsets the product, every printed code becomes a dead link. It is why "static QR code generator" and "free static QR code generator" both appear in Google's own related searches for this term.

The other thing worth caring about is where the encoding happens. People put Wi-Fi passwords and personal contact details into QR codes. Every other generator builds the image on a server, which means that content is uploaded. This one does not — the encoder runs in your browser, and you can prove it by turning off your internet connection and generating a code anyway.

What follows explains what the pattern actually contains, why codes get bigger as you add text, and how to pick an error-correction level, because those three questions cover almost every real problem people have with QR codes.

How to Use QR Code Generator

  1. Pick what the code should contain — a URL, plain text, Wi-Fi details, a contact card, email, SMS or a location
  2. Fill in the fields; the code redraws as you type, with nothing leaving your browser
  3. Choose an error correction level, and set the colors and size if you need them
  4. Download as PNG for screens or SVG for print, where it scales to any size without blurring

Formula Used by QR Code Generator

What the pattern is made of

finder patterns + timing + format info + data + Reed-Solomon error correction

Finder patterns
The three big squares. They let a scanner locate and orient the code from any angle
Timing patterns
The dashed lines between them, which tell the scanner the module grid size
Format info
15 bits stating the error-correction level and which mask was applied

Worked example

A short URL at error correction M

  1. Content is encoded to bytes
  2. Reed-Solomon parity bytes are appended
  3. Everything is laid out in a zig-zag around the fixed patterns

Result: A version 2 code — 25 × 25 modules

Versions — the 40 fixed sizes

modules per side = version × 4 + 17

Version 1
21 × 21 modules, the smallest
Version 40
177 × 177 modules, the largest

Worked example

Working out three sizes

  1. Version 1: 1 × 4 + 17 = 21
  2. Version 10: 10 × 4 + 17 = 57
  3. Version 40: 40 × 4 + 17 = 177

Result: The generator picks the smallest version your content fits, which is why adding text steps the size up

Error correction is Reed-Solomon

Parity bytes are computed over GF(256), so a lost byte can be reconstructed

Level L
About 7% of the code can be lost and still read
Level H
About 30% — which is what makes center logos possible

Worked example

The same 50-byte URL at each level

  1. L: version 3, 29 × 29
  2. M: version 4, 33 × 33
  3. Q: version 5, 37 × 37
  4. H: version 6, 41 × 41

Result: Higher recovery means a bigger, denser code for identical content

Masking — why two codes for the same text look different

Eight mask patterns are tried; the one with the lowest penalty score wins

Why
Large blank areas or accidental finder-like patterns confuse scanners
Penalty rules
Long same-color runs, 2×2 blocks, false finder patterns, and straying from a 50/50 dark ratio

Worked example

Encoding the same string twice with different settings

  1. Each of the 8 masks is XOR-ed over the data modules
  2. Each result is scored
  3. The lowest score is kept and recorded in the format bits

Result: Two generators can produce visually different but equally valid codes for identical text

Maximum capacity by error correction level

Bytes of UTF-8 content at version 40, the largest code. Note the cost of recovery: level H holds roughly half what level L does. These figures are computed by the encoder on this page and match the ISO/IEC 18004 tables.

LevelRecovers aboutMax bytesTypical use
L7%2,953Screens, clean conditions, smallest possible code
M15%2,331The general-purpose default
Q25%1,663Print, packaging, outdoor
H30%1,543Harsh conditions, or a logo over the center

How content length drives the size

At error correction M. The generator always picks the smallest version that fits, so the code grows in steps rather than smoothly.

ContentVersionModules
25 bytes — a short URL225 × 25
50 bytes — a full URL with a path433 × 33
100 bytes — a URL with parameters641 × 41
200 bytes — a short vCard1057 × 57
2,331 bytes — the maximum at this level40177 × 177

Static against dynamic

The distinction the top results do not lead with, and the reason four of Google's eight related searches for this term contain the word "static" or "offline".

Static — what this tool makesDynamic
What the pattern holdsYour actual contentA short link on the provider's domain
Editable laterNoYes
Scan analyticsNoneYes
Needs an accountNoAlmost always
Works if the provider disappearsYesNo — the code dies
Works with no internet at scan timeYes, for offline content like Wi-FiNo
Ongoing costNoneUsually a subscription

What each content type encodes

These are plain-text conventions that phone cameras recognize. You can read any of them by scanning the code with a generic reader.

TypeEncoded asWhat the phone does
URLhttps://example.comOffers to open it
Wi-FiWIFI:T:WPA;S:name;P:password;;Offers to join the network
ContactA vCard blockOffers to save a contact
Emailmailto: with subject and bodyOpens a pre-filled draft
SMSSMSTO:number:messageOpens a pre-filled message
Locationgeo:latitude,longitudeOpens the map app
TextThe text itselfDisplays it

How to Read Your Result

The tracking toggle is the business model

A dynamic QR code is genuinely useful when you need to change a destination after printing, or want to know how many people scanned a poster. But it is worth understanding the trade you are making: the printed pattern no longer contains your URL, it contains theirs. The code is only as durable as the company, the domain and your subscription. For a business card, a restaurant menu, a Wi-Fi sticker or a product label — anything you would rather not have to reprint — a static code is the safer default, and it is free forever because there is nothing to host.

A Wi-Fi QR code is a password in plain sight

The Wi-Fi format is not encrypted or obfuscated in any way; the password sits in the pattern as readable text, and any generic QR reader will show it. That is fine for a guest network on a café wall and a bad idea for your main network. Encode a guest SSID rather than the one your devices use, and remember that a photograph of the sticker is as good as the password. The upside of generating it here is that the password is never transmitted while you make the code.

Choosing an error-correction level is a size trade

Higher levels do not make a code more reliable in the abstract — they make it more tolerant of damage, at the cost of being physically denser for the same content. A dense code printed small is harder to scan, which can leave you worse off. For a screen or a clean print, M is almost always right. Reach for Q or H when the code will be on packaging that creases, a surface that gets dirty, or when a logo will sit over the middle, which is only possible because level H can lose 30% of the pattern and still decode.

Print size, quiet zone and contrast

Three practical rules cover most scanning failures. Keep the quiet zone — the blank margin, four modules wide, included in the downloads here — because a code butted against artwork often will not read. Keep good contrast and, crucially, keep the dark modules darker than the light ones; inverted codes fail on many readers. And scale for distance: a common rule of thumb is that the code should be at least a tenth of the scanning distance across, so a code read from two meters wants to be around 20 cm.

Why SVG is the better download for print

A QR code is a grid of hard-edged squares, which is exactly what vector formats are good at and exactly what bitmap scaling ruins. A PNG enlarged for a poster develops soft, gray module edges that reduce the contrast a scanner depends on. The SVG here is generated from the same module matrix as the on-screen code and scales to any size with perfectly sharp edges. Use PNG for screens and messaging apps, SVG for anything going to a printer.

Verifying that nothing is uploaded

Any page can claim it works locally. You can check this one: open your browser's developer tools, watch the network tab while you type into the fields, and see that no request is made. Or simply disconnect from the internet and generate a code — it still works, because the encoder is JavaScript already running on the page. That test is the reason this tool stopped calling an external image API, and the reason it is worth the code to do the encoding here.

Limitations & Accuracy Notes

  • Logos, gradients and custom module shapes are not supported. QRCode Monkey and the commercial generators do all three; if branding matters more than local encoding, they are the better choice.
  • Downloads are PNG and SVG only. PDF and EPS, which some print workflows want, are not produced here.
  • Content is encoded in byte mode, which handles any UTF-8 text. Generators that also use numeric and alphanumeric modes can fit slightly more digits or uppercase characters into the same size code.
  • These are static codes by design, so the destination cannot be changed after the code is printed, and there are no scan analytics. That is the trade being made deliberately.
  • The maximum is 2,953 bytes, and codes near that limit are extremely dense. Long content is usually better handled by encoding a short URL that points to it.
  • Nothing here validates that a URL works or that a Wi-Fi password is correct — it encodes exactly what you type, mistakes included. Always scan the finished code with a phone before printing it.

Frequently Asked Questions

Is my data sent anywhere?
No. The QR code is computed in your own browser by JavaScript on this page — there is no upload and no server call. You can confirm it by opening your browser's network tab while you type, or by disconnecting from the internet and generating a code anyway. That matters most for Wi-Fi passwords and contact details.
What is the difference between a static and a dynamic QR code?
A static code encodes your content directly in the pattern. A dynamic code encodes a short link on the provider's domain that redirects to your content — which lets them edit the destination and count scans, but means the code stops working if the account lapses or the service shuts down. Everything generated here is static, so it works forever and works offline.
Do these QR codes expire?
They cannot. There is no account, no link, and no service in the middle — the pattern itself contains your text. A printed static code will still scan in twenty years, assuming the ink survives.
Which error correction level should I choose?
M is the usual default and tolerates about 15% damage. Use L for the smallest possible code when it will be displayed cleanly on a screen, Q or H for print, dirty environments, or if a logo will cover part of the center. Higher correction means a physically denser code for the same content.
Why did my QR code get bigger when I added more text?
QR codes come in 40 fixed sizes, called versions, from 21×21 up to 177×177 modules. The generator picks the smallest version your content fits in, so adding characters eventually pushes it to the next size. Raising the error correction level does the same thing, because the recovery data also needs room.
How much can a QR code hold?
The absolute maximum is 2,953 bytes at version 40 with the lowest error correction — roughly 2,900 characters of plain English. In practice a code that large is very dense and needs a good camera and a clean print. Keep URLs short if the code will be printed small.

References & Further Reading

By OnlineToolHubs Team • September 2026