Skip to main content

Be careful with strikethrough

Posted in Accessibility, Development and HTML

Like emphasis, strikethrough text (<s>) doesn’t get read out by screen reader software. This is true of all inline text-level semantic elements, but it’s worth drawing particular attention to strikethough.

Why strikethough? Well, although it isn’t part of the official Markdown specification, it’s common in Markdown variants. With these variants, the syntax is usually two tildes (~~) either side of the text to be struck through. This makes it very easy to write compared to other HTML elements, which would need to be written out in full.

When he returned from the barbers with a terrible haircut, my first instinct was to ~~laugh out loud~~ console him.

That sentence containing struck-through text would compile to:

<p>When he returned from the barbers with a terrible haircut, my first instinct was to <s>laugh out loud</s> console him.</p>

So with strikethough being so easy to write, what are the problems we might encounter?

Not always the output you’d expect

Some Markdown compilers/variants incorrectly produce the <del> element instead of <s>. GitHub Flavored Markdown is the main culprit, and they even describe it as their “Strikethough extension”. I cover the distinction between <s> and <del> separately.

Strikethrough is a difficult progressive enhancement

Again, from my article about emphasis and screen readers:

text-level semantics like italics and bold should be treated as a progressive enhancement. In other words, your sentences should make sense without emphasis; those <em> and <strong> wrappers should just offer a nice added extra for users that know they’re there.

Unlike most text-level semantics, strikethrough adds content, rather than just wrapping text in some meaningful tags, so it’s almost impossible to progressively enhance.

Our example from earlier would be read out like this:

When he returned from the barbers with a terrible haircut, my first instinct was to laugh out loud console him

How do you “laugh out loud console” someone? Without the context of strikethrough, this doesn’t make sense.

Forcing the matter

There is a way to force text-level semantics to be read out using CSS ::before and ::after pseudo elements; since <s> requires extra content that could change the meaning of a sentence without the semantics (<del> and <ins> do too), it could be the right approach here.

TPGi list some downsides to the technique:

  • It blurs the line between CSS for presentation and HTML for content
  • It could be overused and become an irritant rather than informative

The latter could be forgiven for <s>, given it’s difficult progressive enhancement. There’s the case where the NVDA screen reader added support for emphasis but quickly removed it after a backlash from its users, but strikethrough isn’t as commonly used as <em> and <strong>.

The first bullet there is of most concern to me; what if:

  • the styling fails to load and the user is left with just the HTML?
  • the reader is using Safari’s Reader mode which strips styling?
  • your visitor saves the article for off-line reading later, using a service like Instapaper or Pocket?

CSS is a progressive enhancement, after all…

Visually difficult to read

Moving from users who hear the contents of a document to those that see it, those with impairments like low vision or dyslexia already have a challenge reading text. Add a line through that text and we’re making it even more difficult for them to read our content.

Strikethrough is not for me

To sum up, strikethrough:

  • has inconsistent—often incorrect—output when converted from Markdown to HTML
  • is not read by screen readers by default
  • is difficult (impossible?) to use as a progressive enhancement
  • might not be read even when CSS is used to force the matter
  • obscures text with that line-through, making reading difficult for some users

That’s enough for me to avoid it entirely.

Accessibility in your inbox

I send an accessibility-centric newsletter on the last day of every month, containing:

  • A roundup of the articles I’ve posted
  • A hot pick from my archives
  • Some interesting posts from around the web

I don’t collect any data on when, where or if people open the emails I send them. Your email will only be used to send you newsletters and will never be passed on. You can unsubscribe at any time.

More posts

Here are a couple more posts for you to enjoy. If that’s not enough, have a look at the full list.

  1. Images as the first thing in a button or link

    If the text of an interactive element like a button or link is preceded with an accessible image, we’ve probably got an accessibility problem.

  2. Alt text for CSS generated content

    There’s an interesting feature in Safari 17.4 that allows content added with CSS to have ‘alt’ text. I’m not sure how I feel about this.