Static vs dynamic QR codes
SmartQRCode editorial · Updated October 2026
Static vs dynamic QR codes is a storage split. Static stores the payload in the modules. Dynamic stores a hosted URL the provider resolves. In SmartQRCode, Wi-Fi is static; website and landing-page types are hosted. Canva's built-in QR is usually static, which is the right tool for a one-off that will never be counted.
Static vs dynamic QR codes as a storage split, not a quality split
ISO/IEC 18004 does not rank the two. A valid static symbol and a valid hosted symbol both scan. The difference is operational. Static vs dynamic QR codes decides whether you can change the destination after ink, whether anyone can count scans, and whether the print depends on a company still answering HTTP.
Marketing pages say dynamic as if it were a grade of paper. It is not. It is a second hop after the camera decodes bytes. How QR codes work is that decode. This page is what the bytes meant. What a dynamic QR code is is the short definition. How to make a QR code is the procedure once you have picked.
A dynamic generator on this site is the hosted path. A Wi-Fi generator is the static path inside the same product. Mixing those vocabularies is how people expect analytics on a password.
Paid options are $1.99, $29, $97, and $197. There is no unpaid product tier. That does not make a Canva widget the wrong encoder for a one-off invite. It makes hosted the wrong purchase for that invite. Static vs dynamic QR codes is an operations choice you make before you pick a colour. If you already printed static and the URL moved, you reprint. If you already printed hosted and the URL moved, you retarget. Those two sentences are the whole job for most teams.
A second honest constraint: hosted codes last as long as the host resolves them. A pause, an unpaid invoice, or a shutdown can stop a physically perfect print. Keep that sentence next to the scan-totals sentence so the purchase is not a surprise. How to make a QR code is the procedure after this split. How QR codes work is the camera step that both encodings share.
If you need many unique destinations from a spreadsheet, that is a bulk hosted job, not 400 Canva widgets. If you need one password on a tent, that is Wi-Fi static. If you need a menu that reprices, that is a landing type. Static vs dynamic QR codes stops being abstract once you name the next action the phone should take. A scan of a password is a join. A scan of a menu is a page. A scan of a review is a hop. Write the action on the brief before you generate. Then pick static or hosted to match whether that action will still be true next month. Static vs dynamic QR codes on a job ticket can be one line: hop and retarget, or payload in the modules. Write that line before anyone opens Canva. A Canva widget is the static line. SmartQRCode website and landing types are the hop line. Wi-Fi is the password line and it is never the hop line. Static vs dynamic QR codes is those three lines on the ticket, not a quality contest. Pick the line that matches reprint cost and whether anyone will ask how the flyer did. Static vs dynamic QR codes is that ticket line, repeated until the print files match it. Write it once.
What static actually stores
A static symbol stores the payload in the modules. Changing the payload means printing a new symbol. That is why Wi-Fi cannot be edited after ink, and why a Canva widget whose URL rots cannot be healed from a dashboard. There is no scan counter because the payload never hit a server. Asking how the flyer did cannot be answered from the symbol.
Static is the form that survives a provider shutdown. The paper still holds the URL or the WIFI: string. That is the inconvenient honesty of hosted types: they are easier to run and they die when the host does. If the print must outlive every SaaS account, static is the encoding, and then you accept reprint and no totals.
A museum caption that must still open in twenty years is a static job, or a hosted job with an operations plan for the host. Static vs dynamic QR codes does not magic a third option. Paper plus a company is hosted. Paper alone is static. Pick.
UTM query strings on a long destination make a static symbol denser. Version grows. Modules shrink at the same millimetre size. Campaign parameters therefore belong on a hosted destination if you still want a coarse grid on a card.
What dynamic actually stores
A hosted or redirect symbol stores a URL the provider resolves. The printed modules stay the same while the destination changes. SmartQRCode website, WhatsApp, Google review, and location types redirect through a tracker. Landing-page types serve a page you can rewrite. Both classes are editable after print because the ink encodes a SmartQRCode URL, not the final page.
Scan totals over time, device type, and country exist on those types. Location is country-level from request headers, not a GPS trace. Analytics cannot see a name or email. Product launches use separate hosted codes per channel because two stylings of the same static URL cannot tell you which design was scanned.
The trade is hosted resolve trade as much as a feature list: editability against a host that must keep answering. A pause, an unpaid invoice, or a shutdown can stop a physically perfect print. Codes billed as never-expiring are still hosted; unlimited scans as a phrase does not remove that dependency.
Why Wi-Fi cannot be the dynamic option
The short answer to why wifi cannot be the dynamic option is a product rule: the wifi type writes the network into the modules. It is not editable after printing. It is not trackable. No scan analytics. That is the only static type in SmartQRCode. Putting a logo on it does not add a tracker. Encoding WIFI: in Canva is the same class. Treat placement like a password on a whiteboard. A phone already on the network will appear to succeed even when the payload is wrong; confirm with a device that is not on that network.
If you need a cafe URL you can retarget, that is a website type next to the Wi-Fi type, not a Wi-Fi type magically made dynamic. Pairing both on one tent mixes an editable payload with a static one. Reprint the Wi-Fi side when the passphrase rotates. Retarget the URL side in the dashboard. A logo on the Wi-Fi mark does not add a tracker. Confirm the password mark with a phone that is not already on that SSID. Static vs dynamic QR codes on one tent is two encodings, not one pretty square.
Why 302 keeps edits live and 301 would not
HTTP 301 on a redirect lets browsers and some apps cache the destination, so later edits never reach those scanners. 302 is the method that keeps edits live. Cite that when someone asks why a "permanent" redirect would be a product defect. Static vs dynamic QR codes is also a cache conversation. Static has no cache because there is no hop.
If you host elsewhere and issue 301s, you will reproduce the frozen-destination bug with perfect modules. The camera did its job. The web cache did not. Intermediate CDNs and in-app browsers can cache more aggressively than you tested on a fresh Chrome profile. Proof with a phone that has never opened the old destination. If that phone still opens the old page after you edit, you shipped a 301 somewhere, or the destination itself 301s. The modules are not the cache.
UTM strings densify static, not hosted ink
On a static file, campaign parameters live in the modules. On a hosted file, the printed density is the short URL; UTMs sit on the destination you can still edit. That is the density argument inside static vs dynamic QR codes, separate from the editability argument. A business card that must stay 2 cm cannot also encode a 200-character tracking URL as static bytes.
Shorten, host, or enlarge. Those are the three levers. Hosting is the lever that also gives totals. If you already printed static UTMs, those parameters are frozen in the ink. Adding a new campaign tag means a new file. That is the operational cost people skip when they paste a full Google Analytics URL into Canva. A 2 cm card with a 200-character static string is a density fail before it is a marketing fail. Host the card. Keep the UTMs behind the hop.
When a Canva widget wins the comparison
A one-off poster, a classroom reminder, a birthday invite, or a single flyer whose URL will never change and will never be counted is a static-generator job. Name Canva, Google Chart-style demo tools, or the iOS and Android camera-adjacent generators as a class. Using hosted for that job is wasted cost. Using static for a menu you reprice weekly is wasted reprint.
Static vs dynamic QR codes is a choice. The honest product sentence is: we sell hosted types and one static Wi-Fi type. We do not sell an unpaid tier. A free static generator remains the right encoder when F90 applies. ISO still governs both patterns. The camera does not award prizes. If you are printing a single classroom reminder that dies on Friday, open Canva. If you are printing a shopfront that will reprice, open SmartQRCode. That is the whole comparison for those two jobs.
Landing pages versus redirects inside the dynamic bucket
Not every hosted type is a 302 to a third-party URL. vCard, PDF, images, social, video, text, custom (beta), Facebook, app, menu, business, and event serve a landing page you can rewrite. Event is a calendar file, not a redirect. Website, WhatsApp, Google review, and location hop through the tracker. Static vs dynamic QR codes, in this product, therefore has three buckets: static Wi-Fi, redirect, landing. Marketing that says only static versus dynamic flattens the landing bucket into a redirect. Do not flatten it. A menu page is not a 302 to your old PDF.
Scan totals still exist on landing and redirect. They still do not exist on Wi-Fi. What is a dynamic QR code uses dynamic as the hosted umbrella. This pillar keeps the three buckets visible so you do not expect a 302 log on a vCard save. Custom is labelled beta. Event downloads an ICS; it is not a redirect to a ticket site unless you used the website type instead. Pick the bucket that matches the scanner's next action.
Sticker-over attacks and which encoding you can still steer
A malicious code pasted on top of a legitimate one is a physical-security problem. A hosted code whose destination you control can be pointed at a warning page. A static code under the sticker cannot. That is not a reason to host a birthday invite. It is a reason to host a shopfront URL you might have to pull. The symbol is not an identity check. The destination is. Walk the poster weekly if it sits on a street. A sticker-over on a Canva static widget is a reprint plus a conversation with whoever owns the wall. Hosted shopfronts can swap the destination to a warning page the same afternoon. That is the security argument for hosting a URL you might have to pull, not for hosting a birthday. The square is not an identity check in either encoding. A static file under the sticker stays malicious until someone scrapes it off. That extra sentence is why shopfronts host.
Pause, archive, and a print that looks perfect
Paused hosted codes stop resolving. Archived codes keep scanning. If a poster died on Tuesday, ask which state you set before you reprint. Static vs dynamic QR codes does not include a pause state for Canva widgets; those files have no server to pause. They also have no server to forgive you.
A 302 hop still needs DNS and the host. Airplane mode will decode a static URL and then fail to open it. That is not a broken symbol. Decode is local. The hop is not. A venue with captive Wi-Fi can also block the host; the modules still look perfect. Test on the venue network before you print 500 boards. If you paused by mistake, unpause and test-scan. If you archived, the hops should still run. Mixing those two states in a post-mortem is how teams reprint a working code. Static vs dynamic QR codes includes those states only on the hosted side.
Density, cards, and which lever to pull first
A 2 cm card has little room for version growth. If the static URL is long, you can shorten, enlarge the card, or host. Hosting is the lever that also gives totals and retarget. Enlarging is the lever that also helps distance. Shortening is free when the extra characters were vanity UTMs. Pull shortening first on static. Pull hosting first when the URL will move.
Data capacity is the ceiling. Error correction spends some of that ceiling on damage. Static vs dynamic QR codes decides whether campaign parameters live in the ceiling or behind the hop. A card that already has foil and a round corner has even less room; quiet zone and finders come before extra bytes. If the card cannot fit 2 cm plus gutter plus crest, the code does not belong on that card. Put it on the letter. Static vs dynamic QR codes will not shrink physics. Hosting keeps the grid coarser; it does not invent millimetres.
Counting scans versus counting people
Scan totals measure scans, not people. The same person scanning twice is two scans on most public counters. Static vs dynamic QR codes is also a measurement split: static has no counter. Asking how the flyer did from a Canva widget cannot be answered from the symbol. Country and device, when they exist, come from headers and UA strings, not from a GPS chip in the code. Do not promise named attendance.
Print-run A/B tests need different hosted destinations, not two colours of the same static URL. UTMs on a hosted destination can feed the same analytics property as other campaigns. UTMs encoded into a static symbol cannot be changed after print. If the campaign is a product launch, mint one hosted code per channel. If the campaign is a birthday, skip the counter. Static vs dynamic QR codes is that operational fork, not a moral grade of square.
A provider shutdown still zeros the hosted counter and the hop. Keep a static fallback only if the paper must work with no vendor. Most shopfronts should host and accept the dependency. Most party invites should not.
Questions this raises
The payload in the modules. A new destination means a new print. There is no scan counter because nothing hit a server.
A URL the provider resolves. SmartQRCode hosted types encode a short address on smart-qrcode.com. You change the destination; the ink stays.
The wifi type writes the network into the modules. It is not editable after printing and not trackable. Reprint when the passphrase rotates.
A one-off poster or invite that will never be counted or retargeted. Static vs dynamic QR codes is not a contest you must enter. Static is enough.
Yes. Query parameters live in the modules on a static file, so version grows. On a hosted type the printed density is the short URL; UTMs sit on the destination.
A 301 lets browsers and some apps cache the first destination. Later dashboard edits never reach those scanners. This product uses 302.
Keep going
The tools and playbooks this post refers to, one click away.
Make the code this post is about
$1.99 for 7 days, then a paid plan. Pick a type, brand it, and edit the destination whenever you like, even after it is printed.