Skip to content

Static vs Dynamic QR Codes: What Is the Difference?

Last updated Published by Hyperdusk Ltd

The short answer

A static QR code holds the final content itself, such as a full URL, so it works for as long as that content does and cannot be edited after printing. A dynamic QR code holds a short link run by a QR service. The link redirects to a destination you can change later, and the service counts scans.

Create a static QR code for a URL, WiFi network or contact →

Key differences

Static and dynamic QR codes side by side
Static QR codeDynamic QR code
What the code containsThe content itself: a URL, text, WiFi details or a contact cardA short URL that redirects to the real destination
Change the destination after printingNoYes, by editing the redirect
Scan countsNone from the code; a URL's own site analytics still count visitsYes, counted at the redirect
Depends on a third partyNoYes: it stops working if the redirect is removed
Works without an internet connectionYes for text, WiFi and contact cardsNo: the phone must follow the redirect
Size of the codeGrows with the length of the contentSmall, because the short link is short

What is a static QR code?

A code in which the data you entered is the data in the pattern. Scan it and the phone has everything: the URL, the text, the WiFi network name and password, or the contact card. Nothing is looked up from the company that made the code, so there is nothing to expire and nothing to switch off.

The cost is that the content is fixed. If a printed code points at a URL that later changes, the only fixes are to redirect that URL on your own site or to reprint.

What is a dynamic QR code?

A code that contains a short URL belonging to a QR service. When someone scans it, the service's server records the scan and redirects the phone to the destination set in your account. Bitly, which sells them, describes dynamic codes as using "a modifiable short URL to redirect users to your latest landing page", with "editable URLs and automatic tracking".

The pattern itself is not special. A scanner reads a URL either way, and "dynamic" describes the server behind that URL. That has two consequences. The code only works while the redirect exists: Bitly's article notes that on some services' free trials a dynamic code "may expire if you don’t upgrade". And you can build the same thing yourself by encoding a URL on a domain you control and changing where it redirects.

Which kind does generate.now make?

Static only. The generate.now QR code generator encodes exactly the text shown on the page, for a URL, plain text, WiFi details or a vCard. There is no redirect through generate.now and no scan is reported to us, so a code keeps working for as long as its content is valid. It cannot be edited after you print it.

How much data fits in a static QR code?

It depends on the version, which is the size of the grid, and on the error-correction level. Versions run from 1 (21 × 21 modules) to 40 (177 × 177). Error correction lets a damaged code still scan: level L restores about 7% of the code, M about 15%, Q about 25% and H about 30%. A higher level leaves less room for data.

Maximum bytes per QR code version and error-correction level
Version (modules per side)LMQH
1 (21)1714117
2 (25)32262014
5 (37)106846044
10 (57)271213151119
20 (97)858666482382
40 (177)2,9532,3311,6631,273
Computed by calling the qrcode library, version 1.5.4, with lower-case text of increasing length in byte mode until it reported that the data no longer fit. The version 40 row matches the capacity table in the library's README. Digits and upper-case-only text pack more tightly: version 40 at level L holds 7,089 digits or 4,296 alphanumeric characters.

Why does the length of a URL matter?

A longer URL needs a larger grid. Printed at the same physical size, a larger grid means smaller modules, which are harder for a camera to resolve. This is the practical argument for a short link, whether it comes from a dynamic-code service or from your own domain.

Smallest QR code for a URL of a given length
URL lengthLMQH
25 characters25 × 2525 × 2529 × 2933 × 33
50 characters29 × 2933 × 3337 × 3741 × 41
100 characters37 × 3741 × 4149 × 4953 × 53
150 characters45 × 4549 × 4957 × 5765 × 65
250 characters57 × 5761 × 6173 × 7381 × 81
Modules per side of the smallest version the qrcode library (1.5.4) chose for a lower-case https URL of that length, at each error-correction level. Sizes exclude the quiet zone.

Which should you use?

Use a static code when the content will not change and you do not want the code to depend on anyone's service: WiFi details, a contact card, a link to a page you control. It costs nothing to keep alive.

Use a dynamic code when the destination may change after printing or you need scan counts, for example on packaging or a long-running campaign. If you do, check what happens to the code when the subscription ends, or run the redirect on your own domain so the printed code never depends on a vendor.

Tools for this

Sources

This page was written from the primary sources below, read on .

Published by Hyperdusk Ltd. Last updated . Figures in computed tables were produced by the method stated under each table.

All guides→