Zum hauptinhalt springen

The amazing tale of a test certificate and the Unix timestamp that traveled through time.

Now let’s move on to sports: the whole world is talking about the test certificates of a tennis player right now.

Novak Đoković is a serbian tennis player who recently entered Australia – without vaccination, but with two PCR test certificates. A positive test result from December 16th and a negative test result from December 22nd. He is therefore considered to be recovered.

With this he got a special permit to enter the country unvaccinated – but this permit was then considered insufficient when he entered the country. In the meantime, however, a court has allowed him to enter australia.

In cooperation with SPIEGEL, we took a look at the court documents and tried to understand the technical details. 🕵️

In serbia pcr test results are managed through a central test result registry. After the test, you get a test certificate with a QR code. Scanning this will take you to the test registry website where you can validate the test.

screenshot of a test certificate

However, the website itself contains only parts of the information of the paper certificate: The name of the person tested, the test result, and a test number.

So it is not possible to check when someone was tested with the help of the test result page.

screenshot of the test result website

Because we like to look at URLs, we did the same in this case. 🔎

There is one exciting detail that stands out right away: There is a code in the URL that starts with a Unix timestamp.

URL to the verification website of the December 22 test, with the timestamp section highlighted

Unix timestamps are a standard to represent points in time. It is the number of seconds since 1/1/1970 at midnight. So the current time is: 1641903476, which is about 1.6 billion seconds since the beginning of “unix time”.

The timestamp in the certificate URL (1640187792) can also be converted to a human-readable time. In the negative test of December 22nd the timestamp and the date in the test certificate match.

URL to the verification website of the December 22 test, with the timestamp section highlighted, as well as the human-readable representation: Wed, Dec 22 16:43:12 CET 2021

For Đokovićs positive PCR test, which according to the court document was evaluated on December 16, the timestamp (1640524880) is from … 🥁 … December 26. Wait, that doesn’t seem right 🤔

URL to the verification website of the December 16 test, with the timestamp section highlighted, as well as the readable representation: Sun, 26 Dec 2021 13:21:20 CET

There is also a “confirmation code” on the test result page. We were able to find some more tests and found that the first part of this code is an ascending test ID and corresponds approximately to the number of PCR tests reported for Serbia at that time.

But something is wrong with Đoković positive PCR test result: the test ID of the positive test (7371999) from Dec. 16 is larger than that of the negative test from Dec. 22 (7320919). The test that was supposedly performed earlier was therefore entered into the system later. 🤔

And also if we look at the test numbers reported by Serbia, in period from 16/12 to 22/12 about 75,000 tests were performed - but the test IDs of Đoković differ only by 50,000.

Table of the number of performed tests in serbia. Between the 16th of dec and the 22nd of dec there were 75816 performed tests

This number fits much better if we believe the timestamp and assume 12/26 as the date of the positive test: Because between 12/22 and 12/26 about 50,000 tests were reported – thus fitting many to the documents at hand.

Table of the performed tests in serbia between the 22nd of december and the 26 of december 2021. 51081 tests were performed in this time.

But there seems to be more wrong with these test results

And with that, we pass on to the weather. 🌤️


On HackerNews someone gave a plausible explanation for the timestamps: They are regenerated when you download the PDF with the result.

This explains the inconsistencies in the timestamps – but not in the confirmation codes – because they remain the same.


And the inconsistencies also exists in them. The confirmation codes are ascending, so the result from the 16th should have a lower number than the one from 22nd. However, it is the other way around.

If you like what we do and want to support us, you can check out our support page.

To stay up to date, follow us on Twitter or subscribe to our RSS feed