A paper shredder in the process of shredding a QR code.

You (Probably) Shouldn't Pay For QR Codes

A "dynamic QR code" is just a link shortener with extra steps.

Henry Wilkinson

Over the past year, I’ve born witness to a few of my less-computery friends getting duped by a nasty deceptive pattern. The scheme works as follows:

  1. A designer needs to add a QR code to some work, but they don’t know how to make one!
  2. They Google “QR code generator” and are fed a bunch of websites that appear to solve their problem.
  3. These websites offer free trials of “dynamic QR codes”, the user signs up for the site, creates a QR code, and gets it printed.
  4. The free trial runs out! Their “dynamic QR code” has already gone to print and won’t work unless they pay for the site’s monthly subscription to make their links work again.

Unscrupulous business practices can either be curbed with legislation or consumer education, I’m not a government official so I’ll have to settle for the latter!

A Brief Intro to QR Codes

This video from YouTube creator Veritasium offers a great intro to the technical details of QR codes. TL;DW it’s just a bunch of squares a computer can decode into text! QR codes themselves aren’t “dynamic” and have no server-side requirements. All the decoding is done on the user’s device. When a website references a “dynamic QR code” what they are really talking about is a link shortener that redirects users to your desired link, usually tracking the number of visitors to the shortened link for analytics purposes.

If you’re looking for an in-depth text explanation, the QR Code Wikipedia page probably has all the details you’d ever want. If you’re looking for more than that, well, you probably know more about QR codes than I do. What are you even reading this for? Go decode some dots with your mind, magic man.

The Gambit

On a new private browsing tab with uBlock Origin disabled, I searched for “QR code generator” on Google and landed on qr.io, the top sponsored result. The landing page helpfully delivers the user right into the editor where they can configure various aspects of the code’s look. If you scan the code, it decodes into exactly what is entered into the form, in this case: https://wilkinson.graphics1

The “Download QR code” button doesn’t do what it says… It asks you to enter your email instead! Of course I’ve already invested some time getting this code to look like I want, it’s got a branded orange border and everything! I’m happy with it so sure, if my email is what it takes, I’ll hand it over. Gimmie my code!

After forking over my contact info, I was presented with real download links — and they support all the filetypes you’d ever need!

…But wait, the downloaded QR code does NOT link directly to my site! Instead, it decodes to https://qr.link/h1WamE, a shortened link that (unless I continue pay for the service after my trial is up) will cease to function after 7 days. The price to keep your link functional after the trial period is $35 USD/month. Nowhere is the user informed that the code will stop working, heck qr.io’s homepage doesn’t even mention that their service costs money!

The dashboard does have a prompt asking users to review the service on their Trustpilot page. As of posting they have an average score of 4.4/5 with over 10,000 reviews, 81% of which are 5 stars and 11% of which are 1 star.2 Despite the deluge of 5 star one sentence reviews, it didn’t take me long to land upon a designer from New Zealand who had fallen into the exact deceptive pattern above.

Joshua's review: Scummy practise - wording is misleading stating that 'static' QR codes never expire. What they don't tell you: your QR codes you generate are by default their 'dynamic' code with no option to switch to static or create as static from the start. You cannot use this service without paying. Free to use for seven days isn't explicitly stated and I bet many have fallen for this. Imagine printing what you think is a functional QR code and then only realising afterwords that it doesn't work on 500 flyers a week later (for example, luckily I caught this before it happened to me). Once your trial ends, bam, QR code stops functioning unless your fork over money. Would be a great paid service but don't weasel word your way into getting people on board, slimy practise. A company rep responds noting that they've read Joshua's review and asks him to contact them via email to get things sorted out.
Oh, good! They're aware of the issue. 🙃

Other negative reviews allege their subscription is particularly difficult to cancel. Some users have reported being “locked out of their accounts” unable to change their billing settings while continuing to be charged.

I reached out to qr.io for comment but I have not received a response.

How SHOULD I Make QR Codes?

I’ve used qr.io as an example here but they’re far from the only ones running this playbook. Be wary of any site that lets you create codes for “free” and asks for your email.

If you know you need the analytics and tracking afforded by a link shortener service that generates QR codes, you’re already doing great! No complaints from me, consider your choices validated.

For the rest of everyone else, there are plenty of good, actually free QR code generators that will encode exactly what you give them. Here’s a few choice options:

  • The Affinity Suite has a QR code shape tool! You don’t even need to leave the program to use it.
  • Canva has an official QR code creator app. It’s rather basic, but it works for links.
    • Canva also has loads of 3rd party QR code generator apps, some of which are likely good and others that try to pull a fast one on you.
  • Estee Tey’s Mini QR web app is a pretty great open source web-based option! It also has lots of fun styling settings.
    • A lot of other developers have made similar open source projects! There is no shortage of QR code generators that do exactly what they say available on GitHub.
  • QRBTF is an open source web app that transforms regular QR codes into scannable, full colour images using diffusion models. It’s not entirely free to use, and I have my gripes with diffusion models, but even I have to admit it’s a pretty cool use of them.

Footnotes

  1. And hey, fair enough, the form hasn’t been submitted yet so how could the site generate the shortened tracking link! That said, I still think this is a pretty dirty trick. The website is not serving users with the same QR code they saw in the preview! The only way for them to know something is up is to test it after downloading the code while paying real close attention to the redirect behaviour.

  2. Curiously, on Slashdot (another review site) qr.io’s rating sits at a near consistent one star. I wonder what could possibly account for this discrepancy in ratings between websites? 🤔