There's a small detail on this blog that I've gotten more comments about than almost anything else: the reading time estimate under each post title.
"5 min read." "12 min read."
It sounds trivial. It isn't.
Why reading time matters
When someone lands on a blog post, they're making a subconscious deal with you: is this worth my time? A wall of text with no structure and no signal about length is a friction point. The reader doesn't know if they're about to spend three minutes or thirty.
Reading time gives them that answer immediately. It sets an expectation. And expectations managed are friction removed.
The psychology behind it
There's a reason progress bars exist in every well-designed app. Humans tolerate known durations far better than unknown ones. A five-minute wait feels shorter when you know it's five minutes than when you're staring at a spinner.
Reading time works the same way. The reader opts in knowing the cost. That's a fundamentally different relationship than one where the cost is hidden.
How to implement it
If you're using MDX with Next.js (like this blog), adding reading time is a single package and two lines of code:
npm install reading-timeimport readingTime from "reading-time";
const { text } = readingTime(content); // "5 min read"Store it in your post metadata and display it wherever you show post previews.
A few things I learned
- Display it on both the index page and the post itself — people scan before they click
- Don't overthink the accuracy — readers know it's an estimate
- Pair it with the publish date for full context: March 15, 2026 · 4 min read
The bottom line
The best UX improvements are the ones that feel invisible when they're there but obvious when they're missing. Reading time is one of those.
Add it to your blog. Your readers will thank you without knowing why.