NHS Covid-19 App: Bizarrely big QR Codes

The whole point of QR Codes is that they should be easy to use but for many people in the UK trying to use the NHS Covid-19 app, the sheer size of some of the codes is an issue. This is because in order to scan the code you need to be a long way back simply in order to get the whole code in the camera’s field of view.

Big codes are great if you need to scan from a distance but most people are much more used to smaller QR Codes that easily fit in the field of view when your phone is quite close by.

A second oddity is the data volume. QR Codes can store over 4,000 characters but the more data stored, the more complex the code. The more complex the code, the less easy it is for a scanner to parse it quickly.

So what is all the data in the NHS Covid-19 app? That’s where things seem a bit odd.

The first 116 characters of all the codes I’ve scanned are the same. These 116 characters also always start with UKC19TRACING:.

I clearly don’t know the reason for designing the system this way but at first and second sights, it seems that a very significant part of the code is simply redundant. The whole code is 287 characters long so roughly 40% of it is a waste. This matters because encoding more data into a QR Code than you need makes the code more complicated and hence harder to scan and this goes back to the usability side of things again.

Here’s the data from one UK Tracing QR Code

UKC19TRACING:1:eyJhbGciOiJFUzI1NiIsImtpZCI6IllycWVMVHE4ei1vZkg1bnpsYVNHbllSZkI5YnU5eVBsV1lVXzJiNnFYT1EifQ.eyJpZCI6IlJQVzQzOUo1Iiwib3BuIjoiS25vd2xlcyBIb3VzZSBXYXRlcyBQvm9qZWN0IE9mZmljZSIsInZ0IjoiMDAwIiwicdMiOiJOVzEwM1VOIn0.z58BdRH1sP1YdSR8c07sY6A7eH8VDELweTNrAnenNNppJ6thpVtdcTT-QCKUYbLgZpjlbPb3yE8iqOsjZ_SNoA

When you bear in mind that just 6 alphanumeric characters is enough to uniquely define 2,176,782,336 different locations, 287 characters seems like overkill.*

* QR Codes do however use error correction processes which requires a degree of data redundancy but this typically only increases the amount of data by a small amount