Read My Tweets

Guide

How to Make an X Thread Accessible

Alt text, hashtags, emoji, numbering and links: the small habits that decide whether a screen reader user can follow your thread.

By the Read My Tweets Team ยท Updated ยท 5 min read, about 7 min to listen

A thread is a long piece of writing cut into short posts. For a sighted reader on a fast connection, that structure is mostly invisible. For someone who listens with a screen reader, every piece of scaffolding around the words gets read out: the numbering, the emoji, the hashtags, the "link" announcements, the images that have no description. None of this takes much effort to fix, and most of the fixes make the thread easier for everyone else too.

This guide covers the things we see go wrong most often when threads are turned into speech, in roughly the order they cause trouble.

Write alt text for every image

An image without a description is announced as "image", and that is all the listener gets. If the image carries the point of the post, as a screenshot of a chart or a quote usually does, the post becomes meaningless.

X lets you add a description to each image you attach. On the web, the option is labeled "Add description" under the image; in the mobile apps it is the "+ALT" badge on the thumbnail. The help center puts the limit at 1,000 characters, which is far more than you normally need. Once a description is added, an ALT badge appears on the image so other people can read it too.

Good alt text describes what the image is there to show, not everything in it. A few rules of thumb:

  • For a screenshot of text, type the text out. If it is long, give the key sentence and say where it is from.
  • For a chart, give the takeaway and the numbers that support it: "Line chart of monthly signups, flat at about 2,000 until March, then rising to 9,000 by June."
  • For a photo, say what matters for this post. "My desk setup" tells the listener nothing; "A standing desk with two monitors, the left one rotated vertically" does.
  • Skip "image of" and "picture of". The screen reader already says it is an image.

If you post a GIF or video, say in the post itself what happens in it, or add captions to the video before you upload. A reaction GIF can usually be summed up in a few words: "(GIF: a cat slowly pushing a glass off a table)".

Use CamelCase for hashtags

A hashtag written in lowercase is one long string of letters. Screen readers try to pronounce it as a single word, which turns #screenreadertips into something unrecognizable. Capitalizing the first letter of each word, #ScreenReaderTips, gives the speech engine the word boundaries it needs. It is also faster to read by eye.

Hashtags match regardless of case on X, so CamelCase does not cost you anything in search. Keep the count low. Each hashtag is read in full, often preceded by the word "hashtag", and three or four in a row at the end of a post add several seconds of noise before the listener reaches the next post.

Go easy on emoji

Every emoji has a name, and screen readers read that name. A single ๐Ÿ”ฅ after a sentence is read as "fire", which is fine. Five of them are read as "fire fire fire fire fire". An emoji with a skin tone becomes "clapping hands: medium-dark skin tone". Flags read as "flag: Canada" and so on.

The patterns that cause the most trouble are:

  • Emoji between every word, a style sometimes used for emphasis ("This ๐Ÿ‘ is ๐Ÿ‘ not ๐Ÿ‘ okay"). The listener hears "clapping hands" after each word, which buries the sentence.
  • Emoji used as bullet points. "Point right" before every line of a list is tolerable once, irritating by the fourth line.
  • Emoji used in place of words. "I โค๏ธ this" works, because "red heart" still makes sense in the sentence. "Meet me at the ๐ŸŸ๏ธ" is harder to follow.

Put emoji at the end of a sentence, use one where you would otherwise use three, and do not let an emoji carry information the words do not.

Avoid "fancy" Unicode text

Bold, italic, script and "bubble" letters made with Unicode generators look like formatting but are a different set of characters, mostly from the mathematical alphanumeric block. Screen readers handle them badly: some skip them, some spell them out letter by letter, and some read each one as "mathematical bold capital A". Search does not match them either. If you need emphasis, use word choice, a short sentence of its own, or capital letters on a single word.

Keep numbering short

Thread numbers like 1/ or 2/9 help readers who arrive in the middle, but each one is spoken. "One slash twelve, thread emoji" at the start of a thread is a lot of preamble. If you number:

  • Use the short form, 1/ 2/ 3/, or none at all for short threads.
  • Put the number at the start so it is heard and done with, not at the end where it runs into the next post.
  • Drop the ๐Ÿงต and ๐Ÿ‘‡ after the first post.

When you paste a thread into the Read My Tweets reader, numbering like this is removed automatically, but people listening on X itself will still hear it.

A long URL pasted into a post is usually shortened on screen, but how it is announced varies with the app and the screen reader. Some read the visible domain, some read "link" and the full address. Put the point of the post first and the link at the end, so the listener has heard what matters before the address starts.

The same goes for @mentions. A post that opens with four handles makes a listener sit through all of them before the first real word. If you need to credit people, do it at the end of the post or in a reply.

Break up long posts with line breaks, not symbols

Line breaks within a post are mostly invisible to a screen reader, which is fine. Symbols used as separators are not: a row of dashes or "โ€ข โ€ข โ€ข" may be read character by character. If you want a pause, end the sentence. A period is the most reliable pause there is.

Abbreviations deserve a quick check too. "w/" is read as "w slash", "b/c" as "b slash c", and "&" usually as "and", which is fine. When you have the characters to spare, write the word.

Test it by listening

The quickest way to find problems is to hear your thread before you post it. Paste the draft into the reader on the home page and press play, or turn on your phone's screen reader and listen to a thread you already posted. Anything that makes you wince when you hear it will make a screen reader user wince too. The guide on writing posts that read well aloud goes further into how to phrase things for the ear, and the screen reader guide explains what people using assistive technology actually hear on X.

Questions

How long can alt text be on X?

X's help center says image descriptions can be up to 1,000 characters. Most good descriptions are far shorter: one to three sentences that cover what the image is there to show.

Do screen readers read emoji?

Yes. Screen readers announce each emoji by its name, such as 'fire' or 'clapping hands', and skin tone variants add a phrase like 'medium skin tone'. A row of five emoji is read as five names in a row.

Should I number the posts in my thread?

Numbering helps sighted readers who land in the middle, but every number is read aloud. If you number, keep it short (1/ rather than 1/12 ๐Ÿงต) and put it at the start of the post so it is heard once and passed.

Ready

Keyboard shortcuts

Space / K
Play or pause
J / โ†
Previous sentence
L / โ†’
Next sentence
Esc
Stop
+ / โˆ’
Speed up or slow down

Shortcuts are ignored while you are typing in a text box.