SkyBrance Logo
SkyBrance
Menu

Static vs Dynamic QR Codes: What's the Difference?

11 min read
|
Updated November 8, 2026
381 views
Comparison of a static QR code with the destination URL encoded directly in a dense pattern and a dynamic QR code that encodes a short link, producing a sparser pattern whose destination can be edited and whose scans are tracked

Static vs dynamic QR codes explained - what each one encodes, why only one can be edited or tracked, and how short links make QR codes easier to scan.

You print five thousand flyers with a QR code on them. The campaign ends, and you want the code to point somewhere new. Whether that turns out to be a two-minute change or five thousand pieces of waste paper was decided months earlier, when somebody chose how to generate the code - and very likely did not realise they were making a choice at all.

The two options are called static and dynamic. They look identical on paper and cost the same to print, and they behave completely differently once they are out in the world. This guide covers what actually separates them, and why the same choice also affects something most people never connect to it: whether the code scans reliably in the first place.

What's Actually Inside a QR Code

Nearly every misunderstanding about QR codes traces back to one assumption: that the code is somehow connected to a server. It is not. A QR code is a printed block of text. The black and white squares are an encoding of characters and nothing more. When a phone camera reads the code it decodes the squares back into that text, and if the text happens to look like a URL, the phone offers to open it.

There is no lookup, no database, and no connection back to whoever generated the code. The pattern is the data, which means that once it is printed, the text inside it is fixed for as long as the ink lasts. Nothing can reach out and change what was printed.

So "can I change my QR code?" is the wrong question, because the answer is always no. The useful question is what text did you encode? Everything else in this article follows from the answer.

Static QR Codes

A static QR code encodes your destination URL directly:

Encoded in the pattern:
https://skybrance.com/offers/diwali-2026-festive-sale

The phone reads that URL and opens it. It is simple and it is permanent, and permanent is the word that matters, because it brings three consequences with it.

It cannot be changed. The destination is the ink. Repointing it means reprinting everything it appears on.

It cannot be tracked. The phone goes straight from the printed page to your website, and no system in between ever sees the scan, so nothing can count it. You might notice more traffic arriving at that page, but you cannot separate scans from visitors who arrived some other way, and you certainly cannot tell which flyer, city or placement produced them.

It gets denser as the URL gets longer. More characters means more squares, which matters far more than most people expect and gets its own section below.

None of this makes static codes bad. They are final, and they are blind, and for some jobs both of those are fine.

Dynamic QR Codes

A dynamic QR code encodes a short link instead of the destination:

Encoded in the pattern:
https://skyh.in/diwali

The pattern is exactly as permanent as before - that part cannot change. What changed is what the permanent text points at. Scanning now sets off a short sequence: the phone opens the short link, your link platform looks up the alias, records the scan, and redirects to whatever destination is currently stored against it. That middle step is where all the useful behaviour comes from.

The destination becomes editable. The printed code says skyh.in/diwali forever, but where skyh.in/diwali leads is a setting you control. Change it, and every printed copy follows.

Scans become measurable. Every scan passes through your platform on the way, so each one can be recorded - when it happened, roughly where, and on what kind of device. A flyer campaign that used to produce nothing but a vague feeling now produces data.

The pattern gets simpler. A short link is far fewer characters than a full URL, which produces a less dense code. That is a genuine practical advantage rather than a footnote, and it is covered properly below.

The name makes "dynamic QR code" sound like a special kind of technology. It is not. A dynamic QR code is an ordinary QR code that happens to contain a short link. The redirect does all the work.

Static vs Dynamic at a Glance

StaticDynamic
What's encodedThe destination URLA short link
Editable after printingNoYes
Scans trackedNoYes
Location and device dataNonePer scan
Pattern densityGrows with URL lengthConsistently low
Works if the link platform is downYesNo
Needs an ongoing serviceNoYes
Fixing a mistake after printReprintEdit the destination

The trade-off deserves to be stated plainly: dynamic codes introduce a dependency. Your printed codes only work for as long as the link platform keeps resolving them, whereas a static code depends on nothing except your own website. For most business use that dependency is worth taking on, in the same way that depending on your domain name is worth it - but for anything meant to keep working for decades with nobody looking after it, it is a real consideration rather than a formality.

Why Short Links Make Better QR Codes

Most comparisons of static and dynamic codes stop at editing and tracking. The more practical argument is physical, and it comes from how QR codes are built: a code's complexity is set by how many characters it has to hold.

QR codes come in numbered versions, each a fixed grid of squares (called modules). Version 1 is 21 × 21, and every version after it adds four modules to each side. A short string fits in a small grid of large, chunky modules. A long one needs a bigger grid, which means more modules packed into the same printed area - and therefore smaller ones.

Illustrative QR patterns growing denser as the encoded text grows from a 22-character short link to a 60-character plain URL, a 94-character tagged URL and a 200-character long tagged URL, with a pre-print checklist covering 2 cm minimum size, a four-module quiet zone, dark-on-light colours and matte stock

For a URL at the medium error-correction level most generators default to, the sizes work out like this:

Encoded textQR versionGridIn practice
22 characters (short link)225 × 25Large modules, scans easily
60 characters (plain URL)433 × 33Noticeably denser
94 characters (tagged URL)641 × 41Small modules, fussy at distance
200 characters (long tagged URL)1057 × 57Needs to be printed large

A realistic tagged campaign URL looks like this, and it is 94 characters long:

https://skybrance.com/offers/diwali?utm_source=flyer&utm_medium=print&utm_campaign=diwali_2026

Put the same campaign behind https://skyh.in/diwali and you are encoding 22 characters instead. On a flyer where the code has to fit into a 3 cm corner, the grid shrinks from 41 modules across to 25, so each module is well over one and a half times the size. The consequences of that are concrete:

  • Scanning distance. Chunky codes read from further away. A dense code on a hoarding can be unreadable from the pavement.
  • Print size. A dense code has to be printed physically larger to stay scannable, which means it competes with everything else in your design for space.
  • Damage tolerance. Error correction lets a code survive some damage, but when the modules are small, a smudge, fold or scratch covers proportionally more of them.
  • Poor conditions. Low light, an older camera, a slight angle, a glossy surface - every one of these degrades a read, and dense codes are the first to fail.

So the short link is doing three jobs at once. It makes the code editable, it makes it trackable, and it makes it physically easier to scan - which is the one that decides whether a print campaign works at all. You do not have to give up campaign tracking to get there, either: the UTM parameters go on the destination stored behind the short link rather than in the code itself, which is the approach covered in how to add UTM parameters to your short links.

When Static Is Fine

Static codes have legitimate uses, and reaching for dynamic out of habit is not always right. Static is the better choice when:

  • The destination genuinely will not change. Your homepage, or a page you have committed to keeping at the same address.
  • Nobody needs the data. A code on an internal document where no one will ever ask how often it was scanned.
  • The code has to work without any third party. Equipment labels, archival documents, anything expected to keep functioning for decades.
  • The content is not a URL at all. QR codes can hold contact details, Wi-Fi credentials or plain text, and with nothing to redirect, dynamic simply does not apply.

That last case comes up more often than people expect. A conference badge carrying someone's contact card is static by nature, and correctly so.

When You Need Dynamic

For marketing and campaign work, dynamic is the sensible default. It matters most for:

  • Anything printed in quantity. Flyers, brochures, packaging, posters. The cost of reprinting after a mistake is the whole argument.
  • Anything you want to measure. Scans are the only direct evidence that a physical campaign did anything.
  • Anything seasonal. A festive code becomes a new-year code without a print run.
  • Anything with a long physical life. Codes on packaging, signage, equipment or vehicles outlive the campaigns that put them there.
  • Anything where you compare placements. Separate codes for separate locations are what make the comparison possible.

The last one is where print campaigns get genuinely interesting. If the same poster goes up in four neighbourhoods, give each location its own short link and its own code. To a passer-by the four codes look near-identical; in your report they are four separate rows. "We put up posters" becomes an answer to whether the station posters or the mall posters did the work, which is usually the most valuable thing a print campaign can tell you and the thing static codes can never tell you at all.

Printing QR Codes That Actually Scan

A code that fails at the moment someone points a phone at it is worse than no code, because it costs you the scan and a little credibility along with it. Most failures come down to a short list of physical rules.

Size. Print at least 2 × 2 cm for anything scanned from arm's length. For greater distances, a common rule of thumb is that the code should be roughly one-tenth of the scanning distance, so a code read from 2 metres wants to be about 20 cm across. Those figures assume a reasonably sparse code; a dense one needs more room.

Quiet zone. The QR specification calls for a clear margin around the code, four modules wide. Designers routinely trim it to make a layout fit, and it is one of the most common reasons a code will not read. Nothing - text, borders, background images - should encroach on that margin.

Contrast and polarity. Dark code on a light background. Inverted codes (light on dark) look striking and fail on some scanners, particularly older phones and third-party scanning apps. Keep the contrast high and keep codes off photographs and gradients.

Logos and error correction. A logo in the middle of a code works by covering modules and relying on error correction to reconstruct what is hidden. The four levels - L, M, Q and H - recover roughly 7%, 15%, 25% and 30% of the data respectively. A logo spends that budget before the code has been folded or smudged even once, so if you add one, raise the level to Q or H and keep the logo small.

Materials. Glossy laminate and reflective surfaces throw glare straight into the camera. Matte finishes scan far more reliably. Curved surfaces such as bottles distort the grid, so put the code on the flattest area available.

Placement. A code has to be reachable by a phone held by a person. Codes mounted high on a wall, behind reflective glass or on the side of a moving vehicle are decoration.

Say what it does. A bare code gives nobody a reason to scan it. A short line beside it - "Scan for the festive catalogue" - tells people what they get for the effort.

Print the link as well. Put the readable short link next to the code. Some people will not scan, some phones will fail, and skyh.in/diwali can be typed by hand. That only works when the alias is something a person can read, which is the case for a vanity URL and not for a random string of characters.

Test Before You Print

Print is the one place where there is no fixing it afterwards, at least for the physical half. A broken link on a website is a five-minute edit; a code that will not scan on ten thousand brochures is a reprint. Fifteen minutes with the proof avoids the most expensive mistakes in this article:

  • Scan the actual print proof, not the file on your screen. Paper, ink and finish all behave differently from pixels.
  • Use several phones, and make sure one of them is old. Newer cameras forgive a great deal that older ones do not.
  • Stand at the real distance the code will be scanned from, not wherever is convenient.
  • Try it in realistic light, including somewhere dim.
  • Check the destination, not just that something opened. Generating a code for the wrong link is easier than it sounds.
  • Confirm the scan was recorded in your dashboard, so you know the tracking works before the run rather than after it.
  • Test a damaged copy. Fold or scuff a proof and scan it again. Real flyers spend time in pockets and bags.

Where QR Campaigns Go Wrong

  • Using static for a campaign. It is the default in most simple generators, and it is where the reprint problem comes from.
  • Encoding a long tagged URL directly. A dense, fragile code. Shorten first and put the tags on the destination.
  • Cropping the quiet zone. Tidy design that breaks the code.
  • Inverting the colours. Looks good, fails on a share of phones you will never hear from.
  • Printing too small. The most common physical failure of all.
  • Glossy stock. Glare beats the camera.
  • One code for every placement. Throws away the comparison that makes print measurable.
  • No call to action. People need a reason to lift the phone.
  • Testing only on screen. A code that reads perfectly on a monitor can fail on paper.
  • Letting the destination rot. A code on packaging can be scanned three years after the campaign ended. If nobody repoints it, it leads to a dead page.

How SkyShare's QR Codes Work

QR codes created in SkyShare are dynamic by construction. You give it a destination, but what ends up in the pattern is a SkyShare redirect link, never the destination itself - so the destination stays an editable field on the code's settings page for as long as the code exists, and changing it changes where every printed copy leads.

Each code has its own scan history, with totals over time and breakdowns by device, operating system and location. That is the data that answers the placement question above, provided each placement has its own code. There is also an optional expiry date, and when a code expires you choose what scanners see instead - a title and message, or a fallback page to redirect to - which is a much better outcome for a code on old packaging than a dead link. Codes can be password protected where the destination should not be public, and the style editor lets you set the error-correction level directly, which is the setting to raise before you add a logo.

If you want the readable alias printed beside the code, as recommended above, create a short link with a custom alias and generate the code from that, ideally on your own branded domain so both the code and the text beside it carry your name.

The Question to Ask Before Anything Goes to Print

Static versus dynamic looks like a technical choice and is really one question: will you ever need to change this, or know how it performed? If the answer to either half is yes - and for almost anything printed in quantity, it is - the code should contain a short link.

Static encodes the destination

Permanent, blind, and dependent on nothing. Right for things that genuinely never change, and for content that is not a URL.

Dynamic encodes a short link

Editable, measurable, and physically easier to scan because the encoded text is shorter. Costs you a dependency on the link platform.

The dependency is the honest cost. What it buys you is that a mistake on a print run takes two minutes to fix instead of a reprint, and that your print campaigns stop being the one channel you cannot measure. If you are putting a code on something this month, SkyShare is free to start.

Frequently Asked Questions

What is the difference between a static and dynamic QR code?

A static QR code encodes your destination URL directly into the pattern, so it can never be changed or tracked. A dynamic QR code encodes a short link instead, and the redirect behind that link is what you control - which means the destination can be edited after printing and every scan is recorded.

Can you change where a QR code points after printing it?

Only if it is dynamic. The printed pattern itself is permanent in both cases, because the squares are the data. With a dynamic code the pattern encodes a short link, so changing where that link redirects changes where every printed code leads, without reprinting anything.

Can static QR codes be tracked?

No. A static code sends the phone directly from the printed page to your website, so no system in between ever sees the scan. You may notice more traffic to the destination page, but you cannot separate scans from other visits or tell which placement produced them.

Do QR codes expire?

The pattern does not - it is printed text and will decode forever. What can stop working is whatever it points at. A static code breaks if its destination page is removed; a dynamic code breaks if the link is deleted or the service stops resolving it, but it can also be repointed to keep it alive, or given a deliberate expiry date with a fallback page.

Why won't my QR code scan?

The usual causes are printing it too small, cropping the quiet zone margin around it, inverting the colours, or using glossy stock that creates glare. Density is another factor: encoding a long URL produces smaller modules that scan poorly at distance or once the print is damaged.

What size should a QR code be printed?

At least 2 × 2 cm for scanning at arm's length. Beyond that, a common rule of thumb is roughly one-tenth of the intended scanning distance, so a code meant to be scanned from two metres should be around 20 cm across. Encoding a shorter link lets you print smaller while staying readable.

Can I put a logo in the middle of a QR code?

Yes, but the logo works by covering modules and relying on error correction to recover the missing data. That uses up the same margin that would otherwise protect the code against smudges and folds, so raise the error correction level when you add a logo, keep the logo small, and test the printed result rather than the on-screen preview.

Found this helpful?