The QR Code That Has To Work: Print Size, Quiet Zone and a Scan Test Before 300 Units
A table stand used to hold a promotion. Today, in most Malaysian outlets, it is mainly a delivery device for a square: order here, join the loyalty programme, leave a review, see the menu. The awkward truth about that square is that when it fails, nobody tells you. The diner does not complain that the code would not scan — they put the phone down and wave at a server. The stand looks perfect on every table and the campaign quietly does nothing.
Silent failure is why this deserves a specification of its own. This guide covers the printed size a code needs at real table distance, the margin that is part of the code whether your designer likes it or not, why contrast beats brand colour, why a glossy panel under a spotlight defeats a phone camera, what to do about a link that will change after the run is printed, and the nine-point scan test to run before approving 300 units.
The short version. Shorten the link, print the code bigger than feels necessary, keep the clear margin, make it matt, and test it on a cheap phone in the actual dining room with the actual lights on. Four of those five cost nothing.
Printed size: work backwards from the distance
The rule of thumb that circulates in the trade is that a code reads from about ten times its own width. It is a reasonable starting point and a dangerous stopping point, because it assumes a clean, well-lit, flat, matt code and a camera pointed straight at it. A diner is holding a phone at arm’s length, at an angle, in mixed lighting, sometimes one-handed.
What really governs it is not the width of the code but the size of one module — a single black or white cell, which the camera has to resolve individually. Here is the part that catches people out: the more data you encode, the more modules the code contains, so at a fixed printed size every extra character makes every module smaller.
| What you encode | Modules across, roughly | Effect on a table stand |
|---|---|---|
| A very short branded link | 21 to 25 | Big, chunky modules; scans fast even at an angle |
| A normal page URL | 29 to 33 | Workable, but the printed size has to grow with it |
| A URL with campaign tracking parameters | 37 and upwards | Dense grid, tiny modules, the usual cause of a slow or failed scan |
Two codes printed at the same size on the same card can therefore behave completely differently, and the one that fails is the one carrying the long tracking link. Shortening the link is the cheapest optical improvement available, because it makes every module physically larger without changing anything on the card.
A working floor for table stands. Treat 25 mm square as the absolute minimum for a short link on a table card, and design at 30 to 35 mm where the space allows. On a counter or an A4 stand read from a metre away, go larger again. Nobody has ever complained that a code was too easy to scan.
The quiet zone is part of the code
The QR specification requires a clear margin around the symbol — four modules wide on every side, with nothing in it. That is not decorative white space a designer can reclaim when the layout is tight; it is how the scanner finds the edges of the symbol.
On table stands it gets eaten in four predictable ways, and all four are avoidable at artwork stage:
- The code is placed hard against the edge of the card to save room, so the pocket lip covers one side and takes a finder pattern with it.
- A border or keyline is drawn round it for tidiness, sitting inside the quiet zone.
- It is dropped onto a photograph or a colour gradient, so the light modules are no longer uniformly light.
- Body copy is set right up against it — “Scan for menu” tucked neatly under the bottom row.
Keep the code on a plain, light, uninterrupted field with its full margin intact, and put the call to action outside that field. If the card is going to be redrawn monthly, lock the code and its clear area as a fixed block in the template, in the same way you would fix a logo — a discipline that belongs with the rest of the rules for reprinting inserts at the outlet.
Contrast beats brand colour, every time
A scanner looks for a strong difference between dark and light cells. Brand-coloured codes work only when the coloured modules stay genuinely dark against a genuinely light background. Three habits cause most colour failures:
- Inverting it. A light code on a dark panel looks striking and is read far less reliably than dark on light. On a stand where the whole face is a deep brand colour, put the code in a light patch rather than reversing it.
- Mid-tones. A mid-grey or a pastel brand shade is dark enough on screen and marginal in print, especially once the ink sits on a coated or laminated surface.
- Printing straight onto clear acrylic. With no white underprint, the light modules become whatever is behind the stand — a wooden table, a diner’s shirt, a moving background. Specify a white block behind the code, or put it on the printed insert instead.
Why a glossy panel under a spotlight defeats the camera
This failure gets blamed on the phone, and it is entirely a lighting and finish problem. Restaurant lighting in Malaysia is overwhelmingly narrow-beam: track spots and pendant downlights aimed at each table to make the food look good. A gloss acrylic face or a gloss-laminated card reflects that beam like a mirror, the phone screen shows a bright blob over part of the code, and the scan never resolves.
The geometry is against you too. A card raked back for comfortable reading sits at roughly the right angle to bounce a ceiling spot towards a seated diner’s face, and therefore into the camera. It is not one unlucky table; it is systematic across the row under the light track.
Four fixes, in the order we recommend them:
- Matt everything the code touches. Matt laminate on the insert, or a frosted or non-glare panel over it. This alone solves most cases.
- Print the code directly onto the stand’s matt area rather than behind a clear cover, so there is no second reflective layer in front of it.
- Move the code down the card. Low on the face, it sits in a slightly different plane to the reflected hotspot, which usually lands in the upper half.
- Reduce the rake, or use a double-sided stand, so a diner always has a face that is not catching the beam.
A gloss face also hazes over as it is cleaned, which makes the reflection more diffuse but no less obstructive — a good reason to read gloss, matt and what cleaning chemicals do to acrylic before you settle the finish.
Placement for someone who is sitting down
Artwork is approved on a screen, at eye level, straight on. The code will be used from above and at an angle, by someone whose head and phone sit between the code and the ceiling light. Three decisions follow:
- The code must face the diner, not the ceiling. Codes printed flat on the base of a stand or on a table topper facing upwards are read at a steep angle and shadowed by the phone itself.
- Both seats need one. On a four-top, a single-sided stand means half the table picks it up and turns it — which is also how stands get knocked over.
- Say what it does. A code with no label gets scanned less. One short line — scan to order, scan for the menu — outside the quiet zone, readable from a seated position, materially improves use.
What happens when the link changes
This is the risk that turns a printing decision into a commercial one. Encode a campaign landing page directly onto the stand and you have hard-coded a URL into an object that sits on the table for years. The campaign ends, the page is retired, and every stand now points at an error page. There is no fixing that without reprinting.
The discipline is simple and it needs to be agreed before artwork, not after:
- Encode a short path on a domain you control, which redirects to wherever the destination currently lives. When the campaign changes you change the redirect, not the stands. It also shortens the link, which enlarges every module.
- Avoid a free third-party shortener for anything printed in the hundreds. If that service changes terms or disappears, so does your estate of stands.
- Split permanent from perishable. A code that never changes — the menu, ordering, the loyalty sign-up — belongs printed or engraved on the stand. A code tied to one promotion belongs on the swappable insert, where a reprint costs a card rather than a stand.
- Keep tracking on the server side. Putting campaign parameters into the printed code is what pushes the module count up in the first place; a redirect can record the same information without a single extra character in the symbol.
The scan test to run before you approve 300 units
Run this on the sample, in the dining room, with the lights the outlet actually uses. Ten minutes, and it is the difference between a code that works and a code that photographs well.
- Sit down. Every test below is done seated, at the table, never standing over it.
- Use the oldest phone you can find, not the newest. The slowest camera in the room is your real specification.
- Scan from arm’s length in one attempt, without leaning in. If you have to move closer, the code is too small.
- Scan from the far seat of the table, the one that never gets considered.
- Scan under the spotlight. Put the stand where the beam actually lands and try again from three seating positions.
- Scan at an angle, roughly forty-five degrees off the face, as a diner reaching across would.
- Scan in the dim corner as well as the bright window seat — both extremes exist in every venue.
- Scan a fingerprinted sample. Wipe a thumb across the code first; a working stand is never pristine.
- Follow the link on mobile data, not the outlet’s wifi, and check the page it lands on is the right one and reads well on a phone.
Run it in the same sitting as the tip test we run on every stand sample, because a code that scans on a stand that will not stay upright is still a failed table.
Aquaholic Gifts is a Singapore-based corporate gifting specialist working since 2003 and now serving Malaysia from Kuala Lumpur. We supply a printed sample carrying your real code so this test happens before production, not after delivery. Compare the QR code table stand Malaysia designs for a matt face if scanning matters more than shine. Menu holders start at 300 pcs, with production of 20–30 working days after artwork approval plus around 15 days shipping; express of 7 working days is available on limited styles and quantities.
Send us the link before you send us the artwork
Give us the destination and where the stand will sit, and we will return a free digital mockup at a printed code size that survives a spotlight and an older phone. Working with a cafe table display supplier in KL who tests the scan before the run is the whole point.
WhatsApp +60 10 717 5924 · Brief us through the contact page · AS80, Jalan Hang Tuah 4, Taman Salak Selatan, 57100 Kuala Lumpur.
Frequently asked questions
How big should a QR code be on a restaurant table stand?
Treat 25 mm square as the minimum for a short link on a table card, and design at 30 to 35 mm where the layout allows. Larger again for counter and A4 stands read from further away. A longer encoded link needs a bigger printed code to keep each module readable.
Why does my QR code fail to scan on an acrylic stand?
Usually reflection. A gloss face under a narrow-beam ceiling spot throws a bright patch across part of the symbol and the camera cannot resolve the modules. Specify a matt or frosted surface, move the code lower on the card, and avoid a second clear layer in front of the printed code.
Can we change where the QR code points after the stands are printed?
Only if you encoded a short path on a domain you control and redirect from there — then you change the redirect, not the stands. A landing page encoded directly is permanent, so campaign-specific codes belong on the swappable insert rather than on the stand.
Can you print QR codes on menu stands, and what is the minimum order?
Yes — UV printed onto the stand, or printed on coordinated inserts, with a scan-tested sample before production. The minimum order is from 300 pcs, with production of 20–30 working days after artwork approval plus around 15 days shipping, nationwide across Malaysia.
