{"id":1027,"date":"2026-10-23T17:33:44","date_gmt":"2026-10-23T17:33:44","guid":{"rendered":"http:\/\/jfdi-blog-why-qr-code-stopped-working"},"modified":"2026-10-24T13:42:38","modified_gmt":"2026-10-24T13:42:38","slug":"why-qr-code-stopped-working","status":"publish","type":"post","link":"https:\/\/jfdi.pro\/blog\/why-qr-code-stopped-working\/","title":{"rendered":"Why your free QR code stopped working, and how to make one that won&#8217;t"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">If a QR code that used to work now shows an error, an advert or a &#8220;subscription expired&#8221; page, it&#8217;s almost certainly a <strong>dynamic<\/strong> code. Dynamic codes don&#8217;t contain your link: they contain a short link to the QR company&#8217;s server, which forwards people to you, for as long as the company keeps doing it. A <strong>static<\/strong> code contains your link itself and keeps working forever. The <a href=\"https:\/\/jfdi.pro\/qr\/\">JFDI QR code maker<\/a> only makes static codes.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/jfdi.pro\/qr\/\">Make a QR code that never expires<\/a><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Static and dynamic codes<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th>Static code<\/th><th>Dynamic code<\/th><\/tr><\/thead><tbody><tr><td>What&#8217;s inside the code<\/td><td>Your actual link, Wi-Fi details or text<\/td><td>A short link to the QR company&#8217;s server<\/td><\/tr><tr><td>Works if the company closes or you stop paying<\/td><td>Yes, forever<\/td><td>No<\/td><\/tr><tr><td>Can be tracked (how many scans, where, when)<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Can show adverts or a landing page first<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Can change the destination after printing<\/td><td>No<\/td><td>Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dynamic codes are a real product with real uses, such as campaign tracking. The problem is that many sites offering &#8220;free QR codes&#8221; make dynamic ones by default, without making the catch clear.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What QR companies say themselves<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You don&#8217;t have to take our word for it. One vendor, Uniqode, writes that dynamic codes &#8220;can expire when a subscription lapses, a monthly scan limit is reached&#8221;, and that free dynamic codes &#8220;expire when the free trial ends or when a monthly scan limit is reached&#8221; (<a href=\"https:\/\/www.uniqode.com\/blog\/qr-code-basics\/qr-codes-expiry\">Uniqode<\/a>). Another, QRStuff, says that when a paid subscription expires, &#8220;a 50 scans\/month limit is automatically applied to each code&#8221; (<a href=\"https:\/\/www.qrstuff.com\/feeds\/blog\/dynamic-qr-codes-no-longer-scannable\">QRStuff<\/a>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The printed code looks exactly the same either way. You only find out when a customer tells you the code on your menu, poster or packaging doesn&#8217;t work.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to tell which kind you have<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Point your phone&#8217;s camera at the code and look at the link it shows before you open it:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Your own website&#8217;s address<\/strong>, such as <code>yourcafe.co.uk\/menu<\/code>: it&#8217;s static. It will work as long as that page exists.<\/li>\n\n\n\n<li><strong>Someone else&#8217;s short address<\/strong>, often a QR company&#8217;s domain or an unfamiliar short link: it&#8217;s dynamic, and it depends on that company.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">How to fix a dead code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can&#8217;t revive a dynamic code without paying the company that controls its redirect. Your options:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Pay to reactivate it<\/strong>, if reprinting would cost more.<\/li>\n\n\n\n<li><strong>Replace it<\/strong> with a static code pointing straight at your page, and reprint.<\/li>\n\n\n\n<li><strong>Cover it<\/strong> with a sticker of a new static code, as a quick fix for menus and posters.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Making a code that won&#8217;t expire<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Open the <a href=\"https:\/\/jfdi.pro\/qr\/\">QR code maker<\/a><\/strong> and choose what the code opens: a link, Wi-Fi, a contact card, an email, a phone call or a text message.<\/li>\n\n\n\n<li><strong>Enter the details.<\/strong> The code updates as you type.<\/li>\n\n\n\n<li><strong>Style it<\/strong> if you like, with colours, rounded dots and a logo. The notes under the preview warn you about anything that could stop it scanning.<\/li>\n\n\n\n<li><strong>Download<\/strong> a PNG, SVG or PDF. Use SVG or PDF for print.<\/li>\n\n\n\n<li><strong>Test it<\/strong> with two or three phones before you print lots.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">There&#8217;s no sign-up, no watermark and no limit, and the codes are yours to use commercially. Because the code holds only what you typed, nobody, including us, can see when or where it&#8217;s scanned.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The one thing to plan for<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A static code can&#8217;t be changed after it&#8217;s printed. If the destination might change, such as a menu, a price list or an event page, point the code at a page on <strong>your own website<\/strong> that you can update, such as <code>yourcafe.co.uk\/menu<\/code>, rather than at a PDF file whose address may change. You get the flexibility of a dynamic code without depending on anyone else.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Related<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/jfdi.pro\/blog\/qr-code-for-menu\/\">How to make a QR code for a menu or table<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/jfdi.pro\/blog\/wifi-qr-code\/\">How to make a Wi-Fi QR code<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/jfdi.pro\/blog\/qr-code-minimum-size\/\">How small can a QR code be printed?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/jfdi.pro\/help-qr.html\">The QR code maker guide: codes that never expire<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Many &#8220;free&#8221; QR code generators make codes that route through their own servers, and switch them off when a trial ends. Here&#8217;s how to tell which kind you have, and how to make a code that works forever.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[68,70,69],"class_list":["post-1027","post","type-post","status-publish","format-standard","hentry","category-qr-codes","tag-qr-codes","tag-small-business","tag-static-vs-dynamic"],"_links":{"self":[{"href":"https:\/\/jfdi.pro\/blog\/wp-json\/wp\/v2\/posts\/1027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jfdi.pro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jfdi.pro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jfdi.pro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jfdi.pro\/blog\/wp-json\/wp\/v2\/comments?post=1027"}],"version-history":[{"count":2,"href":"https:\/\/jfdi.pro\/blog\/wp-json\/wp\/v2\/posts\/1027\/revisions"}],"predecessor-version":[{"id":1081,"href":"https:\/\/jfdi.pro\/blog\/wp-json\/wp\/v2\/posts\/1027\/revisions\/1081"}],"wp:attachment":[{"href":"https:\/\/jfdi.pro\/blog\/wp-json\/wp\/v2\/media?parent=1027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jfdi.pro\/blog\/wp-json\/wp\/v2\/categories?post=1027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jfdi.pro\/blog\/wp-json\/wp\/v2\/tags?post=1027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}