Show visitors how long a post takes to read, for example "1,240 words, 7 minutes read time" or "7 min read". There are three ways to add it:
- Automatically, before or after the content of chosen post types, with the Reading Time module.
- Anywhere, with the
[esse_reading_time]shortcode. - In the block editor or Site Editor, with the Reading Time block.
All three use the same word counting, so the numbers always match.
The Reading Time module
Switch it on: Essentials → Modules → Reading Time.
Configure it: Essentials → Reading Time.
| Setting | What it does | Default |
|---|---|---|
| Display Position | Before content or After content. | Before content |
| Post Types | Which post types show the reading time on single posts. If you untick everything, Post is used. | Post |
| Words Per Minute | The reading speed used for the estimate. | 200 |
| Format | Long ("5 minutes read time") or Short ("5 min read"). | Long |
| Show Word Count | Add the word count, for example "30 words, 1 minute read time". | On |
| Label | Optional text before the reading time, such as "Reading time:". Leave empty to hide it. | (empty) |
| Archives | Also show the reading time for each post in blog, archive and search listings, next to the excerpt or content. Uses the post types above. | Off |
The reading time is always at least 1 minute, and it’s rounded up.
How words are counted
Shortcodes and HTML are removed first, so only the words readers actually see are counted. Counting works in every language:
- Languages that separate words with spaces (English, Spanish, Bengali, Hindi, Arabic, Russian and so on) are counted word by word, including accented letters and combining marks.
- Chinese and Japanese don’t use spaces between words, so each character counts as one word.
Styles load only on the post types where reading time is shown, and on listings when Archives is on.
The [esse_reading_time] shortcode
Place the reading time in a widget, a page builder, a classic editor post or a theme template. The shortcode works whether or not the module adds reading time automatically, as long as the module is switched on.
[esse_reading_time]
| Attribute | What it does | Default |
|---|---|---|
post_id | Show the reading time of a specific post instead of the current one. | Current post |
format | long or short. | The module’s Format setting |
words | yes or no to show or hide the word count. | The module’s Show Word Count setting |
label | Text shown before the reading time. | The module’s Label setting |
Examples
[esse_reading_time format="short" words="no"]
[esse_reading_time label="Reading time:"]
[esse_reading_time post_id="42"]
In a PHP template: <?php echo do_shortcode( '[esse_reading_time]' ); ?>
The shortcode uses the module’s Words Per Minute setting.
The Reading Time block
Find Reading Time in the block inserter under the Essentials category, or type /reading time. The block is registered by the plugin and works whether or not the Reading Time module is switched on.
Block settings (sidebar)
| Setting | What it does | Default |
|---|---|---|
| Words per minute | Reading speed for this block. | 200 |
| Show word count | Prefix the word count. | On |
| Show icon | Show the clock icon. | On |
| Label | Optional text before the reading time. | (empty) |
Styling: the block supports alignment (left, center, right, wide), text and background color, font size and line height, padding and margin, border (color, radius, style, width) and shadow, all from the standard block toolbar and sidebar.
In the Site Editor and Query Loops: add the block to your single post template to show it on every post, or put it inside a Query Loop (for example on your blog or archive template) to show each post’s own reading time.
The block has its own settings, so it doesn’t use the module’s Format or Label. It always uses the long format.
Customizing the markup
Developers can change the module and shortcode HTML with the esse_module_esse_reading_time_output filter, and reuse the counting with esse_get_reading_time(). See the Developer Reference.
Troubleshooting
It shows on posts but not on pages. Tick Page under Post Types.
It doesn’t show in my blog listing. Switch Archives on. Some themes show neither the excerpt nor the content in listings. In that case, add the Reading Time block to your theme’s Query Loop instead.
It appears twice. You probably have the module adding it automatically and a block or shortcode in the same place. Remove one, or untick that post type in the module’s Post Types.
The estimate seems too long or short. Adjust Words Per Minute. 200 is a comfortable average, and 230–250 suits lighter content.