{"id":282930,"date":"2026-02-23T04:16:29","date_gmt":"2026-02-23T04:16:29","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/reading-time-estimator-progress-bar\/"},"modified":"2026-02-24T05:32:03","modified_gmt":"2026-02-24T05:32:03","slug":"nuvora-reading-time-progress-bar","status":"publish","type":"plugin","link":"https:\/\/so.wordpress.org\/plugins\/nuvora-reading-time-progress-bar\/","author":14835132,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.0.0","stable_tag":"1.0.0","tested":"6.9.4","requires":"5.9","requires_php":"8.0","requires_plugins":null,"header_name":"Nuvora Reading Time & Progress Bar","header_author":"Sehrish Anam","header_description":"A minimalist, accessible reading time estimator with a smooth scroll progress bar. Features AI-assisted reading time adjustment, per-post overrides, and full ARIA support. No tracking. No upsells.","assets_banners_color":"8ba0b2","last_updated":"2026-02-24 05:32:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/sehrishanam1\/plugins","header_author_uri":"https:\/\/github.com\/sehrishanam1\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":168,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"meerab123","date":"2026-02-24 05:32:03"}},"upgrade_notice":{"1.0.0":"<p>Initial release. No upgrade steps needed.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3467299,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3467299,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3467299,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3467299,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3467312,"resolution":"1","location":"assets","locale":""},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3467299,"resolution":"2","location":"assets","locale":""},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3467299,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3467299,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3467299,"resolution":"5","location":"assets","locale":""}},"screenshots":{"1":"Main Plugin Image","2":"Main Plugin Settings","3":"Front-end: Scroll progress bar at bottom of screen and reading time badge below post title","4":"Elementor Widget with its settings","5":"Front-end: Elementor widget view in the middle of post"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[147293,9351,43466,225949,27629],"plugin_category":[34],"plugin_contributors":[256394],"plugin_business_model":[],"class_list":["post-282930","plugin","type-plugin","status-publish","hentry","plugin_tags-elementor-widget","plugin_tags-progress-bar","plugin_tags-read-time","plugin_tags-reading-progress","plugin_tags-reading-time","plugin_category-accessibility","plugin_contributors-meerab123","plugin_committers-meerab123"],"banners":{"banner":"https:\/\/ps.w.org\/nuvora-reading-time-progress-bar\/assets\/banner-772x250.png?rev=3467299","banner_2x":"https:\/\/ps.w.org\/nuvora-reading-time-progress-bar\/assets\/banner-1544x500.png?rev=3467299","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/nuvora-reading-time-progress-bar\/assets\/icon-128x128.png?rev=3467299","icon_2x":"https:\/\/ps.w.org\/nuvora-reading-time-progress-bar\/assets\/icon-256x256.png?rev=3467299","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/nuvora-reading-time-progress-bar\/assets\/screenshot-1.png?rev=3467312","caption":"Main Plugin Image"},{"src":"https:\/\/ps.w.org\/nuvora-reading-time-progress-bar\/assets\/screenshot-2.png?rev=3467299","caption":"Main Plugin Settings"},{"src":"https:\/\/ps.w.org\/nuvora-reading-time-progress-bar\/assets\/screenshot-3.png?rev=3467299","caption":"Front-end: Scroll progress bar at bottom of screen and reading time badge below post title"},{"src":"https:\/\/ps.w.org\/nuvora-reading-time-progress-bar\/assets\/screenshot-4.png?rev=3467299","caption":"Elementor Widget with its settings"},{"src":"https:\/\/ps.w.org\/nuvora-reading-time-progress-bar\/assets\/screenshot-5.png?rev=3467299","caption":"Front-end: Elementor widget view in the middle of post"}],"raw_content":"<!--section=description-->\n<p><strong>Nuvora Reading Time &amp; Progress Bar<\/strong> is a lightweight, developer-friendly plugin that adds two things readers love:<\/p>\n\n<ol>\n<li><strong>A reading time badge<\/strong> \u2014 shown before\/after your post content.<\/li>\n<li><strong>A scroll progress bar<\/strong> \u2014 a sleek bar at the top (or bottom) of the screen that fills as the reader scrolls.<\/li>\n<\/ol>\n\n<h4>\u2728 What makes it different?<\/h4>\n\n<p><strong>AI-assisted reading time adjustment<\/strong>\nPosts with lots of headings, bullet lists, and short paragraphs are scanned faster by readers. The plugin detects structure in your content and intelligently reduces the estimate \u2014 labelled \"AI-adjusted\" so readers know.<\/p>\n\n<p><strong>Per-post overrides via meta box<\/strong>\nOverride the calculated reading time for any post. Hide the badge or progress bar per-post, right from the editor.<\/p>\n\n<p><strong>Accessibility-first design<\/strong>\n- Semantic <code>role=\"progressbar\"<\/code> with live <code>aria-valuenow<\/code> updates\n- Meaningful <code>aria-label<\/code> on every element\n- Keyboard-focusable progress bar\n- Fully respects <code>prefers-reduced-motion<\/code>\n- Screen-reader-friendly badge with word count in ARIA label<\/p>\n\n<p><strong>Minimal &amp; performant<\/strong>\n- No jQuery dependency (vanilla JS)\n- No external assets, fonts, or CDN calls\n- No database writes beyond settings\n- No user tracking whatsoever\n- ~1.5 KB JS \/ ~1.2 KB CSS (gzipped)<\/p>\n\n<p><strong>Elementor Widget included<\/strong>\n- Drag and drop the Reading Time widget directly in Elementor\n- Full widget controls for badge display and styling\n- Works seamlessly with Elementor's responsive settings<\/p>\n\n<p><strong>Developer-friendly<\/strong>\n- Template tags: <code>rte_the_reading_time()<\/code>, <code>rte_get_reading_time()<\/code>\n- Filters: <code>rte_badge_html<\/code>, <code>rte_show_badge<\/code>, <code>rte_ai_adjustment_factor<\/code>\n- CJK (Chinese\/Japanese\/Korean) content support\n- Per-post type configuration<\/p>\n\n<h4>\ud83d\udcd0 Settings<\/h4>\n\n<ul>\n<li>Custom WPM (words per minute) \u2014 default 238<\/li>\n<li>Enable\/disable AI-assisted adjustment<\/li>\n<li>Badge position: before content, after content, or both<\/li>\n<li>Choose which post types show the badge and\/or progress bar<\/li>\n<li>Customise badge label text (use <code>{time}<\/code> placeholder)<\/li>\n<li>Pick progress bar color, height (1\u201310 px), position (top\/bottom)<\/li>\n<li>Optional percentage tooltip on hover<\/li>\n<li>Respect <code>prefers-reduced-motion<\/code> toggle<\/li>\n<\/ul>\n\n<h4>\ud83d\udd27 Template Tags<\/h4>\n\n<p>Use in your theme:<\/p>\n\n<pre><code>&lt;?php rte_the_reading_time(); \/\/ echoes \"5 min read\" ?&gt;\n\n&lt;?php $data = rte_get_reading_time(); echo $data['minutes']; ?&gt;\n<\/code><\/pre>\n\n<h4>\ud83e\ude9d Filters<\/h4>\n\n<p><strong>Customise badge HTML:<\/strong>\n    add_filter( 'rte_badge_html', function( $html, $result ) { return $html; }, 10, 2 );<\/p>\n\n<p><strong>Disable badge conditionally:<\/strong>\n    add_filter( 'rte_show_badge', '__return_false' );<\/p>\n\n<p><strong>Tweak AI adjustment factor (0.75\u20131.0):<\/strong>\n    add_filter( 'rte_ai_adjustment_factor', function( $factor, $html ) { return 0.85; }, 10, 2 );<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>nuvora-reading-time-progress-bar<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through <strong>Plugins<\/strong> in WordPress admin<\/li>\n<li>Go to <strong>Settings \u2192 Reading Time<\/strong> to configure<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20use%20any%20external%20services%3F\"><h3>Does this plugin use any external services?<\/h3><\/dt>\n<dd><p>No. Everything runs locally on your server. No API calls, no tracking.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20block%20editor%20%28gutenberg%29%3F\"><h3>Does it work with the Block Editor (Gutenberg)?<\/h3><\/dt>\n<dd><p>Yes, fully compatible with both the Block Editor and Classic Editor.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20on%20pages%2C%20not%20just%20posts%3F\"><h3>Can I use it on Pages, not just Posts?<\/h3><\/dt>\n<dd><p>Yes. In Settings, check \"Page\" under \"Show badge on\" and \"Show progress bar on\".<\/p><\/dd>\n<dt id=\"does%20it%20support%20woocommerce%20products%20or%20custom%20post%20types%3F\"><h3>Does it support WooCommerce products or custom post types?<\/h3><\/dt>\n<dd><p>Yes. Any public post type will appear in the settings checkboxes.<\/p><\/dd>\n<dt id=\"what%20does%20%22ai-assisted%20adjustment%22%20mean%3F\"><h3>What does \"AI-assisted adjustment\" mean?<\/h3><\/dt>\n<dd><p>The plugin analyses your post's structure (heading density, list ratio, average paragraph length). If it detects highly structured, scannable content, it applies a small reduction factor (up to 25% faster). No external AI service is used \u2014 it's a smart local heuristic.<\/p><\/dd>\n<dt id=\"how%20can%20i%20override%20the%20reading%20time%20for%20a%20specific%20post%3F\"><h3>How can I override the reading time for a specific post?<\/h3><\/dt>\n<dd><p>Open the post in the editor. Find the <strong>Reading Time<\/strong> meta box in the sidebar. Enter a number (in minutes) to override the auto-calculated value, or leave it blank to use auto.<\/p><\/dd>\n<dt id=\"can%20i%20hide%20the%20badge%2Fprogress%20bar%20for%20one%20post%20only%3F\"><h3>Can I hide the badge\/progress bar for one post only?<\/h3><\/dt>\n<dd><p>Yes. Use the checkboxes in the <strong>Reading Time<\/strong> meta box.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Reading time badge with AI-assisted adjustment.<\/li>\n<li>Scroll progress bar with ARIA support.<\/li>\n<li>Per-post meta box overrides.<\/li>\n<li>CJK content support.<\/li>\n<li>Template tags and developer filters.<\/li>\n<\/ul>","raw_excerpt":"A minimalist, accessible reading time badge + scroll progress bar. AI-assisted time adjustment, per-post overrides, zero tracking.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/282930","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=282930"}],"author":[{"embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/meerab123"}],"wp:attachment":[{"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=282930"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=282930"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=282930"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=282930"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=282930"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/so.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=282930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}