ToolSura
    ToolSura
    HomeTools
    Blog
    ToolSuraPrivacy-First Tools

    Free utilities that run in your browser. No trackers, no accounts, no uploads.

    All Systems Operational

    Product

    • Free Online Tools
    • Contact
    • FAQs
    • About

    Legal

    • Privacy Policy
    • Cookie Policy
    • Terms & Conditions

    Resources

    • Blog
    • Brand
    • Help

    Social Links

    • Bluesky
    • Mastodon
    • X
    • Product Hunt
    • GitHub
    • LinkedIn
    • DEV.to
    • YouTube

    © 2026 ToolSura. Free tools that run in your browser.

    Remote-First / Based in India

    Technical Manifesto

    Private • Client-Side • No Uploads

    ToolSura on Nick Launches
    Browser-Native
    Privacy-First
    Skip to main content
    Toolsura
    web-development
    A
    Abhay Khant

    Why some QR codes expire and others keep working forever

    August 21, 2026 · 6 min read

    Do QR codes expire? The pattern never does: how static links rot, dynamic services die, and measured error-correction tradeoffs decide real-world lifespan.

    Static and dynamic QR codes compared on link rot, service shutdowns, and real lifespan
    Static and dynamic QR codes compared on link rot, service shutdowns, and real lifespan

    By ToolSura DevTools Team, Senior Engineers · View profile

    Key takeaways
    • The QR pattern itself never expires; it is ink encoding data, nothing more
    • Static codes die when their destination link dies; dynamic codes die with their provider
    • Error correction resists damage, not time: we measured its density cost across levels
    • Printing redirects on your own domain is the durability fix

    The short answer

    QR codes do not expire. A QR code is a two-dimensional barcode pattern defined by Denso Wave, the company that invented it, and the pattern simply encodes whatever data went in: a URL, plain text, or somebody's Wi-Fi credentials. Pixels and printed dots carry no clock. How those dots encode data is the companion piece on how QR codes work. A code printed correctly today will scan identically decades from now, assuming the paper survives and a reader exists to decode it.

    What does expire is the destination. When someone reports a dead QR code, the pattern still decodes perfectly; what broke is the link behind it or the service that promised to keep redirecting it. Understanding that separation turns vague expiration anxiety into concrete engineering choices.

    Static versus dynamic: where lifetimes actually live

    The two kinds of QR codes and how they fail
    PropertyStatic codeDynamic code
    Data encodedFinal URL directlyShort redirect URL owned by a service
    Editable after printingNoYes, retarget at the provider
    Dies whenTarget domain or page disappearsProvider shuts down or subscription lapses
    Scan trackingNone built inTypically included
    Ongoing costZeroSubscription, usually annual

    Static codes fail only when their content fails: point one at your own domain and it lasts exactly as long as that domain. Dynamic codes trade dependency for flexibility, which is legitimate for campaigns but means every scan depends on a third party staying solvent. Generator startups fold; when one does, every printed poster pointing through its redirect dies with it, a failure mode invisible until scans stop. Denso's history timeline tracks how much churn the surrounding ecosystem has already absorbed.

    Error correction: damage resistance, not expiration

    A related confusion blames error correction for lifespan. Error correction lets codes survive partial destruction, dirt, tears, and low-quality prints, using Reed-Solomon redundancy; Thonky's QR tutorial explains the mechanics level by level. Four levels exist, and higher levels spend more of the symbol on redundancy (the same Reed-Solomon math at four strengths). To quantify the cost, we generated codes for the same 49-character URL at all four levels:

    Measured: identical payload, four correction levels (PNG sizes from Python's qrcode library)
    LevelVersionModulesPNG size
    L (recovers ~7%)329 × 29643 bytes
    M (~15%)433 × 33793 bytes
    Q (~25%)537 × 37972 bytes
    H (~30%)641 × 411,112 bytes

    Same text, denser symbol as protection rises. Choose H for codes facing weather and wear; L suffices for clean screens. None of these choices affects lifespan: a pristine level-L code outlives any campaign behind it, while a sandblasted level-H code still scans after its target site has moved on.

    Recovery percentages describe codewords, not visual impressions, so we tested what they mean physically. Using the same 49-character URL, we painted dark marks over randomly chosen data-area modules while leaving finder patterns untouched, then tried twenty randomized damage positions per cell, decoded with zbar through pyzbar on its open-source core.

    Measured: scans surviving darkened modules, 20 trials per cell
    Level8 modules16 modules24 modules32 modules
    L (~7%)20/2012/203/200/20
    M (~15%)20/2020/2017/2016/20
    Q (~25%)20/2020/2020/2020/20
    H (~30%)20/2020/2020/2020/20

    The collapse pattern is stark: level L failed completely once thirty-two modules went dark and was already flipping coins at sixteen, M wobbled past twenty-four, while Q never lost a single trial anywhere in the sweep. Part of that resilience is honest geometry rather than magic: higher levels draw bigger grids, 41 × 41 versus 29 × 29 for this payload, so identical absolute damage touches a smaller slice of the code. Modern phones scan through their camera pipelines and web apps gain the same trick via the Barcode Detection API, so anything surviving our zbar gauntlet survives typical readers too.

    Why printed codes actually stop working

    • Link rot: the encoded URL points to a page deleted in a redesign, the most common death of all by a comfortable margin
    • Domain lapse: the registered domain expired, taking every static code pointing into it
    • Dynamic provider shutdown: the redirect service folded or the free trial expired silently
    • App scheme changes: custom app:// deep links break when apps are rebuilt under new schemes
    • Physical decay: sun-faded ink and damaged modules exceed what correction can reconstruct

    Four of those five causes live on the destination side, which means nearly every dead-code incident was preventable at print time.

    Printing for durability

    • Encode URLs you control on domains you intend to keep, never raw third-party links
    • For editable targets, run your own short redirect path, such as toolsura.com/go/name, so retargeting never depends on an outside subscription
    • Pick correction level H for outdoor, industrial, or product-packaging duty
    • Log where every public code points; audits beat surprises, and the QR decoder reads any printed sample from a photo
    • Generating replacements stays instant with the QR code generator, which outputs any correction level directly
    • Batch-printing many destinations stays simple with the QR batch generator, which keeps every payload visible in one list

    The background reading for these decisions lives in the Wikipedia QR code article, whose history section documents how quickly formats and services have churned around the unchanging core standard, and Denso's technical overview remains the authoritative source on what the format itself guarantees, which is decoding fidelity rather than hosting.

    Ink does not expire; infrastructure does

    Do QR codes expire? The honest answer is that patterns cannot and links can. The format's own documentation guarantees decoding fidelity, not hosting, so treat every code as a promise about future infrastructure: static codes promise your domain stays alive, dynamic codes promise a vendor stays paid. Make the promise deliberately. Own your redirects for anything printed in permanent media rather than renting them from a subscription, match correction level to physical conditions, and the code will outlast everything around it except the scanner industry itself.

    Last updated: August 2026 | Published: August 2026 | About ToolSura · Contact

    A

    Written by

    Abhay Khant

    Abhay Khant is the founder of ToolSura, a privacy-first developer tools platform. Writes about client-side architecture, AI tooling, and the open web.

    Share

    Frequently Asked Questions

    PreviousHow Do QR Codes Work? From Text to Scannable PatternNextHow Many Words Should an Essay Be? Length Guide

    Comments

    Leave a Review

    Rate this tool
    Overall Rating
    Spam Protection Active