Hacker News new | ask | show | jobs
by connorproctor 1683 days ago
QR codes are big ugly squares, so I can understand why some popular apps decide to roll their own.

But it certainly makes them way less convenient and universal. Can’t just open your camera app.

It took me maybe 45 seconds just now to find the scanning feature in Spotify, in a real world situation I probably would have given up and just used search after about 10 seconds.

2 comments

The do have to be big, they do have to be squares (in terms of general shape), but ugly? Actually no! Check this out: https://qr-code-styling.com/

I've used this for a project where we wanted QR codes that fit a particular color theme. As long as you maintain a certain amount of contrast between the code and the background (and test your work, this is very much "you break it you fix it" territory) you can have rounded dots, rounded corner dots, colors (even gradients!) and an arbitrary image in the center.

Again, you need to try out this library with whatever design you're intending, and if you push some of the parameters too far you'll lose certain QR scanners, but the spec is way more flexible than most people know.

Beauty is subjective, of course, but for me at least, these stylized QRs don't look _much_ better than regular ones. And may make it harder for recognition too, for customers used to the big ugly squares-on-squares format
> And may make it harder for recognition too

Compared to a standard QR code sure, but I've seen these Spotify codes plenty of times and just thought they were decoration until this link.

I had no idea how far you could push a QR code. Like, you could make the corner markers round, and it still scans just fine.
I wish QR codes were just 3-point simplices with barycentric triangle pixels. That ought to be enough. You could even shape the QR triangle any way (affine transform) you like, at the risk of readability of course.
Moreover, QR Codes can convey full URLs and text payloads, whereas proprietary app codes (Spotify / Snapchat / Facebook Messenger (retired?) / etc.) can only hold maybe 100 bits, which is only enough to have a unique ID that you must query the server to be useful in any way.