Skip to content
easeweb
Search topics

QR codes with no link to the page they open

An app offer's only way on is a QR code with alt="QR code", shown even on the phone that would have to scan it.

WCAG 2.2
SC 1.1.1A
Required by
Section 508 · EN 301 549 (EU)
Broken <img src="qr-app.svg" alt="QR code">
The accessibility problem illustrated: No vision:Where does this code go?
01

The problem

Screen reader users, and anyone on a phone, can't reach the page a QR code holds

02

Try it

On this phone, open the page that gets you the app

The page is on the phone you would scan the code with. Tap the code, then read what a screen reader says on it.

Broken Can you fix this?

BrokenA QR code as the only way to the app

Thank you. Order 1042 is confirmed.

Our app

Track your orders and get 10% off your first order in the app.

Scan the code with your phone's camera.

QR code

Nothing tapped yet.

Swiping through the page, a screen reader says:

  1. Thank you. Order 1042 is confirmed.
  2. Our app, heading level 3
  3. Track your orders and get 10% off your first order in the app.
  4. Scan the code with your phone's camera.
  5. QR code, image

A recreated demo. The broken version is intentionally inaccessible.

03

The fix

Put a link to the same page beside every QR code

Before
BrokenA QR code as the only way to the app
<section class="get-app">  <h2>Our app</h2>  <p>Track your orders and get 10% off your first order in the app.</p>  <p>Scan the code with your phone's camera.</p>  <img src="/images/qr-app.svg" alt="QR code" width="96" height="96"></section>
What is wrong3 points
  • The alt says only "QR code", so the address the code holds has no text equivalent.
  • Nothing on the page links to that address: the code is the only way there.
  • The same block shows on a phone, where the code is on the screen of the camera that would scan it.
After

A link beside the code

<section class="get-app">  <h2>Our app</h2>  <p>Track your orders and get 10% off your first order in the app.</p>  <a class="button" href="https://example.com/app">Get the app</a>  <p>    <img src="/images/qr-app.svg" alt="" width="56" height="56">    On a computer? Scan the code with your phone's camera.  </p></section>
How it is fixed3 steps
  1. Add a link to the address the code holds, with words that say what it opens. On a phone it is what people tap; on a computer it opens the page there, and keyboard, voice control and screen reader users can follow it.
  2. Give the code alt="". The link already says where it goes, so a screen reader doesn't read the same thing twice.
  3. Keep the code, and its instruction, for people on a computer who want the page on their phone, and say that is what it is for.

This fixes the Before and passes 1.1.1: the address has a text equivalent in the link, and anyone on any device can follow it.

Easily confused
04

Verify the fix

4 checks, no mouse.

Test with: Screen reader, Touch, Keyboard

0 of 4 checked

Record the OS, browser and assistive-technology versions, the build, the date, and the actual result of each step. Repeat whenever a campaign, an app store address or a code generator changes.

Limits

This is a starting pattern, not a guarantee for every application. The address in the snippets is a placeholder. This guide covers a QR code standing in for a link on a web page; for images that carry information in general, see missing alt text on images that carry information, and for words drawn into a picture beside the code, images of text instead of real HTML text. Codes printed on paper, packaging or signs need a printed address beside them for the same reasons, but are outside what a web page can fix. Test the complete journey with your target assistive technology.

This is a recreated teaching example, not a finding about a named client. The code is a starting pattern: test it in your own product. No completed assistive-technology test is claimed here.

EaseWeb service

Fixed it? Keep it from coming back.

I turn guides like this one into rules your coding agents follow and checks your CI runs. Then I retest by hand with a keyboard and screen readers, periodically.

See the service