Compress Links For Optimal QR Codes

Link shorteners have been a staple of the online world for over two decades now, but they’ve got some issues– for one thing, it’s totally non-transparent where the link actually goes, leaving you open to all sorts of shenanigans, of which RickRolling is probably the best case. For two, your traffic is going through an external service who may have their own nefarious intent. [PortalRunner] had an idea: don’t shorten the link, but compress it.

You see, a traditional URL shortener like tinyurl just generates a random code and associates that with your original link in its database. That’s fine, but you’re relying on a third party database. The alternative is to take the URL, encode it in some way, and apply some compression algorithm to the data. If the encoding and compression are open-source– which [Portal ]’s absolutely are— then you can check yourself before following the link, and/or self-host the whole thing for piece of mind. As a bonus [Portal]’s Ha.mr– that’s pronounced Hammer– also gives you a QR code optimized for easy scanning. QR codes have a specific alphanumeric character set built in, and it isn’t the full UTF-8– if you naively use random text, you’re in byte mode, which needs a lot more QR real estate. Or inverting that, the fewer bits it has to store, the easier a qr code is to scan at the same size. The text version of the compressed links can use UTF-8– including emoticons– but they don’t have to.

The whole project has a “why isn’t everyone doing it this way” vibe about it. We’d probably want to self-host this if we were using it seriously– [Portal] put this together on a lark and makes no promises it will be online forever–but again, this is open source, so we can. [Portal] is using normal compression algorithms here, but if you really want to squeeze text, use a neural net. 

21 thoughts on “Compress Links For Optimal QR Codes

  1. Depending on how large the resulting decoder is, its proper location might be as part of the browser rather than as a hosted service. I could definitely see this as some kind of browser extension.

    1. If you’re only looking at the qr code, and not the data inside it, you’re right, but pretty much every qr code reader immediately show you the full data. Yes you have to point a camera at it, but you don’t have to click and follow it to find out where it goes.

  2. I never click those shortened links. They were a bad idea when invented, they’re an even worse idea now they’re in the wild. What is the overlap between people who click shortened links and people who get viruses? In a venn diagram, I expect it looks like a single circle.

    1. Which is worse, link shorteners, or email clients that refuse to show you the sender’s actual address and only give you the ‘friendly name’ instead?

      To see an address instead of a user-chosen name in Thunderbird you have to install a third-party extension. And then, TB does not let you use the actual address in filters. You can only filter by ‘name’. I’m not a conspiracy theorist but… it’s so blatantly anti-user you have to wonder if they aren’t somehow in on all the phishing scams.

      Why does it seem like every change/’improvement’ results in less information? (see also: relative date/time instead of an actual date and actual time – why not both?) Is there a global pixel shortage or something?

      1. Ugh, Thunderbird has been going downhill for quite some time. When they stopped fixing bugs in preference of adding new features no one asked for, I stopped using it. Now I use Betterbird. It absolutely shows you the email address of everyone, even people saved to your contact list. If you right click on a name without the email address right next to it, it shows you the email address right at the top of the RMB menu. I highly recommend Betterbird to everyone who prefers Thunderbird to webmail or, heaven forbid, Outlook.

        1. I can’t see a single way that Thunderbird has gone downhill for me. I have been consistently using it for literally ever (easily 10+ years). My family uses it and I very seldom hear complaints which are usually “I have no effing clue what I am doing why doesn’t this work?” kind of questions. Thunderbird is the single most consistent, painless, useful Software I have. I don’t think it’s fair to shit on it.

          1. 10 years is pretty toddler when it comes to email clients in Netscape descendants. You should have been around the 3.04g times.
            (Not that I had an egg in this basket as I tend to always circle back to (Al)Pine, jussayin’).

  3. This doesn’t seem very effective at shortening.

    For example the URL of this hackaday page is only shortened by 25%. For example falstad circuitjs URLS are actually expanded when using this shortener.

    1. The most effective way for URL shortening is getting rid of that “speaking URL” crap. HTML has a “title” tag for that purpose.
      And to keep barcodes small, some RTFM helps a lot. It’s all written up in the GS-1 manual.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.