Investigation
The QR Code Shakedown
How "free" QR code generators extract hundreds of dollars a year for something that costs a fraction of a penny.
Imagine this: you've spent weeks planning your wedding. The invitations are gorgeous — letterpress on heavy cotton stock, with a custom QR code linking guests to your RSVP page. Two hundred invitations, already stamped and mailed to every friend and family member on the list.
Three weeks later, your aunt calls. "Honey, the little square thing on your invitation doesn't work." You pull out your phone and scan it yourself. Instead of your RSVP page, you get a screen telling you your "free trial has expired." To reactivate your QR code — the one already printed on two hundred invitations sitting on two hundred kitchen counters — you need to subscribe. Plans start around $5 a month, billed annually. That's $60 or more per year for a QR code that took a computer less than a millisecond to generate.
You have two options: pay the ransom, or reprint everything.
This isn't a bug. It's the business model.
Why did my QR code stop working?
To understand the trap, you need to understand what a QR code actually is. A QR code is a picture that encodes text. That's it. The black-and-white pixel pattern is a visual representation of data — usually a URL — following an international standard called ISO/IEC 18004. Your phone's camera reads the pixels, decodes the text, and opens the link.
There are two fundamentally different types of QR codes, and the distinction between them is the entire basis of the subscription trap.
Static QR codes
A static QR code encodes your URL directly into the pixel pattern. When someone scans it, their phone reads the pixels and goes straight to your website. There is no middleman, no server involved, no company that can flip a switch. The data is the code. A static QR code works the same way today, next year, and fifty years from now — as long as the destination URL exists. Generating one takes three lines of JavaScript and about one millisecond of computation. It is, in every practical sense, free.
Dynamic QR codes
A dynamic QR code does something different. Instead of encoding your URL, it encodes the
QR company's URL — something like qr-company.com/redirect/abc123.
When someone scans the code, their phone goes to the company's server first, and the server
redirects them to your actual destination. This means the company controls whether your code
works. If they turn off the redirect — because your trial expired, because you cancelled,
because they went out of business — your QR code is dead. The printed pixels haven't changed,
but the link behind them has been severed.
Dynamic codes have a legitimate use case: if you need to change where a QR code points after printing, a redirect lets you update the destination without reprinting. Event organizers, for instance, might update a schedule link after printing programs.
The deception
Here's what makes this predatory: every major "free" QR code generator defaults to dynamic codes without explaining what that means. They don't tell you that a static code would serve you permanently for free. They don't explain that by choosing dynamic, you're handing them a kill switch for your QR code. The interface simply creates a dynamic code, starts a 14-day trial timer, and waits for you to print it on something permanent. Most people searching for "free QR code generator" have a URL that will never change. They need a static code. They get a dynamic one — and a subscription invoice two weeks later.
How much do QR code generators actually charge?
The scale of the problem becomes clear when you look at the review data. These are not isolated complaints. This is a pattern operating at industrial scale.
QR Code Generator Pro
QR Code Generator Pro, one of the largest players in the space, has accumulated over 9,000 reviews on Trustpilot with an average rating of 1.5 out of 5 stars. On Sitejabber, they hold 350+ reviews at 1.2 out of 5. The complaints follow a strikingly consistent pattern: user creates a "free" QR code, prints it on physical materials, discovers within 14 days that the code has been deactivated, and is presented with a paid subscription. Plans range from around $5 to $38 per month, billed annually — meaning users face charges of $60 to over $450 per year.
The trial period is not accidental. Fourteen days is long enough for most people to design their materials, approve the print run, and distribute. By the time the code stops working, it's already on wedding invitations, business cards, restaurant tables, and event flyers. The switching cost isn't the subscription — it's the cost of reprinting everything.
The broader pattern
QR Code Generator Pro isn't alone. QRCodeCreator has over 4,000 Trustpilot reviews — and while its overall rating is better, it still draws complaints about the same trial-expiry pattern. QR.io's Product Hunt page is dominated by reports of unexpected charges. QRfy follows the same trial-to-subscription model. The playbook is the same everywhere: offer a "free" tool, default to dynamic codes, start a trial timer, wait for the user to print, then charge.
The markup math
QR Code Generator Pro's top-tier plan costs roughly $38/month, which includes up to 250 dynamic QR codes.
That works out to about $0.15 per QR code per month.
The raw compute cost to generate a QR code is roughly $0.00001 — a hundred-thousandth of a penny.
That's a markup of roughly 1,500,000%.
To be clear, companies are entitled to charge for services. Hosting, bandwidth, analytics, and customer support cost money — the raw compute comparison doesn't capture all of that. But even accounting for infrastructure overhead, the gap between cost and price is enormous, and the thousands of 1-star reviews suggest the value proposition isn't computing power or customer service. It's leverage over people who already printed something.
Who gets hurt
Behind the review scores are real people who got caught in a trap they didn't know existed. The common thread is physical printing — once a QR code is on a tangible object, you can't change it. You can only pay or reprint.
Wedding couples put QR codes on invitations, save-the-dates, programs, and table cards. A wedding invitation gets printed once, mailed once, and can't be recalled. When the code dies, the couple either pays the subscription or asks two hundred guests to manually type a URL.
Small restaurants print QR menus on table tents, counter cards, and takeout bags. Replacing them means a new print run and the staff time to swap every table in the restaurant.
Small businesses put QR codes on business cards, product packaging, trade show banners, and storefront signage. A box of 500 business cards costs $30 to print. The subscription to keep the QR code alive costs $60 or more a year.
Nonprofits add QR codes to fundraiser materials, event programs, and donation posters — often printed by volunteers with razor-thin budgets.
Teachers use QR codes on classroom worksheets, assignment handouts, and resource guides. When the code stops working mid-semester, thirty students lose access to their materials.
Why this keeps working
Three structural forces keep the subscription trap profitable.
SEO dominance. These companies spend heavily on search ads and have years of domain authority. When you search "free QR code generator," nearly every top result is a subscription trap wearing the word "free" as a mask. The genuinely free alternatives are buried.
Technical opacity. Most people don't know that a QR code is just encoded text. The difference between static and dynamic codes is invisible unless someone explains it — and the companies creating dynamic codes have no incentive to explain. This isn't a failure of intelligence; it's specialized knowledge that most people have no reason to possess.
Printing creates lock-in. This is the most important one. The 14-day trial is calibrated to outlast the printing timeline. By day 14, the code is on physical materials. The company knows that once you've printed, the cost of switching isn't the subscription fee — it's the cost of reprinting your entire run of invitations, menus, business cards, or signage. That asymmetry is the engine of the business model.
The free alternative
We built nah because the alternative shouldn't cost hundreds of dollars a year.
nah is a free, open-source QR code generator. It supports every feature the paid tools charge for: custom colors, dot styles, logo embedding, gradients, SVG and high-resolution PNG export, WiFi codes, vCard codes, and batch generation. There is no signup, no trial, no account, no expiration, and no catch.
Static QR codes are generated entirely in your browser. Your data never touches our servers. There's nothing to expire because there's no server involved — the code is computed on your device, and the result belongs to you.
We also offer dynamic QR codes for cases where you genuinely need to change a destination after printing. These run through a lightweight redirect service on Cloudflare Workers. The total infrastructure cost is $5 per month for up to 10 million redirects. We don't charge for this because, at that price point, there's nothing meaningful to charge for.
There are no ads, no tracking cookies, no email collection, and no analytics beyond basic redirect counts for dynamic codes. The source code is public on GitHub. You can read every line, verify every claim, and self-host the entire thing if you want to.
We didn't build this to compete with enterprise QR platforms. We built it because 90% of people who search for "free QR code generator" need a static code that never expires. That's a solved problem. It shouldn't cost money.
How do I make a QR code that never expires?
Whether you use our tool or someone else's, here's how to protect yourself.
- Always create static codes for permanent materials. If the QR code is going on a business card, a sign, a menu, an invitation, or anything else that gets printed — use a static code. Static codes encode your URL directly and cannot be deactivated by anyone.
- Only use dynamic codes when you genuinely need to change the destination later. Event-specific campaigns, A/B testing URLs, temporary promotions — these are valid use cases for dynamic codes. Your restaurant menu URL that won't change? Static.
- If you already have a dynamic code from a paid service, check whether you can replace it with a static code that encodes the same URL. If the destination won't change, you don't need dynamic.
- Read the fine print before creating any QR code. If a "free" tool asks for your credit card, it's a trial, not a free tool. If it requires an account to download your code, ask yourself why.
- If you've already been charged unexpectedly, dispute the charge with your bank or credit card company. Many users report success with chargebacks for services they didn't knowingly consent to. Document the misleading marketing and the lack of clear trial disclosure.
The QR code industry is one example of a broader pattern in software: wrapping trivial computation in subscriptions propped up by dark patterns. A QR code is encoded text. Generating one is a solved problem that takes less than a millisecond. There's no ongoing service, no complex infrastructure, no reason for a recurring charge — unless the business model depends on manufacturing one.
We're building nah as a set of free browser-based utilities that replace this kind of predatory software, starting with QR codes. The code is open. The tools are free. And if you find them useful, the best thing you can do is share them with someone who needs a QR code and doesn't know about the trap.
Your QR codes belong to you. They always did.
Ready to skip the trap?
Create a free QR code