Speed · QR ordering

What a guest’s phone pays to see your menu

We measured our own guest ordering page on production rather than guessing: about 239 KB over 30 requests, and every scan pays it. Here is the number and what we have and have not done about it.


A guest scans the code on your counter. Between that scan and a menu they can read, their phone has to fetch the page and everything the page needs. We had never written down how much that is, so we measured it against the live site rather than estimating from the source.

The page itself is about 92 KB on the wire — compressed; uncompressed it is over 300 KB — and it pulls a further 147 KB across 29 files. Call it 239 KB over 30 requests.

Why the wire number is the one that counts

It is easy to quote the wrong figure here, and we nearly did. A first probe asked the server for a gzip-compressed copy, got a number that looked like the raw size, and the obvious conclusion was that the page was being sent uncompressed. It is not. The server was using brotli, which that probe had not asked for. Checking the response header took ten seconds and stopped a wrong fact being written down as a finding.

If you are ever comparing suppliers on page weight, ask what the number is: uncompressed source, compressed transfer, or transfer plus everything the page then requests. They can differ by a factor of three.

What we have done about it: measured it

That is the honest state. We have not slimmed the guest page, and we are not going to pretend the measurement is the same as a fix. There are two candidate changes — letting a returning phone re-use what it already has instead of downloading the page again, and cutting what the page loads before it can paint anything — and both are real pieces of work with trade-offs, sitting on a decision list rather than in a release.

What the measurement does buy is an end to arguing from impressions. The next time somebody says the menu feels slow on a busy night, there is a number to compare against, and a split that says whether the complaint is about the download or about the screen.

The test you can run at your own counter

Put your phone in aeroplane mode, turn it back on, and scan your own code standing where a guest stands — on the venue wifi if that is what they will use, not on your office connection. That is the load your menu actually gets. Doing it on a laptop two metres from the router measures something nobody experiences.


Try it on tonight’s service.

Nothing to install, no card. Not better by the weekend? Close the tab.