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.

enter image description here

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

Or is it quadratic? That is, each additional character ads more time than the previous word?

F(X) = X ^ 2
  • This has also been posted on Psychology & Neuroscience: 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.


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

    delay = 1500  # milliseconds before user starts reading the notification
    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.


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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.