ReadingTime
Syntax
PAGE.ReadingTime
Returns
int
The estimated reading time is calculated by dividing the number of words in the content by the reading speed.
By default, Hugo assumes a reading speed of 212 words per minute. For CJK languages, it assumes 500 words per minute.
{{ printf "Estimated reading time: %d minutes" .ReadingTime }}
Reading speed varies by language. Create language-specific estimated reading times on your multilingual site using site parameters.
hugo.
 
 
 
languages:
  de:
    contentDir: content/de
    languageCode: de-DE
    languageName: Deutsch
    params:
      reading_speed: 179
    weight: 2
  en:
    contentDir: content/en
    languageCode: en-US
    languageName: English
    params:
      reading_speed: 228
    weight: 1
[languages]
  [languages.de]
    contentDir = 'content/de'
    languageCode = 'de-DE'
    languageName = 'Deutsch'
    weight = 2
    [languages.de.params]
      reading_speed = 179
  [languages.en]
    contentDir = 'content/en'
    languageCode = 'en-US'
    languageName = 'English'
    weight = 1
    [languages.en.params]
      reading_speed = 228
{
   "languages": {
      "de": {
         "contentDir": "content/de",
         "languageCode": "de-DE",
         "languageName": "Deutsch",
         "params": {
            "reading_speed": 179
         },
         "weight": 2
      },
      "en": {
         "contentDir": "content/en",
         "languageCode": "en-US",
         "languageName": "English",
         "params": {
            "reading_speed": 228
         },
         "weight": 1
      }
   }
}
Then in your template:
{{ $readingTime := div (float .WordCount) .Site.Params.reading_speed }}
{{ $readingTime = math.Ceil $readingTime }}
We cast the .WordCount to a float to obtain a float when we divide by the reading speed. Then round up to the nearest integer.