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, 2012 at 0:43
  • I re-posted it on UX before I realized a mod migrated it to CogSci.
    – JoJo
    Jun 16, 2012 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, 2012 at 1:59

4 Answers 4


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.

  • Strongly agree with the "test and evaluate". There are other factors that influence reading speed: text size, text & BG color, font choice, a user's familiarity with the language, a user's familiarity with the terms used, complexity of the message communicated, references to other UI elements or the need for short-term memory recall.
    – Benjamin S
    Aug 16, 2022 at 16:31
  • ...but roughly "3 or 4 words per second"
    – ashleedawg
    Nov 29, 2022 at 14:41

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.


Measuring reading time by characters is approaching the problem in the wrong way, perhaps.

Many readers read by "sight words": snapshotting an entire word in their mind and recognizing the whole of it as they read. In the USA, the Dolch and Fry sight word lists are taught, each with the most common 1000 words in the English language. This is why a word with 9 characters like "yesterday" (a sight word) will be read faster than a word with 6 characters like "abjure" (a non-sight word).

So I would prefer to measure words per minute (WPM) where sight words and uncommon words are counted alike as 1 word. And over a body of text, the law of large numbers works for you and you get a clear picture of how long the text takes to read.

My simple answer for selecting an average WPM, is to look at what smarter people than me have already done.

From Read time on Medium:

Read time is based on the average reading speed of an adult (roughly 265 WPM). We take the total word count of a post and translate it into minutes, with an adjustment made for images. For posts in Chinese, Japanese and Korean, it's a function of number of characters (500 characters/min) with an adjustment made for images.

If you must use characters to determine the size of words, know that the average amount of characters per word will vary depending on the audience the text is intended for. According to studies by Wylie Communications:

  • The New York Times averages 4.9 characters per word.
  • The Wall Street Journal averages 4.8 characters per word.
  • The BBC averages 4.7 characters per word.

The Google books corpus averages 4.79 characters per word.

The problem with the most popular answer

This is to say that the calculation done (and the reasoning behind) the most popular answer above is incorrect. The author states:

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.

But this section of the Wikipedia article is under the "Alphanumeric entry" section, not the reading section! They are talking about how to measure keystrokes for data entry.

Is there a difference between 4.7 and 5 average characters per word? In some applications, yes. Wolf Garbe, founder of SeekStorm, optimized a spell checker by using the lower number:

The average word length in English language is 4.7 characters.(http://norvig.com/mayzner.html). If you use maximum edit distance=5 for spelling correction then the algorithm would return (too) many spelling correction suggestions, which have nothing in common with the input word.

Failures of previous studies

The Wikipedia article on Words per minute > Reading and comprehension is not a great resource for understanding the WPM of silent reading by a reader on a screen. Rather they discuss only 3 kinds of reading:

  1. Reading a text aloud, in which English-language readers scored 228±30 WPM.
  2. Proofreading text closely on paper, in which English-language readers scored 200 WPM.
  3. Proofreading text closely on old pre-1992 computer monitors, in which English-language readers scored 180 WPM.

Meta-analyses like "How many words do we read per minute? A review and meta-analysis of reading rate" often include numbers irrelevant to our use case. E.g. on paper, on old or low contrast monitors, reading aloud, proofreading, etc. Thus, they also "get it wrong" for us, arriving at 238 WPM.


Use words per minute instead of characters per minute. I would use 265 (as concluded by Medium, a modern application that has put in the research) and give time for images and scrolling behavior. I would lower the number if the text was more difficult or technical (though first I would try to simplify my text).

If you must convert words per minute to characters per minute, use a number like 4.7 average characters per word. Or better yet, measure your own average characters per word in examples of your own text. (And consider using median characters per word instead of average if you have a lot of text with a few outliers.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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