This appendix explains why each recommendation in this document has been made. It is intended to help those who specify, design, install and maintain QR codes at bus stops to understand the reasoning behind the values given, so that they can apply them sensibly where site conditions differ, and explain them to colleagues, suppliers and passengers.

Where a recommendation is based on a published standard, guidance or research, sources are listed at the end of this appendix. Where it follows from the way QR codes and phone cameras work, the reasoning is explained directly.

Underlying principles

Most of the recommendations follow from four principles.

  • Predictability. A code that is always in the same place, at the same height and with the same label is found faster and with less effort. This reduces search time and cognitive load for everyone, and is essential for people who cannot scan the whole panel visually.
  • Robustness. Bus stops are harsh environments. Codes must still work through rain, glare, dirt, condensation, vandalism and weak phone signal, with older and cheaper phones. Many of the size, print and background recommendations exist to preserve a margin for these conditions.
  • Trust. A QR code is only useful if passengers are confident it is genuine and that it works. Official domains, visible stop codes, protection from tampering and regular inspection all support that confidence.
  • Alternatives. No passenger should depend on the QR code alone. Physical information, a typable URL and the accessibility of the destination page ensure that people who cannot scan the code are not excluded.

Section 2: QR codes are supplementary, not a replacement

RecommendationValueWhy it is recommended
QR codes should add value, but the stop must still provide usable physical timetable information.Using a QR code depends on having a working smartphone with a camera, battery charge, mobile data, signal and the confidence to use it, all at the moment the information is needed. Ofcom reports that 32% of adults aged 75 and over have no internet access at home and a further 8% have access but do not use it. Smartphone use is also lower among disabled people than in the population as a whole. Relying on a QR code alone would exclude many of the passengers who most need reliable information, and would sit uneasily with the anticipatory duty under the Equality Act 2010 to make reasonable adjustments for disabled people.

Section 3: QR Code Location

RecommendationValueWhy it is recommended
3.1 – Locate the code so that it can be scanned without stepping into a roadway or cycle path, and without awkward body positions.To scan a code, a passenger has to stand still, face the code and hold a phone steady about 30–50 cm away, sometimes for several seconds. If the only place to do that is in the carriageway or a cycle path, or involves leaning over seating or round a shelter panel, scanning becomes a safety risk and excludes people with limited balance, reach or mobility.
3.1 – Centre of the code between 1000 and 1200 mm above ground.1000–1200 mm (centre)This band works for both seated and standing users. DfT’s Inclusive Mobility gives eye heights for wheelchair users of 960–1250 mm (5th to 95th percentile) and recommends that features intended for their use are between 750 and 1200 mm above ground. A standing adult can easily lower a phone to this height, whereas a seated person cannot easily raise a phone much higher while keeping it square to the code. The band also overlaps the 1000–1100 mm recommended for audio pushbuttons, so accessible features at the stop sit in the same zone.
3.1 – Primary QR code at the bottom right of the main timetable panel.Bottom rightMost of the benefit comes from consistency rather than from the corner itself: a passenger who knows where to look finds the code faster and with less effort, which matters most to people with a visual or cognitive impairment. Bottom right was chosen because it is the end of the natural reading path in left-to-right text, matching the position of “extended / digital” information at the end of RTIG’s information hierarchy; the lower part of the panel falls within the reach and eye-height zone above; it follows existing public-sector accessibility guidance; and it matches RTIG’s recommended location for the audio information button on displays.
3.1 – Bottom left only if absolutely necessary, and the same position used at all stops in the authority area.Consistent across the areaEvery departure from the convention reduces its value, because passengers who have learned “bottom right” will look there first. Where bottom left has to be used, using it consistently across the whole area keeps the location predictable and means it can be described once on the authority’s or operator’s accessibility information page.
3.1 – Avoid the fold or hinge edge of a case, positions above 1290 mm, glass with heavy reflections, and curved surfaces that have not been tested.Not above 1290 mmPhone QR readers expect a flat, evenly lit square grid. Near hinges and folds the print can curve and the case frame can cast shadows; curvature distorts the spacing of the modules and can stop the code being read. Strong reflections on glazing overload the camera sensor and wash out part of the code. The 1290 mm limit is the top of the comfortable reach zone for a seated person; above it, a wheelchair user cannot readily hold a phone level with the code.
3.1 – Protect QR codes with installation glass or polycarbonate; avoid standalone stickers.A protected code resists rain, fading and vandalism, and is much harder to tamper with. Stickers are easily peeled off, damaged, or covered with a counterfeit sticker: fraudsters have placed fake QR stickers on car park machines across the UK, with nearly 800 reports to Action Fraud and £3.5m lost in the 12 months to April 2025. The trade-off is reflection from the glazing, which is why reflective positions should be avoided (above) and matte print is recommended.
3.2 – Avoid multiple QR codes. If unavoidable, keep the primary code bottom right, separated from others by at least 50% of the width of the printed material and by at least 100 mm.≥ 50% of width and ≥ 100 mmWhen several codes are close together, a phone will open whichever one it detects first, and a person who cannot see the codes has no way of knowing which one it was. A single code, or a primary code clearly separated in its standard position, reduces the chance of opening the wrong content and reduces the physical and mental effort of aiming the phone, especially for visually impaired people.
3.3 – Codes on separate plates should be in a consistent location that is easily accessible, at 1000–1200 mm above ground.1000–1200 mmThe same reasons apply as for codes on the timetable panel: a predictable location reduces search time, and this height is within the reach and eye-height range of wheelchair users and people of short stature. A consistent location can also be described once on the accessibility information page.

Section 4: QR Code Design

RecommendationValueWhy it is recommended
4.1 – Use standard, “device agnostic” QR codes that phones read natively. Bespoke codes needing an app should only be used in addition, and lead to the same URL endpoint.Standard QR codeStandard QR codes can be read by the built-in camera on iPhones (since iOS 11 in 2017) and on current Android phones, with no app to find, download, update or learn. Requiring a specific app adds cost, storage, data use and complexity, all of which are barriers for many older and disabled people. Some proprietary codes offer real benefits to blind and partially sighted people, such as detection from further away and at wider angles, so they may be added; sending both to the same URL means everyone receives the same information whichever code they use, in line with RTIG’s principle of consistency across channels.
4.2 – Print at 300 dpi or better; avoid inkjet printers unless special waterproof inks are used.≥ 300 dpiQR readers work by finding the edges between dark and light modules. At 300 dpi each 1 mm module is made up of about 12 printer dots, so its edges stay sharp even on small codes. Lower resolution, or ink that spreads into the paper, blurs those edges and makes the light modules effectively smaller, which reduces the distance and angle from which the code can be read. Condensation inside timetable cases makes standard inkjet ink bleed, and a code degrades faster than text because every module matters.
4.2 – On digital screens, display the code at a resolution of at least 150 × 150 pixels.≥ 150 × 150 pxA short-URL code is typically 29 × 29 modules, or 37 × 37 including the quiet zone. At 150 pixels each module is about four screen pixels wide, which keeps the edges distinct once the screen has been photographed by a phone camera through glass and glare. Longer URLs produce more modules and so need more pixels.
4.3 – Code at least 30 × 30 mm; 50 × 50 mm is the ideal size.30 mm minimum, 50 mm idealA widely used rule of thumb is that a QR code can be read from about ten times its width. Timetables are typically scanned from 30–50 cm, which gives 30–50 mm. The 50 mm ideal allows for the conditions listed in Section 4.3 (older phone cameras, low light, and panel curvature or wear), and gives more tolerance for people who cannot get close to the panel or who find it hard to hold a phone steady.
4.3 – Quiet zone (blank margin) of at least four modules.≥ 4 modulesThe quiet zone is part of the QR code standard. The reader uses the blank border to locate the three large square finder patterns and the outline of the code; text, frames or graphics inside it can be mistaken for modules and stop the code being read.
4.3 – At least 10 mm margin (more for large codes) and at least 15 mm from any text or symbols.10 mm; 15 mm from textFor codes of the recommended size the four-module quiet zone is only about 4–7 mm wide. The larger physical margins give tolerance for trimming, the case frame, the print moving within the case, and room for the tactile frame (Section 6). The extra distance from text also stops the camera picking up nearby lettering as part of the code, and makes the code stand out visually as a separate item.
4.4 – Label the code with text describing its purpose, with a short typable URL directly beneath or alongside.e.g. “Scan for live departures (this stop)”People need to know where a code will take them before deciding to scan it. This is the printed equivalent of the WCAG requirement that the purpose of a link is clear, and it also helps passengers judge whether a code is genuine. The short URL is an alternative for anyone who cannot scan the code (no camera, a damaged code, an older phone) and can be read out by someone helping; public-sector accessibility guidance advises never using a QR code without a short URL.
4.4 – Consider safety messaging alongside the label.e.g. “Always check the web address”Passengers are increasingly warned to be cautious about QR codes in public places such as stations and car parks. A short statement reassures them that the code is official and reminds them to check that the web address shown by their phone matches the printed one, which is the simplest way to spot a counterfeit sticker.
4.4 – Label text at least 12 pt (14 pt preferred), sans-serif, no italics and no whole words in capitals.12 pt minimum, 14 pt preferredThese follow UK clear print guidance, which recommends a minimum of 12 point and ideally 14 point, a clear sans-serif typeface, and avoiding italics and blocks of capital letters because they are harder to read. They also match RTIG’s guidance on body text for printed information at stops.

Section 5: Web Address

RecommendationValueWhy it is recommended
5.1 – Keep the URL short.As short as practicalThe more characters a URL contains, the more modules the code needs. At the same printed size, more modules means smaller modules, so the code becomes less tolerant of dirt, scratches, blur and poor cameras. For example, at error correction level M, https://bus.gov.uk/stop/1234 (28 characters) produces a 29 × 29 module code, while the 67-character example in Section 5.1 needs 37 × 37 modules; printed at 30 mm, each module shrinks from about 1.0 mm to about 0.8 mm. A short URL is also easier to type and to check by eye.
5.1 – For stop-specific information, include the stop’s NaPTANCode (preferred) or ATCOCode in the URL.NaPTANCode preferredThe NaPTAN code was designed as a short (seven or eight digit) identifier “suitable for displaying on stops and referring to the stop in public facing systems”, whereas the ATCO code is a twelve-character identifier intended for computer systems. The NaPTAN code therefore keeps the URL shorter and is more likely to be shown elsewhere at the stop, so a passenger can check that the code on the stop matches the one in the web address: a simple anti-counterfeit check.
5.2 – The code should lead to accessible, mobile-friendly pages.WCAG 2.2 AAAlmost everyone who scans the code will be using a phone, often outdoors, one-handed and on a weak connection. Public sector websites must meet WCAG 2.2 AA, and it is the accepted benchmark for others. Its requirements, such as content that reflows without sideways scrolling, adequately sized touch targets and compatibility with screen readers, are what make a page usable on a small screen with assistive technology. Lightweight pages that load quickly also help where signal is poor.
5.3 – Plan for the longevity of URLs and have a process to replace codes promptly when URLs change.A code on street may stay in place for years, whereas supplier contracts, domains and website structures change more often. When a URL stops working the code becomes a dead end, and passengers who meet one broken code are less likely to trust the next. Planning for change avoids sending passengers to error pages.
5.3 – Consider who owns the domain and URL structure; use URLs that support migration.Authority- or operator-owned domainIf the authority or operator owns the domain, old addresses can be redirected to new systems when suppliers change, without reprinting and refitting codes at every stop, which is usually quicker and cheaper. Control of the domain also allows a compromised or retired code to be redirected quickly (Section 9).

Section 6: Tactile Marking

RecommendationValueWhy it is recommended
6.1 – Mark the whole outline of the code with a raised frame, either a continuous line or a dotted line, not both.Continuous or dotted, not combinedA blind person cannot find a flat printed code by touch. Research by VocalEyes found that 60% of blind and partially sighted respondents had difficulty using QR codes independently, with locating the code a key problem. A raised frame tells the user that a code is there and where its edges are, so they can centre their phone on it. Using one style of frame, rather than mixing solid and dotted lines, means the tactile mark always means the same thing. The approach follows the technical specification of the Spanish Braille Commission (ONCE).
6.1 – Line thickness 1–2 mm; dots 1.5 mm diameter (1.2–1.9 mm) with no more than 2.75 mm between dot edges.1–2 mm; 1.5 mm dots; ≤ 2.75 mm gapThese dimensions come from the ONCE specification. The dot size matches standard braille dots, which fingertips detect readily and which braille readers are familiar with. The 2.75 mm limit on the gap between dots is the point beyond which a dotted line stops being felt as a continuous line and is instead felt as separate dots.
6.1 – Where the tactile mark is on a transparent covering, make the frame significantly larger.Larger frameWhen the frame is on glass or polycarbonate in front of the timetable, the printed sheet can move within the case, and the gap between the cover and the print means the code appears in a slightly different place depending on the viewing angle. A larger frame keeps the code inside it in all these cases, so a user who centres their phone on the frame is aiming at the code.

Section 7: Backgrounds

RecommendationValueWhy it is recommended
7.1 – Print on a plain, light background with very high contrast; never over graphics.Dark code on light backgroundPhone readers convert the image to black and white before decoding it. Patterned or coloured backgrounds create false edges and reduce the difference between dark and light modules, particularly in poor light. Although the QR standard allows light-on-dark codes, not all readers handle reversed codes reliably, so dark modules on a light background is the safest choice.
7.1 – No decorative distortions; the grid must not be compromised.Standard square gridStylised codes (rounded or merged modules, altered corner patterns, colour gradients) are only readable because error correction compensates for the changes. That uses up capacity that is needed for real-world dirt, scratches and fading. Keeping the standard grid keeps that capacity in reserve.
7.1 – Logos are not recommended. If used: centred, error correction Level H, covering no more than 20% of the code, with the code printed larger.Level H; ≤ 20% of areaA logo covers modules, which the reader treats as damage. Error correction Level H can recover about 30% of a code’s data, compared with 15% at Level M. Limiting the logo to 20% of the area leaves some capacity for dirt and wear. Centring it keeps it clear of the finder patterns in three of the corners and the format information next to them, without which the code cannot be read at all. Level H also increases the number of modules (the 28-character URL above goes from 29 × 29 to 33 × 33), so the code must be printed larger to keep the modules the same size.
7.1 – Print on matte, non-gloss, water-resistant material that will last for the life of the display.Matte; water-resistantGloss surfaces create bright reflections that can hide part of the code from the camera; matte paper is also recommended in UK clear print guidance to reduce glare. Water-resistant media stop the paper cockling and the ink bleeding when condensation forms inside the case, both of which distort the grid.

Section 8: Inspections & Testing

RecommendationValueWhy it is recommended
8.1 – Inspect codes regularly, like any other asset: check they still scan, the link still works, and there is no over-stickering or tampering.Regular inspectionA code that has faded, been scratched or whose link has broken fails silently: passengers simply find that it does not work and lose confidence in it. Covering a genuine code with a fake sticker is the main method used in QR fraud, and physical inspection is the most direct way to find it. Treating codes as an asset puts them into existing maintenance cycles rather than relying on complaints.
8.2 – Test every code before it is put on street.Every codeA single error, such as the wrong stop code in the URL, a broken link or a print fault, sends every passenger at that stop to the wrong place. Testing each code is cheap compared with the cost of a site visit to replace it, and with the loss of trust when it fails.
8.2 – When developing a design, test with real-world dirt, low-end phone cameras, users with reduced and no vision, screen reader users, and a range of lighting conditions.Codes that work in the office often fail on street. The listed conditions reflect how codes are actually used: through dirty glass, with older or cheaper phones whose cameras cope less well with small modules and low light, in low sun, darkness and street lighting, and by people using screen readers or magnification to operate the camera and the landing page. Testing with disabled people finds barriers that technical checks miss, in line with RTIG’s wider guidance on working with users.

Section 9: Cyber Security

RecommendationValueWhy it is recommended
9.1 – Always use secure protocols such as HTTPS.HTTPSHTTPS encrypts the connection and verifies that the phone is connected to the domain it asked for, so the content cannot be altered on the way. Browsers warn users about pages that are not secure, which would undermine the confidence the code is meant to give.
9.1 – Use official, short, recognisable domains and avoid obscure third-party links.e.g. https://bus.gov.uk/stop/1234When a phone detects a QR code it shows the web address before opening it. A short, familiar official domain lets passengers, including screen reader users who hear the address read out, notice when a code leads somewhere unexpected. Some domains, such as .gov.uk, can only be registered by public bodies, which makes them hard to imitate. Generic link shorteners and third-party tracking domains look the same whether they are genuine or fraudulent, so they defeat this check.
9.1 – Monitor use of QR codes for unusual traffic patterns.Ongoing monitoringEvery scan is a request to the landing page, so changes in the pattern can reveal problems between inspections: a sudden fall in scans at one stop may mean the code has been covered or damaged, while unexpected spikes may indicate misuse.
9.1 – Have a process in place to disable QR codes quickly if misuse is detected.Documented processIf the destination of a genuine code is compromised, for example because a website has been hacked or a domain has lapsed, being able to disable or redirect the URL (for example to a warning page) protects passengers at once, before anyone can visit the stop. This is much easier where the authority or operator controls the domain (Section 5.3).

Sources