Unstructured Supplementary Service Data (USSD) has been described as “The Third Universal Mobile Application” and, according to The World Bank,  is “the best communication technology available to provide [mobile  financial services] to low-income individuals.” It’s undeniably changed  the world for the better, but it also has a dark side: USSD is inaccessible to nearly 1.3 billion people.

Screenshots from Google’s Accessibility Scanner

If you’re one of the ~250 million people living with a visual impairment, or one of the ~1 billion people living with illiteracy or innumeracy, USSD is an impassable wall. Here’s why:

Even Google’s own phones fail to meet its accessibility standards. According to Google’s Accessibility Scanner, for example, the essential * and # characters on the Pixel’s default dialer have an insufficient text  contrast ratio (3.19 vs. the recommended 4.50) and the call button has  an insufficient image contrast ratio (2.18 vs. the recommended 3.00),  making them harder to see.

USSD menus are incoherent when read as run-on sentences, which is how screen readers interpret them. To see what I mean, close your eyes and try to follow what’s happening in this video.  It’s impossible, especially when you’re racing against the clock to  prevent the session from timing out (more on that in a second).Source: Tech Accessibility Tutorials (YouTube)

USSD input fields have no item label,  which means they “may not have a label readable by screen readers”  (also from Accessibility Scanner). In practice, this means the user has  to know to double tap the input field to select an item from a list,  enter a variable, or enter their PIN. When they do, Google’s screen  reader, TalkBack, confusingly interprets the input field as “edit box.”

Navigational commands are decoupled from input fields. Replying in a USSD input field doesn’t automatically progress you to  the next step. Instead, a user depending on a screen reader has to know  to double tap “Cancel” or “Send” to dismiss the session or navigate  forward. Failing this, the session automatically times out from  inactivity and the user has to start over.

It’s almost impossible to complete a USSD session with a screen reader before the session times out. At the beginning of the video above, the instructor says “to use the  service we need to type fast otherwise it will say connection problem,  or MMI complete, or MMI invalid — something like that.” It then takes  the instructor 3 minutes and 53 seconds to complete the transaction.  Outside of India, where the government enforces the reliability of the  USSD code in the video, it’s unrealistic to assume any USSD session will  actually last that long.

Session time outs cost users money. Users  that depend on screen readers are more likely to take longer to  complete a USSD session and the odds are higher that the USSD session  will time out. Given that mobile network operators charge 3rd parties  per second or per session to use USSD, that means the most vulnerable  users are more likely to pay more to access USSD-based services. And  that’s just the cost to access a  service — there’s usually an additional fee based on the service that’s  accessed (e.g. a fee to withdraw funds from your bank account to your  mobile wallet).

USSD  made it possible to reach billions of people like never before, but  we’re only beginning to understand its true potential. It’s so critical  to bringing the next billion online, in fact, that it’s been added to the 5G specification. With the right tooling (something we’re working on at Hover), developers and product teams can finally make “The Third Universal Mobile Application” truly universal.


Hover = USSD automation for developers. To learn more, visit www.usehover.com or chat with us on Twitter.