# QR codes for government and public services

> Public-sector QR codes carry an accessibility obligation that commercial ones do not. Never make a code the only route to a service, always print the URL, and use a .gov-style domain so citizens can verify the destination before scanning.

Source: https://useqr.app/qr-codes-for/government · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## Accessibility is a legal requirement

Public-sector bodies in most jurisdictions are bound by accessibility regulations. A QR code
is invisible to a screen reader, unusable without a smartphone, and useless without data.

Non-negotiables:

- **Always print the URL as text.** Short and typeable.
- **Never QR-only** for a statutory notice, a consultation, a benefit application or safety
  information.
- **Linked pages as accessible HTML**, meeting WCAG 2.2 AA — not a scanned PDF.
- **Alternative channels stated** on the same material: a phone number and a counter address.

## Domain trust

Citizens are told not to scan unknown codes, which is correct advice. Make yours verifiable:
use your official domain, never a shortener, and print the domain in text so it can be
compared against the preview.

## Physical tampering

Codes on parking meters, bus stops, notice boards and permit signage are the classic
[quishing](/glossary/quishing) target — a fraudulent sticker over the real code, usually a
fake payment page. Defences: tamper-evident laminate, printed domain, a scheduled inspection
routine, and a published notice telling the public what the real domain is.

## Where they help

| Use | Notes |
|---|---|
| Consultation responses | On the notice, with the URL in text |
| Report a problem (potholes, fly-tipping) | On street furniture, with a location prefilled |
| Bin collection schedules | On the bin, pointing at a stable page |
| Wayfinding in civic buildings | 10–30 cm at 1–3 m |
| Multilingual information | One code, language negotiated server-side |

The report-a-problem case is the strongest: a code on a lamp post that opens a report form
with the asset id already filled in removes almost all the effort from civic reporting.

## Try it

- https://useqr.app/url
- https://useqr.app/location
- https://useqr.app/pdf
- https://useqr.app/feedback
