Google, where’s my alt text?

Google's hangout icon with alt text of this stories headline visually superimposed over itWhile using the NVDA screen reader to chat with a friend, I noticed that in Google’s plugin version of Hangouts, alt text (the information used to provide a text description of an image) was missing or wrong on some characters. I’ve only tested alt text accessibility on the 64 yellow emoticons Unicode block icons and only on the desktop app, but I assume these problems carry over to Android and perhaps the iOS versions too.

Note: This was tested via the Hangouts Chrome plugin and NOT the integrated Hangouts within Google Plus. With the latter, Google has chosen to display emojis via CSS as a background-image and thus screen readers skip it entirely. That’s not very nice Google. D:<

Anyways, what I found is that within the Hangouts plugin, the following 13 were missing alt text entirely!

  • 😀 grinning face
  • 😯 hushed face
  • 😑 expressionless face
  • 😕 confused face
  • 😬 grimacing face
  • 😴 sleeping face
  • 😮 face with open mouth
  • 😦 frowning face with open mouth
  • 😧 anguished face
  • 😟 worried face
  • 😛 face with stuck-out tongue
  • 😗 kissing face
  • 😙 kissing face with smiling eyes

Why does it matter? Well Unicode 6 and the ISO 10646 standard outlines hundreds of different emoji characters and their associated alt text, so it’s a bit strange that Google missed implementing some of them. This only becomes even more embarrassing when you find out that Google was one of several parties who pushed for emoji inclusion in Unicode and helped draft the description text in the first place! Alt text not only makes images machine readable so it can be indexed and searched, but I’d say it is also pretty darn helpful if you rely on a screen reader to navigate the web. If emojis are designed to express user emotion, shouldn’t this information be expressed in ways that are available for people who might not be able to see it?

To make things even stranger, for some emojis Google decided ignore the standard they helped publish and write their own alt text. For example:

  • 😇 smiling face with halo is listed by Hangouts as ‘angel face’
  • 😈 smiling face with horns as ‘devil face’
  • 😘 face throwing a kiss as ‘blowing a kiss’
  • 😖 confounded face as ‘confused face’, and
  • 😣 persevering face as ‘determined face’

While these are minor variations and perhaps a moot point, the purpose of a standard is to ensure uniformity across platforms so that information can be understood equally by all.  Perhaps it could be argued that the alt text for these characters were ‘improved’ by Google. In the case of ‘blowing a kiss’, I’d have to agree, but these changes should be adopted at the standard level rather than by individual vendors.

And as a final interesting point regarding Android’s emoji character representation, the following icons have descriptions that might not coincide with the meaning people might be attempting to convey through them. For example:

  • 🙆 face with ok gesture – As it’s hard to see the thumbs, users can confuse this with an excitement face. It’s similar, but I read this more as ‘yay’ than ‘ok’.
  • 🙍 person frowning – As frowning is typically identified with the colon and closing bracket (U+2639) this emoji can be confused for stoic or a ‘zen’ expression. On iOS, a person is used rather than a smiley which does a better job of highlighting this emotional state.
  • 😫 tired face – That’s right, this is a tired face. Not an ‘I’m stressing out’ or ‘gosh I’m constipated’ face. A tired face.
  • 😪 sleepy face – I actually never knew that this was supposed to be until I checked the alt text. Did you know it was sleepy face? That white blob is supposed to be drool… I guess.
  • face savoring delicious food – I have seen and used this emoji so frequently as an intended mischievous grin the alt text really caught me off guard. For the record, I’m not usually that mischievous.
  • 😵 dizzy face. For Android users, this can be confusing as the eyes are crossed together and the mouth is open wider than the loudly crying face. It’s more apparent on iOS what is being conveyed.

p.s. If you like puzzles, one of the yellow Android emoji characters is actually NOT from the emotions Unicode block and is listed under the ‘miscellaneous’ block instead. Can you guess which one? (don’t cheat!)

Final note

I should note the irony of this post. Despite my chastising Google over using background-image to display emoji characters in Hangouts inside Google Plus, this article commits the exact same act. Due to limitations with allowable code in WordPress posts (not pages), UTF8 and MySQL, it would have been impossible to display the emoji characters within this article without using a plugin. If you’re running MySQL 5.5.14 or higher, you actually can display emoji characters inside WordPress posts if you’re willing to fiddle with changing the character set from UTF8 to UTF8mb4. As this site is on a shared server, it’s running an older version of MySQL and thus cannot use this workaround. For that, I apologize.


Further reading

A cat with a very angry look stares into the camera

Cat sitting

I’m currently cat sitting my brother and sister-in-law’s cat. She’s actually decently cheerful, but you’d never know it from this photo.


I’ve done a pretty horrible job of keeping this site running, instead watching from afar as it slowly rots away. The problem with keeping a website (or anything really) maintained is that the longer you procrastinate doing what needs to be done, the greater the chance you’ll never actually do it.

With a myriad of social media platforms out there, I’ve often questioned the necessity to manage an individual blog, especially when the people I interact with look instead to sites like Facebook, Twitter, Google Plus to find out what’s happening in my life. There are far easier ways for me to share pictures, videos and other stuff than uploading it all here, so  why would someone therefore want to visit this site when they can get updates from me and all their other friends in a single place?

In light of that, this website will always be slightly outdated and behind. I’m ok with that, but the idea of it stagnating bothers me. As such, I’ve set myself four goals to ensure that this site remains relevant.

My first priority is to strip all the unnecessary themes,  plugins and code from this site. It contributes to clutter and is just frustrating to manage. I want simplicity, both aesthetically and programmatically. While I made an effort with the last revision to move to a single-column responsive format, the theme (and myself) introduced a significant amount of unnecessary code which must first be fixed. I’m going to make a conscious effort to ensure that all code, pages, etc is validated correctly before posting. 

The second part is to revamp whatever I can to make this site fully accessible. Since taking on an accessibility project at work, I’m disturbed at how little of the web is fully accessible for people who have low vision or are using screen readers. I realize WordPress has several problems that can post challenges for accessibility, but I’ll try my best to work to find solutions.

The third is to use this space to develop my HTML and CSS skills. I feel that I’ve come a long way from where I was a few years ago, but there is much to learn and I am still making mistakes.  With the introduction of HTML5 and requirements under the WCAG 2.0, I’m finding that methods I used to consider appropriate are either entirely outdated now or were never acceptable in the first place. 

The fourth is to try to use this site as an aggregate of the ‘best material I share on other platforms, but instead of simply sharing something with a caption like “this is awesome”, I’ll include a more thought out reason for why I appreciated it (or didn’t). Sharing original content will take priority though, which should encourage me to start bringing my camera with me.

I realize nobody actually reads this, but for me, writing it out is part of the process to fixing this site and helping me get things back on track. Who knows what the future might bring!

- Kate

permanently moved