Media and motion Rule

Do not use the marquee element marquee

The marquee element scrolls text across the page and never stops. There is no way to pause it, people who read slowly cannot finish a line before it leaves, and screen magnifiers only ever show a slice of it. Replace it with static text. If you have several items to show, a list, or a carousel with a pause button, does the job.

Websight reports this as <marquee> elements are deprecated and must not be used

Who it affects

Someone with dyslexia reading the station's service updates reads the start of Delays on the 08:14 to, and the rest has gone. They wait for it to come round again. Three times.

Someone using screen magnification at 400% sees a few letters at a time sliding past, and cannot read any of it.

Someone using a screen reader may hear the text once, or hear it repeated endlessly, depending on the screen reader.

Broken versus fixed

The broken markup is shown as code rather than rendered, because the effect is in how it is announced or handled, not how it looks.

Broken
<marquee>Delays on the 08:14 to Reading. Platform 2 closed for repairs.</marquee>

The sentence scrolls right to left at a fixed speed and loops. Nothing can stop it.

Fixed
<ul class="updates">
  <li>Delays on the 08:14 to Reading.</li>
  <li>Platform 2 closed for repairs.</li>
</ul>

Two still lines that can be read at any speed, zoomed, and found with Ctrl+F.

Test it by hand in two minutes

  1. View the page source and search for <marquee.
  2. Look for text that moves on its own. Try to stop it with a click or the Escape key; if you cannot, it fails.
  3. Zoom the browser to 400% and watch any moving text. If you cannot read it, that is what magnifier users see all the time.
  4. Check JavaScript tickers too: news headlines, share prices, now playing bars.

The fix

Before
<marquee>Delays on the 08:14 to Reading. Platform 2 closed for repairs.</marquee>
After
<ul class="updates">
  <li>Delays on the 08:14 to Reading.</li>
  <li>Platform 2 closed for repairs.</li>
</ul>

If space is tight, show one update at a time with next and previous buttons rather than scrolling. Give it a pause control and stop it after a few loops.

CSS ticker

Before
.ticker { animation: slide 12s linear infinite; white-space: nowrap; }
After
.ticker { animation: none; white-space: normal; }

Same problem, same fix. If you keep it, add a pause button and respect prefers-reduced-motion.

Common mistakes

  • Rebuilding the marquee with a CSS animation, which the scanner cannot see and people cannot stop.
  • Pausing on hover only; keyboard and touch users cannot hover.
  • Speeding the text up to fit more in.
  • Using a marquee for the only copy of important information, such as a closure notice.

WCAG criteria this rule maps to

axe-core tags this rule as WCAG 2.2 level A. It is one of the checks for:

The scanner finds marquee elements in the document. Tickers built with CSS or JavaScript are not detected, so look at the page yourself for anything that moves. Automated tools find only part of the accessibility problems on a page; a pass on this rule is not a pass on the criterion.

Scan your own page for this and 63 other checks

Open any page in Chrome, click Websight, and get a score out of 100 with every issue explained and a draft fix snippet per element.

Add Websight to Chrome

Free scans, no account, nothing leaves your computer. Automated tools find only part of the problems; the extension says so on every report.