Estimate the reading time of a text or a text file.

elixir, estimate, minutes, phoenix, readingtime, text, words



Build Status

Estimate the reading time of a text or a text file


You can donwload retim or you can install it as package, to use it in your projects. You can found it at Hex. Also you can add retim to your list of dependencies in mix.exs:

def deps do
  [{:retim, "~> 0.2.3"}]

Supported languages:

  • English: "en"
  • Greek: "gr"
  • Italian: "it"
  • Spanish: "es"
  • Norwegian "no"
  • German "ge"
  • Russian "ru"

How to use it

Estimate the reading time of a setence:

iex> Retim.count("Hello World")
"1 minute"

You can change the default language:

iex> Retim.count("Hello World", "it")
"1 minuto"

The average reading time per minute is 180 words. If you want to change it you can pass a second argument:

iex> Retim.count("Hello World", "en", 120)
"1 minute"

If you want to change only the reading time, you need to choose the language or leave the second argument blank:

iex> Retim.count("Hello World", "", 150)

Read words from a file:

iex> Retim.count_file("")
"4 minutes"

Read a file and change the average reading time to 120 words / per minute:

iex> Retim.count_file("", "en", 120)
"7 minutes"

Use Retim in Phoenix

Add retim on your dependencies:

 defp deps do
    [{:phoenix, "~> 1.2.1"},
     {:cowboy, "~> 1.0"},
     {:retim, "~> 0.2.3"}]

Run deps.get on your terminal:

mix deps.get


Generate a post:

mix phoenix.gen.html Post posts title:string body:text

To count the reading time of the body text, add count(@post.body) on your templates(post/show.html.eex):

<%= Retim.count(@post.body) %>


alt tag

To change the language add:

<%= Retim.count(@post.body, "es") %>

Result (with spanish)

alt tag


  • Add other languages
  • Add new print format (Example: 3 minutes and 10 seconds)