Skip to content

QR Code Generator

Type a link or some text and download the code as SVG or PNG. It’s a static code: the address is in the pattern itself, so it never expires and needs no account.

The full address, as you’d type it in a browser.

More optionsError correction M · black on white · PNG 1024 px

Error correction

How much of the code can be damaged and still read. Higher levels make a denser code; M suits most uses.

Colours

Contrast 21.0:1. Dark on light with strong contrast: easy to scan.

PNG size

Both downloads include the quiet zone, a light margin 4 modules wide that readers need around the code. Keep it when you place the code in a design.

ExampleLink QR code, static

25 × 25modules

It holds the address itself, so it never expires and works without this site.

Version
2 (of 40)
Data
19 of 26 bytes
Reads back
Checking…
How this works: Method, 10 sources, Checked against 3 worked examples,

How this works

Method

A picture or camera frame is decoded on this device, by the browser’s own barcode detector where it has one, else by the open-source jsQR decoder (a still image is retried smoothed and at half size). The text is shown, never opened: a link’s real domain is found with common Public Suffix List endings and checked for short links, look-alike letters, text before an @, IP addresses and plain http. New codes are encoded as UTF-8 in the smallest version that fits, then decoded again to check they read back.

How it’s tested

3 worked examples for this page are checked by automated tests before every release: given the inputs, the tool must show the expected answer.

Changes

  • First version: a scanner for camera, photos and screenshots with link checks, and generators for links, text, Wi-Fi and contacts with SVG and PNG downloads.

How we make toolsReport a mistake

Worked example: a code for https://example.com

The generator writes the address as it is, https://example.com, 19 characters. That is 19 bytes of UTF-8. At error correction M version 1 holds 14 bytes, too few, and version 2 holds 26, so the code is version 2: 25 × 25 modules, or 33 × 33 with the 4-module quiet zone on every side.

The PNG download scales each module to a whole number of pixels so the edges stay sharp, and the SVG draws each run of dark modules as one rectangle, so it prints crisply at any size.

How the code is made

Your text is written as UTF-8 bytes in the code’s byte mode, then the encoder picks the smallest of the 40 QR versions that holds it at the error correction level you chose. Version 1 is 21 by 21 modules and each version adds 4 per side, up to 177 by 177 at version 40. The encoder adds Reed–Solomon error correction, tries the eight mask patterns and keeps the one that leaves the fewest confusing blocks and stripes, as ISO/IEC 18004 describes.

This is a static code: the address itself is in the pattern. Many generator sites make “dynamic” codes instead, which hold a short link to their own server and forward from there; those stop working if the subscription ends or the company closes. A static code keeps working as long as the address it holds does, with no account and no tracking.

Before you download, the page reads the finished code back with a QR decoder, in the colours you chose, and checks it says exactly what you typed. Shorter text makes a smaller, coarser code that scans from further away, so drop tracking parameters you don’t need from long links.

How much a QR code holds

Bytes of text (byte mode) that fit in each version at each error correction level, found by asking the same encoder this page uses; ISO/IEC 18004 Table 7 lists the same numbers.

Bytes of text (byte mode) that fit in each version at each error correction level, found by asking the same encoder this page uses; ISO/IEC 18004 Table 7 lists the same numbers.
VersionModulesL (7%)M (15%)Q (25%)H (30%)
121 × 211714117
225 × 2532262014
329 × 2953423224
433 × 3378624634
537 × 37106846044
641 × 411341067458
745 × 451541228664
849 × 4919215210884
953 × 5323018013098
1057 × 57271213151119
Show all 15 rows
1577 × 77520412292220
2097 × 97858666482382
25117 × 1171,273997715535
30137 × 1371,7321,370982742
40177 × 1772,9532,3311,6631,273

Frequently Asked Questions

Do these QR codes expire?

No. They are static: the link or text is stored in the pattern itself, not on a server, so nothing can switch it off. The code keeps working for as long as the address it points to does. If you need to change the destination later, point the code at a page you control and change that page instead.

SVG or PNG: which should I download?

SVG for print and design work: it is drawn with shapes, so it stays sharp at any size, in Word, Illustrator, Canva or a print shop’s software. PNG for anywhere that wants a picture, such as an email, a slide or social media; choose a larger size if it will be printed big.

Which error correction level should I pick?

M suits most codes. Choose L to keep a long link as small and coarse as possible, and Q or H if the code will get scuffed, printed small on rough material, or partly covered by a logo. Higher levels make a denser code for the same text.

Can I use my own colours?

Yes, under More options. Keep the code dark on a light background with strong contrast: the page warns below 4.5:1 and when the colours are reversed, which some phone cameras can’t read. Check the read-back result before you print.