# How long does it take to read X number of characters?

I am creating an iPhone app where I need to show transient confirmation messages (called a toast in Android). For example, when a user submits a comment, I pop up a message saying "thanks for submitting your comment". Shortly after, the message will fade away. There exist many such transient messages all over my iPhone app. I realize that Android and two preset times - "short" and "long", but I'm recreating it on iPhone where I have total control.

What I would like to do is to calculate the optimal time to show each message based off of the number of characters in that message. I want users to have enough time to comfortably read the message, but not so long that the message impedes their usage of the app.

``````X = number of characters.
F(X) = seconds to read entire sentence given X
``````

Is it linear? That is, if it takes 0.5 seconds to read "hello", it would take 1.0 second to read "hello world".

``````F(X) = 0.1 * X
``````

Does it decay? That is, as people read a long sentence, their reading speed increases?

``````F(X) = 1 / X
``````

``````F(X) = X ^ 2
``````
-
This has also been posted on Cognitive Sciences: cogsci.stackexchange.com/questions/1147/… (migrated actually) but I personally think it's just fine here as well, if there are no objections. – Ben Brocka Jun 16 '12 at 0:43
I re-posted it on UX before I realized a mod migrated it to CogSci. – JoJo Jun 16 '12 at 0:46
I wasn't chastising, I just figured I should add a link to the other so people can see the answers on both sites. – Ben Brocka Jun 16 '12 at 1:59

According to wikipedia's speed reading entry it's 200 wpm

I really don't think the science is the main issue with this solution. You need to test and evaluate real use.

-
Thanks for the revision, @Lisa :-) – Jørn E. Angeltveit Jun 18 '12 at 13:39

Adult literate people don't read by the character. They do that only for foreign languages in the first stages of learning that language, and even that mostly for languages using a script very different from the languages they do know (as an English speaker would for Arabic, but not for German). Otherwise the word registers in the brain as a whole, pretty much immediately. Perhaps for the word "encyclopedia" it would take longer than for the word "ant", but the difference is a matter of milliseconds at best, and probably not even that. Also, it's both extremely subjective (based on how frequently that person uses that word) and extremely difficult to measure.

In short, just do some user testing. Get a few people, show them a few messages with different fadeout times, and see what feels the most comfortable. Or play around with some apps already doing it (preferably by a developer who has probably researched this - e.g. Apple), and try to reverse engineer their solution.

-

I realize this is a fairly old question, but I got here from google so others probably will too.

I had a similar situation, I needed to show a notification to a user (on a desktop) that could contain any number of words, and of course show this notification for an appropriate amount of time.

I did a little research and drew from the answers from another question, and this is what I came up with (in python):

``````def getWaitTime(self, text):
''' Calculate the amount of time needed to read the notification '''
wpm = 180  # readable words per minute
word_length = 5  # standardized number of chars in calculable word
words = len(text)/word_length
words_time = ((words/wpm)*60)*1000

bonus = 1000  # extra time

return delay + words_time + bonus
``````

180 words-per-minute is suggested on the the Wikipedia article for reading on a computer (as opposed to on paper), though perhaps it is a little slow, my notifications will have obscure file names that might take a little longer to read. This is also why I included the `bonus` time.

The `delay` time is to account for the user noticing the notification in the bottom right corner and starting to read it.

The same Wikipedia article mentions that words-per-minute is not technically true, since a "word" is counted every 5 characters (including spaces and punctuation):

For example, the phrase "I run" counts as one word, but "rhinoceros" and "let's talk" both count as two.

-
I'm not sure why the syntax highlighting isn't working there. If you want it, the same code is here: pasteall.org/53079/python – Greg Zaal Jul 26 '14 at 10:18