Calculating Read time in JavaScript

aboutdavid

David

Posted on October 9, 2020

Calculating Read time in JavaScript

This is a very simple task. First, we need a sentence to try this out. Let's use "The quick brown fox jumps over the lazy dog". A few thing we need to know is:

  • The average word is 5 in the English dictionary.
  • The average Words Per Minute for reading (WPM) is 200-250, which averages to 225 WPM. (https://archive.is/FRfWJ).

So, we have to split the text every 5 letters and divide it by 225 WPM. This can easily be done with JavaScript:

"The quick brown fox jumps over the lazy dog.".match(/.{1,5}/g).length/225;
Enter fullscreen mode Exit fullscreen mode

Which should return a value of 0.04. So are we done? No. We also need make it human readable. First we need to round to the nearest whole number by using Math.round() :

Math.round("The quick brown fox jumps over the lazy dog.".match(/.{1,5}/g).length/225);
Enter fullscreen mode Exit fullscreen mode

Which should return 0. Now we are almost done. Let's make it human readable. We can give it summaries using if/else statements.

Lets use:

  • Less than a minute read - for read times under a minute.
  • n min read - for read times that are over a minute.

as statements.

var rt = Math.round("The quick brown fox jumps over the lazy dog.".match(/.{1,5}/g).length/225); if (rt <= 0) { rt = "Less than a minute read." } else if (rt === 1){ rt = `${rt} min read.` } else if (isNaN(rt)){ rt = "Failed to calculate readtime!" } else { rt = "Failed to calculate readtime!" }
Enter fullscreen mode Exit fullscreen mode

which returns Less than a minute read.

Let's make it ready for "production" by wrapping it around a function and compressing it using JScompress. I put the source code on P2Pbin, which you can find here.

๐Ÿ’– ๐Ÿ’ช ๐Ÿ™… ๐Ÿšฉ
aboutdavid
David

Posted on October 9, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

ยฉ TheLazy.dev

About