[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f19CneIxdEGtgAHaoRR_5MrX6_5B7ccqjQwrV9Z1KIYY":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":22,"download_link":23,"security_score":24,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27,"vulnerabilities":28,"developer":29,"crawl_stats":26,"alternatives":37,"analysis":135,"fingerprints":282},"read-meter","Read Meter – Reading Time & Progress Bar","1.0.11","Brainstorm Force","https:\u002F\u002Fprofiles.wordpress.org\u002Fbrainstormforce\u002F","\u003Cp>People often skip reading posts with the fear of the time they’ll spend reading it. Are you losing readers too?\u003C\u002Fp>\n\u003Cp>The Read Meter plugin displays the estimated reading time for blog posts along with a progress bar. It works great to give visitors a quick idea about the time needed to read a post and encourages them to go on till the end.\u003C\u002Fp>\n\u003Cp>Usually, visitors try to scan the entire post at first glance and grasp as much as information possible from the post. Reading time specified in minutes motivates users to read the post.\u003C\u002Fp>\n\u003Cp>A handy progress bar will show the reader’s position on the post. As the reader scrolls the page, the progress bar indicates the remaining part of the post. This lets readers know how far have they reached and how much more do they have to go on.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fbsf.io\u002Fread-meter-demo\" rel=\"nofollow ugc\">Try it out on a free dummy site\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>The plugin uses an advanced image time calculation technique. In case your post contains images, the plugin calculates the time to view those images as well. It adds 12 seconds for the first image, 11 seconds for the second image and so on till the 10th image. After that, it adds 3 seconds for each further image.\u003C\u002Fp>\n\u003Cp>It works great to give visitors a quick idea about the time needed to read a post and encourages them to go on till the end.\u003C\u002Fp>\n\u003Cp>Here are some key features of the plugin –\u003C\u002Fp>\n\u003Cul>\n\u003Cli>A simple shortcode – \u003Ccode>[read_meter]\u003C\u002Fcode>,  gives you the flexibility to add read time anywhere on the site.\u003C\u002Fli>\n\u003Cli>A simple ID attribute to the shortcode can display reading time of that particular post\u002Fpage irrespective of where the shortcode is added – \u003Ccode>[read_meter id=47]\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Even if the post is updated multiple times, the plugin will calculate the read time for the most recent version of the post.\u003C\u002Fli>\n\u003Cli>You can choose to display the read time and a progress bar on various post types.\u003C\u002Fli>\n\u003Cli>You can decide whether you would like to include images and comments in the read time and progress bar.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>That’s not all! Here are some more controls you get over \u003Cstrong>Reading Time\u003C\u002Fstrong> –\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Display the read time on a blog\u002Farchive page or single post page\u003C\u002Fli>\n\u003Cli>Show the estimated time it takes to read any blog\u002Farchive page or single post page, which can be displayed on any section of the website\u003C\u002Fli>\n\u003Cli>Set the read time position – i.e. Above\u002FBelow title or above content\u003C\u002Fli>\n\u003Cli>Set a read time Prefix and Postfix\u003C\u002Fli>\n\u003Cli>Use various read time styling options – Spacing, Background color, Font size, etc.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Specific controls for \u003Cstrong>Progress Bar\u003C\u002Fstrong> –\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Set a progress bar position – i.e. Top\u002F Bottom of the page.\u003C\u002Fli>\n\u003Cli>Use various progress bar styling options – Gradient Background color, Bar thickness, etc.\u003C\u002Fli>\n\u003C\u002Ful>\n","The Read Meter plugin displays the estimated reading time for blog posts along with a progress bar.",10000,111714,90,19,"2025-07-10T05:30:00.000Z","6.8.5","4.2","5.2",[20,21],"progressbar","readtime","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fread-meter.1.0.11.zip",100,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":30,"display_name":7,"profile_url":8,"plugin_count":31,"total_installs":32,"avg_security_score":33,"avg_patch_time_days":34,"trust_score":35,"computed_at":36},"brainstormforce",32,8627510,98,196,78,"2026-04-03T23:28:18.902Z",[38,60,75,95,114],{"slug":39,"name":40,"version":41,"author":42,"author_profile":43,"description":44,"short_description":45,"active_installs":46,"downloaded":47,"rating":24,"num_ratings":48,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":53,"homepage":58,"download_link":59,"security_score":24,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27},"reading-progress-bar","Reading progressbar","1.3.1","Jb Audras","https:\u002F\u002Fprofiles.wordpress.org\u002Faudrasjb\u002F","\u003Cp>Get a reading position indicator as a progress bar and show it where you want: top, bottom or custom position in differents templates or post types.\u003C\u002Fp>\n\u003Cp>Very lightweight, it uses \u003Ccode>\u003Cprogress>\u003C\u002Fcode> HTML5 element and few lines of javascript.\u003C\u002Fp>\n\u003Cp>Options:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Progress bar’s height\u003C\u002Fli>\n\u003Cli>Foreground color\u003C\u002Fli>\n\u003Cli>Background color\u003C\u002Fli>\n\u003Cli>Position (top, bottom, custom)\u003C\u002Fli>\n\u003Cli>Class\u002FID of HTML element to fix the bar (if custom position selected)\u003C\u002Fli>\n\u003Cli>Page templates\u003C\u002Fli>\n\u003Cli>Post types (natives or custom)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Credits\u003C\u002Fstrong> :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fjeanbaptisteaudras.com\u002F\" title=\"Jean-Baptiste Audras\" rel=\"nofollow ugc\">Jean-Baptiste Audras\u003C\u002Fa>, project manager at \u003Ca href=\"http:\u002F\u002Fwww.whodunit.fr\u002F\" title=\"Whodunit WordPress Agency\" rel=\"nofollow ugc\">Whodunit\u003C\u002Fa> and WordPress developer. @audrasjb on \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Faudrasjb\" title=\"@audrasjb on Twitter\" rel=\"nofollow ugc\">Twitter\u003C\u002Fa> or \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faudrasjb\" title=\"@audrasjb on Github\" rel=\"nofollow ugc\">Github\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n","A reading position indicator that you can use where you want: top, bottom or custom position in differents templates or post types.",6000,72086,17,"2026-02-18T12:09:00.000Z","6.9.4","4.9","5.6",[54,55,20,56,57],"indicator","progress","reading","scroll","https:\u002F\u002Fjeanbaptisteaudras.com\u002Fportfolio\u002Fwordpress-reading-progressbar-indicator-plugin\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Freading-progress-bar.1.3.1.zip",{"slug":61,"name":62,"version":63,"author":64,"author_profile":65,"description":66,"short_description":67,"active_installs":68,"downloaded":69,"rating":24,"num_ratings":14,"last_updated":70,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":71,"homepage":73,"download_link":74,"security_score":24,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27},"wp-reading-progress","WP Reading Progress","1.7.0","Joeri van Veen","https:\u002F\u002Fprofiles.wordpress.org\u002Fruigehond\u002F","\u003Cp>The reading progress bar is a great user experience on longreads. Especially if it accurately depicts the reading progress in the article text, and nothing else. This is standard on single blog posts and enabled by default.\u003C\u002Fp>\n\u003Cp>Customization:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>Location top of screen, bottom of screen or below sticky elements.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Select post types you wish the bar to appear, or individual posts.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Choose color of the reading progress bar.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Have the bar start at 0% even when part of the article is visible.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Behaviour:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\n\u003Cp>The reading progress bar has smooth initializing since part of the text may already be visible, after that a lightweight update-function ensures quick response while scrolling.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>The bar can attach itself to multiple (sticky) elements that you define as an admin, the first visible element will be used.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>When there is no (longer a) visible element to attach to, the bar displays at the top.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Use \u003Ccode>dir=rtl\u003C\u002Fcode> on your html tag to have the bar display correctly for right-to-left languages.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Estimated reading time (beta)\u003C\u002Fp>\n\u003Cp>Since 1.6.0 this plugin has rudimentary estimated reading time functionality, for when your theme does not support it out of the box.\u003Cbr \u002F>\nThere are some potential issues, some of which cannot be fixed in a plugin. If it does not work for you, switch it off. It will have no effect on the plugin then.\u003C\u002Fp>\n\u003Cp>This is my 6th WordPress plugin but my first one freely available to everybody. I hope you enjoy using it as much as I enjoy building it!\u003C\u002Fp>\n\u003Cp>Regards,\u003Cbr \u002F>\nJoeri\u003C\u002Fp>\n","Light weight fully customizable reading progress bar. Sticks to top, bottom or sticky menu, with fallback for small screens. Includes ert (beta).",3000,49337,"2026-02-11T12:10:00.000Z",[72,55,20,56],"estimated-reading-time","https:\u002F\u002Fgithub.com\u002Fjoerivanveen\u002Fwp-reading-progress","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-reading-progress.1.7.0.zip",{"slug":76,"name":77,"version":78,"author":79,"author_profile":80,"description":81,"short_description":82,"active_installs":83,"downloaded":84,"rating":85,"num_ratings":86,"last_updated":87,"tested_up_to":50,"requires_at_least":88,"requires_php":22,"tags":89,"homepage":91,"download_link":92,"security_score":24,"vuln_count":93,"unpatched_count":25,"last_vuln_date":94,"fetched_at":27},"catch-scroll-progress-bar","Catch Scroll Progress Bar","2.1","Catch Plugins","https:\u002F\u002Fprofiles.wordpress.org\u002Fcatchplugins\u002F","\u003Cp>Catch Scroll Progress Bar is a simple yet handy WordPress plugin that provides a visual representation of how much of a blog post remains. It is absolutely free of cost. As your reader scrolls down your web page, the progress bar begins to fill, indicating how much progress they’ve made. The plugin comes with an array of customization features like choosing the position, background colors, opacity level, height, border radius, and more. With Catch Scroll Progress Bar, you can choose your reading progress bar to display them either at the top or bottom of your website. You can choose the background and foreground colors and select their display opacity as well. Most importantly, Catch Scroll Progress Bar empowers you with the conditions as to where your progress bar would be displayed—front page, blog page, or posts\u002Fpages. With all these essential features integrated into the plugin, Catch Scroll Progress Bar sure is a perfect pick for displaying a simple yet elegant reading progress bar.\u003C\u002Fp>\n","Catch Scroll Progress Bar - Catch Scroll Progress Bar is a simple, super-light WordPress progress bar plugin that has the most essential features to s &hellip;",1000,18682,80,4,"2026-02-25T09:44:00.000Z","5.9",[90,20,56,57],"progress-bar","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fcatch-scroll-progress-bar","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcatch-scroll-progress-bar.2.1.zip",1,"2021-09-20 00:00:00",{"slug":96,"name":97,"version":98,"author":99,"author_profile":100,"description":101,"short_description":102,"active_installs":24,"downloaded":103,"rating":24,"num_ratings":104,"last_updated":105,"tested_up_to":50,"requires_at_least":18,"requires_php":106,"tags":107,"homepage":112,"download_link":113,"security_score":24,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27},"b-laser","B Laser Loader – Page Load Progress Indicator","1.5.2","bPlugins","https:\u002F\u002Fprofiles.wordpress.org\u002Fbplugins\u002F","\u003Cp>The laser Loader plugin adds a smooth loading progress bar at the top of the page to indicate that the next page is loading. You could see a similar UI pattern on YouTube or Medium.\u003C\u002Fp>\n\u003Cp>This plugin automatically detects loading progress percentages and displays them in the loader. You get a beautiful loading progress indicator for your page load.\u003C\u002Fp>\n\u003Ch3>Live Demo\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>\u003Ca href=\"https:\u002F\u002Flink.bplugins.com\u002Fblaser-rm-ld\" rel=\"nofollow ugc\">Click here to see Live Demo\u003C\u002Fa>\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch3>How to Use?\u003C\u002Fh3>\n\u003Cp>-> Download and activate the plugin.\u003Cbr \u002F>\n-> Navigate to Tools > B laser\u003Cbr \u002F>\n-> Setup the appearance of the progress bar.\u003Cbr \u002F>\n-> Save\u003Cbr \u002F>\n-> Enjoy!\u003C\u002Fp>\n\u003Ch4>⭐ Checkout our other WordPress Plugins-\u003C\u002Fh4>\n\u003Cp>🔥 \u003Cstrong>\u003Ca href=\"https:\u002F\u002Faudioplayerwp.com\u002F\" rel=\"nofollow ugc\">Html5 Audio Player\u003C\u002Fa>\u003C\u002Fstrong> – Best audio player plugin for WordPress.\u003C\u002Fp>\n\u003Cp>🔥 \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwpvideoplayer.com\u002F\" rel=\"nofollow ugc\">Html5 Video Player\u003C\u002Fa>\u003C\u002Fstrong> – Best video player plugin for WordPress.\u003C\u002Fp>\n\u003Cp>🔥 \u003Cstrong>\u003Ca href=\"http:\u002F\u002Fpdfposter.com\u002F\" rel=\"nofollow ugc\">PDF Poster\u003C\u002Fa>\u003C\u002Fstrong> – A fully-featured PDF Viewer Plugin for WordPresss.\u003C\u002Fp>\n\u003Cp>🔥 \u003Cstrong>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fstreamcast\" rel=\"ugc\">StreamCast\u003C\u002Fa>\u003C\u002Fstrong> – A fully-featured Radio Player Plugin for WordPresss.\u003C\u002Fp>\n\u003Cp>🔥 \u003Cstrong>\u003Ca href=\"https:\u002F\u002F3d-viewer.bplugins.com\u002F\" rel=\"nofollow ugc\">3D Viewer\u003C\u002Fa>\u003C\u002Fstrong> – Display interactive 3D models on the webs.\u003C\u002Fp>\n","Easily add a stylish Laser Loading bar like YouTube & Medium.com to your site. Indicates page loading progress at the top.",4276,2,"2026-03-07T04:24:00.000Z","7.1",[108,109,110,20,111],"loading","medium","preloader","responsive","https:\u002F\u002FbPlugins.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fb-laser.1.5.2.zip",{"slug":115,"name":116,"version":117,"author":118,"author_profile":119,"description":120,"short_description":121,"active_installs":24,"downloaded":122,"rating":24,"num_ratings":123,"last_updated":124,"tested_up_to":125,"requires_at_least":126,"requires_php":22,"tags":127,"homepage":132,"download_link":133,"security_score":134,"vuln_count":25,"unpatched_count":25,"last_vuln_date":26,"fetched_at":27},"custom-progress-bar","Custom progress bar","2.0","Arif Hassan","https:\u002F\u002Fprofiles.wordpress.org\u002Faarifhsn\u002F","\u003Cp>Progressbar plugin will enable awesome progress bar with various styles.\u003Cbr \u002F>\nyou can change your progressbar with various styles with custom width, color, animation styles.\u003C\u002Fp>\n\u003Cp>demo and documentation: http:\u002F\u002Fdesign.hellothirteen.com\u002Fcustom-progress-bar\u002F\u003C\u002Fp>\n","Progressbar plugin will enable awesome progress bar with various styles.",12486,5,"2015-08-29T18:47:00.000Z","4.3.34","3.0.1",[128,129,130,20,131],"circled-progress-bar","custom-progressbar","percent-bar","round-progress-bar","http:\u002F\u002Fdesign.hellothirteen.com\u002Fcustom-progress-bar\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fcustom-progress-bar.zip",85,{"attackSurface":136,"codeSignals":255,"taintFlows":275,"riskAssessment":276,"analyzedAt":281},{"hooks":137,"ajaxHandlers":247,"restRoutes":248,"shortcodes":249,"cronEvents":254,"entryPointCount":93,"unprotectedCount":25},[138,144,148,152,155,158,163,167,172,176,179,183,187,190,193,197,200,204,206,209,212,215,217,220,223,227,230,233,236,239,242],{"type":139,"name":140,"callback":141,"file":142,"line":143},"action","wp_enqueue_scripts","bsfrt_pluginstyle_frontend","classes\\class-bsfrt-loader.php",61,{"type":139,"name":145,"callback":146,"file":142,"line":147},"admin_enqueue_scripts","bsfrt_pluginstyle_dashboard",63,{"type":139,"name":149,"callback":150,"file":142,"line":151},"init","bsf_rt_process_form_general_settings",65,{"type":139,"name":149,"callback":153,"file":142,"line":154},"bsf_rt_process_form_read_time_settings",67,{"type":139,"name":149,"callback":156,"file":142,"line":157},"bsf_rt_process_form_progress_bar_settings",69,{"type":139,"name":159,"callback":160,"file":161,"line":162},"wp","bsf_rt_init_frontend","classes\\class-bsfrt-readtime.php",73,{"type":164,"name":165,"callback":166,"file":161,"line":35},"filter","comments_template","bsf_rt_remove_the_title_from_comments",{"type":164,"name":168,"callback":169,"priority":170,"file":161,"line":171},"render_block","filter_class",10,81,{"type":164,"name":173,"callback":174,"priority":13,"file":161,"line":175},"the_content","bsf_rt_add_marker_for_progress_bar_scroll",83,{"type":164,"name":165,"callback":177,"file":161,"line":178},"bsf_rt_marker_for_progressbar",206,{"type":139,"name":180,"callback":181,"file":161,"line":182},"wp_head","bsf_rt_set_readtime_styles",215,{"type":164,"name":184,"callback":185,"file":161,"line":186},"next_post_link","bsf_rt_remove_markup_for_twenty_series",223,{"type":164,"name":188,"callback":185,"file":161,"line":189},"previous_post_link",224,{"type":164,"name":173,"callback":191,"priority":13,"file":161,"line":192},"bsf_rt_add_reading_time_before_content",233,{"type":164,"name":194,"callback":195,"priority":13,"file":161,"line":196},"the_title","bsf_rt_add_reading_time_above_the_post_title",237,{"type":164,"name":194,"callback":198,"priority":13,"file":161,"line":199},"bsf_rt_add_reading_time_below_the_post_title",241,{"type":164,"name":201,"callback":202,"priority":83,"file":161,"line":203},"get_the_excerpt","bsf_rt_add_reading_time_before_content_excerpt",248,{"type":164,"name":173,"callback":202,"priority":83,"file":161,"line":205},250,{"type":164,"name":194,"callback":207,"priority":83,"file":161,"line":208},"bsf_rt_add_reading_time_before_title_excerpt",255,{"type":164,"name":194,"callback":210,"priority":83,"file":161,"line":211},"bsf_rt_add_reading_time_after_title_excerpt",259,{"type":164,"name":201,"callback":213,"priority":83,"file":161,"line":214},"bsf_rt_add_reading_time_before_content_archive",266,{"type":164,"name":173,"callback":213,"priority":83,"file":161,"line":216},269,{"type":164,"name":194,"callback":218,"priority":83,"file":161,"line":219},"bsf_rt_add_reading_time_before_title_archive",274,{"type":164,"name":194,"callback":221,"priority":83,"file":161,"line":222},"bsf_rt_add_reading_time_after_title_archive",278,{"type":139,"name":224,"callback":225,"file":161,"line":226},"wp_footer","hook_header_top",290,{"type":139,"name":224,"callback":228,"file":161,"line":229},"hook_header_bottom",294,{"type":139,"name":180,"callback":231,"file":161,"line":232},"bsf_rt_set_progressbar_colors_normal",300,{"type":139,"name":180,"callback":234,"file":161,"line":235},"bsf_rt_set_progressbar_colors_gradient",304,{"type":139,"name":140,"callback":237,"file":161,"line":238},"bsfrt_frontend_default_css",1199,{"type":139,"name":180,"callback":240,"file":161,"line":241},"bsf_rt_set_readtime_styles_content",1208,{"type":139,"name":243,"callback":244,"file":245,"line":246},"admin_menu","bsf_rt_settings_page","includes\\bsf-rt-page.php",26,[],[],[250],{"tag":251,"callback":252,"file":161,"line":253},"read_meter","read_meter_shortcode",76,[],{"dangerousFunctions":256,"sqlUsage":257,"outputEscaping":259,"fileOperations":25,"externalRequests":25,"nonceChecks":273,"capabilityChecks":273,"bundledLibraries":274},[],{"prepared":25,"raw":25,"locations":258},[],{"escaped":260,"rawEcho":123,"locations":261},156,[262,265,267,269,271],{"file":161,"line":263,"context":264},440,"raw output",{"file":161,"line":266,"context":264},444,{"file":161,"line":268,"context":264},552,{"file":161,"line":270,"context":264},556,{"file":161,"line":272,"context":264},1103,3,[],[],{"summary":277,"deductions":278},"The 'read-meter' plugin version 1.0.11 exhibits a strong security posture based on the provided static analysis. The absence of dangerous functions, reliance on prepared statements for all SQL queries, and a high percentage of properly escaped output are excellent indicators of secure coding practices. The presence of nonce and capability checks on entry points further strengthens its defense against common web attacks.\n\nThe analysis also reveals no critical or high-severity issues in taint analysis, suggesting that data flowing through the plugin is generally handled safely. The plugin's vulnerability history is clean, with no recorded CVEs, which, combined with the static analysis, points to a well-maintained and secure codebase. However, the presence of a single shortcode as an entry point, while currently unprotected according to the data, warrants attention as it represents a potential avenue for attackers if not properly validated and sanitized within its implementation.\n\nOverall, 'read-meter' appears to be a secure plugin with robust security controls. The lack of vulnerabilities and secure coding practices are commendable. The only minor area of concern is the unprotected shortcode entry point, which, in the absence of any known vulnerabilities or taint flows related to it, currently poses a low but non-zero risk. The plugin's strengths significantly outweigh its weaknesses.",[279],{"reason":280,"points":123},"Unprotected shortcode entry point","2026-03-16T17:47:37.541Z",{"wat":283,"direct":296},{"assetPaths":284,"generatorPatterns":289,"scriptPaths":290,"versionParams":291},[285,286,287,288],"\u002Fwp-content\u002Fplugins\u002Fread-meter\u002Fassets\u002Fcss\u002Fstyle.css","\u002Fwp-content\u002Fplugins\u002Fread-meter\u002Fassets\u002Fjs\u002Fread-meter.js","\u002Fwp-content\u002Fplugins\u002Fread-meter\u002Fassets\u002Fcss\u002Fbackend-style.css","\u002Fwp-content\u002Fplugins\u002Fread-meter\u002Fassets\u002Fjs\u002Fbackend-script.js",[],[286,288],[292,293,294,295],"read-meter\u002Fassets\u002Fcss\u002Fstyle.css?ver=","read-meter\u002Fassets\u002Fjs\u002Fread-meter.js?ver=","read-meter\u002Fassets\u002Fcss\u002Fbackend-style.css?ver=","read-meter\u002Fassets\u002Fjs\u002Fbackend-script.js?ver=",{"cssClasses":297,"htmlComments":300,"htmlAttributes":301,"restEndpoints":305,"jsGlobals":306,"shortcodeOutput":308},[298,299],"bsf-read-time","bsf-progress-bar",[],[302,303,304],"data-bsf-rt-words-per-minute","data-bsf-rt-reading-time-label","data-bsf-rt-reading-time-postfix-label",[],[307],"bsf_rt_settings",[]]