How to Add Reading Time to Your WordPress Posts (No Plugin Needed)

Ever wondered how long it takes someone to read your blog post? Adding a simple “X min read” message is a great way to set expectations for your readers and keep them engaged. The best part is you don’t need a plugin or any advanced coding knowledge to add it to your WordPress site.

This guide will show you how to set up a reading time function and choose where you want it to appear, either in your layout or directly within your post content.

What You’ll Be Doing

Adding a small piece of code to your site

Choosing where the reading time should appear (template or content)

No plugin required, just one simple function

Step 1: Add the Reading Time Function

This is the core of it all, a short PHP function that counts the words in your post and estimates how many minutes it would take someone to read it.

To do this:

Log in to your WordPress dashboard.

Either:

Go to Appearance → Theme File Editor, and scroll to the bottom of your functions.php file

Or, use a plugin like Code Snippets (recommended for beginners) and create a new snippet

function get_read_time(string $post_content = '', int $wpm = 200): string {
if (empty($post_content)) {
$post_content = get_post_field('post_content', get_the_ID());
}

$word_count = str_word_count(strip_tags($post_content));
$minutes = ceil($word_count / $wpm);

return $minutes . ' min read';
}

3. Save or update the file or snippet

The function is now available. Next, decide how you want to display the reading time.This approach works best on a child theme or a theme you’ve built yourself, so future updates don’t overwrite your changes. If you’re using Code Snippets, your changes are safe regardless of theme updates.

Step 2: Choose How to Display the Reading Time

You’ll need to choose one of the following two options.

Option A: Add It to the Theme Automatically

If you want the reading time to appear in the same place on every blog post, you can add it to your theme template files.

To do this:

Open your theme’s post template file (such as single.php or a block template if you’re using a Full Site Editing theme).

Paste this line of code wherever you’d like the reading time to appear:

echo get_read_time();

You could place it above the post title or before the main content. This method will apply it consistently across your site.

Option B: Use a Shortcode Inside the Post Content

If you prefer to control where it appears in each post individually, you can create a shortcode.

To do this, add the following code to your functions.php file, just below the main function:

add_shortcode('read_time', function () { return get_reading_time(); });

Now, when editing a post in WordPress, you can type this directly into the content:

[read_time]

This will show something like:

3 min read

Optional Adjustments

If your audience tends to read quickly or slowly, you can change the 200 to a different number to suit your needs
If you’d like to style the output, you can wrap it in a div or span with a CSS class and style it in your theme
This approach works with any theme and doesn’t require any additional plugins