[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f47QfDV01yKiR2NT9OCAa07r-zI7TMEx5fbngxeUfgGI":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":25,"download_link":26,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29,"vulnerabilities":30,"developer":31,"crawl_stats":28,"alternatives":39,"analysis":138,"fingerprints":227},"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,100,17,"2026-02-18T12:09:00.000Z","6.9.4","4.9","5.6",[20,21,22,23,24],"indicator","progress","progressbar","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",0,null,"2026-03-15T15:16:48.613Z",[],{"slug":32,"display_name":7,"profile_url":8,"plugin_count":33,"total_installs":34,"avg_security_score":35,"avg_patch_time_days":36,"trust_score":37,"computed_at":38},"audrasjb",24,63620,98,661,78,"2026-04-04T00:35:14.440Z",[40,61,83,99,119],{"slug":41,"name":42,"version":43,"author":44,"author_profile":45,"description":46,"short_description":47,"active_installs":48,"downloaded":49,"rating":50,"num_ratings":51,"last_updated":52,"tested_up_to":16,"requires_at_least":53,"requires_php":54,"tags":55,"homepage":57,"download_link":58,"security_score":13,"vuln_count":59,"unpatched_count":27,"last_vuln_date":60,"fetched_at":29},"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","",[56,22,23,24],"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":62,"name":63,"version":64,"author":65,"author_profile":66,"description":67,"short_description":68,"active_installs":69,"downloaded":70,"rating":71,"num_ratings":72,"last_updated":73,"tested_up_to":74,"requires_at_least":75,"requires_php":54,"tags":76,"homepage":79,"download_link":80,"security_score":81,"vuln_count":59,"unpatched_count":27,"last_vuln_date":82,"fetched_at":29},"worth-the-read","Worth The Read","1.14.3","brianmcculloh","https:\u002F\u002Fprofiles.wordpress.org\u002Fbrianmcculloh\u002F","\u003Cp>A very unobtrusive and light-weight reading progress bar indicator showing the user how far scrolled through the current post or page they are. You can control placement and color of the progress bar, and you can choose whether it includes just the main content or also the comments.\u003C\u002Fp>\n\u003Cp>The progress bar only displays once the user begins scrolling the page so it is as unobtrusive as possible. Once the user stops scrolling or scrolls down past the content the progress bar subtly mutes until it is needed again.\u003C\u002Fp>\n\u003Cp>There is also a reading time commitment feature that you can separately enable. Control the placement (above or below title, or above content), style, and whether it displays on posts and\u002For pages. Uses 200wpm as the metric for average reading time.\u003C\u002Fp>\n\u003Cp>You can also place the time commitment label anywhere you want via the [wtr-time] shortcode.\u003C\u002Fp>\n","An adjustable progress meter showing how much of the post\u002Fpage the user has scrolled through, and a read time commitment label near the post titles.",4000,114221,86,27,"2024-12-03T18:48:00.000Z","6.7.5","3.8",[77,21,23,78,24],"length","reading-time","http:\u002F\u002Fwww.welldonemarketing.com","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fworth-the-read.1.14.3.zip",92,"2022-12-16 00:00:00",{"slug":84,"name":85,"version":86,"author":87,"author_profile":88,"description":89,"short_description":90,"active_installs":91,"downloaded":92,"rating":13,"num_ratings":93,"last_updated":94,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":95,"homepage":97,"download_link":98,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"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,19,"2026-02-11T12:10:00.000Z",[96,21,22,23],"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":100,"name":101,"version":102,"author":103,"author_profile":104,"description":105,"short_description":106,"active_installs":107,"downloaded":108,"rating":13,"num_ratings":109,"last_updated":110,"tested_up_to":111,"requires_at_least":112,"requires_php":113,"tags":114,"homepage":117,"download_link":118,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"reading-position-indicator","Reading Position Indicator","1.2.1","Marcin Pietrzak","https:\u002F\u002Fprofiles.wordpress.org\u002Fiworks\u002F","\u003Cp>Reading Position Indicator adds a stylish horizontal progress bar alongside your content, showing readers how far they’ve scrolled. It enhances user engagement by providing a clear visual cue of reading progress, ideal for blogs, articles, and long-form content.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Features\u003C\u002Fstrong>\u003Cbr \u002F>\n* Horizontal progress bar displayed on posts and pages.\u003Cbr \u002F>\n* Customizable colors, opacity, rounded edges, and gradients.\u003Cbr \u002F>\n* Lightweight and performance optimized.\u003Cbr \u002F>\n* Easy setup with no coding required.\u003Cbr \u002F>\n* Translation ready.\u003Cbr \u002F>\n* Compatible with most WordPress themes.\u003C\u002Fp>\n\u003Cp>Thank you \u003Ca href=\"http:\u002F\u002Fpankajparashar.com\u002F\" rel=\"nofollow ugc\">Pankaj Parashar\u003C\u002Fa> for your article on CSS-TRICKS about \u003Ca href=\"https:\u002F\u002Fcss-tricks.com\u002Freading-position-indicator\u002F\" rel=\"nofollow ugc\">Reading Position Indicator\u003C\u002Fa>\u003C\u002Fp>\n","Add reading position indicator on page top.",900,24765,65,"2025-10-14T09:40:00.000Z","6.8.5","6.0","8.0",[115,20,56,78,116],"animation","time","https:\u002F\u002Fgithub.com\u002Fiworks\u002Freading-position-indicator","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Freading-position-indicator.1.2.1.zip",{"slug":120,"name":121,"version":122,"author":123,"author_profile":124,"description":125,"short_description":126,"active_installs":127,"downloaded":128,"rating":27,"num_ratings":27,"last_updated":54,"tested_up_to":16,"requires_at_least":129,"requires_php":130,"tags":131,"homepage":135,"download_link":136,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":137},"init-reading-position","Init Reading Position – Remember, Return, Continue","1.2","Init HTML","https:\u002F\u002Fprofiles.wordpress.org\u002Fbrokensmile2103-1\u002F","\u003Cp>Init Reading Position enhances the reading experience by remembering how far a visitor has read on a post.\u003Cbr \u002F>\nWhen they return, it automatically scrolls back to where they left off.\u003C\u002Fp>\n\u003Cp>Perfect for:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Long-form articles\u003C\u002Fli>\n\u003Cli>Tutorials or guides\u003C\u002Fli>\n\u003Cli>Web novels or manga\u003C\u002Fli>\n\u003Cli>Any content where readers often stop and come back later\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This plugin is part of the \u003Ca href=\"https:\u002F\u002Fen.inithtml.com\u002Finit-plugin-suite-minimalist-powerful-and-free-wordpress-plugins\u002F\" rel=\"nofollow ugc\">Init Plugin Suite\u003C\u002Fa> — a collection of minimalist, fast, and developer-focused tools for WordPress.\u003C\u002Fp>\n\u003Cp>GitHub repository: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fbrokensmile2103\u002Finit-reading-position\" rel=\"nofollow ugc\">https:\u002F\u002Fgithub.com\u002Fbrokensmile2103\u002Finit-reading-position\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Features\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Saves scroll position using localStorage (guests) or user_meta (logged-in users)\u003C\u002Fli>\n\u003Cli>Smart device-based sync: remembers position separately for PC, Mobile, and Tablet\u003C\u002Fli>\n\u003Cli>Automatically scrolls back on page load\u003C\u002Fli>\n\u003Cli>Lightweight, no jQuery, no bloat\u003C\u002Fli>\n\u003Cli>Easy to extend via filters\u003C\u002Fli>\n\u003Cli>Optional settings page to control which post types are enabled\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This plugin is licensed under the GPLv2 or later.\u003Cbr \u002F>\nYou are free to use, modify, and distribute it under the same license.\u003C\u002Fp>\n","Remembers reading position and auto-scrolls when returning. Works for guests (localStorage) and logged-in users (user meta, per device).",50,389,"5.5","7.4",[23,132,133,24,134],"reading-progress","resume-reading","usermeta","https:\u002F\u002Finithtml.com\u002Fplugin\u002Finit-reading-position\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Finit-reading-position.1.2.zip","2026-03-15T10:48:56.248Z",{"attackSurface":139,"codeSignals":171,"taintFlows":214,"riskAssessment":215,"analyzedAt":226},{"hooks":140,"ajaxHandlers":167,"restRoutes":168,"shortcodes":169,"cronEvents":170,"entryPointCount":27,"unprotectedCount":27},[141,147,150,154,158,163],{"type":142,"name":143,"callback":144,"file":145,"line":146},"action","admin_enqueue_scripts","enqueue_styles_reading_progressbar_admin","admin\\rp-admin.php",21,{"type":142,"name":143,"callback":148,"file":145,"line":149},"enqueue_scripts_reading_progressbar_admin",28,{"type":142,"name":151,"callback":152,"file":145,"line":153},"admin_menu","rp_add_admin_menu",39,{"type":142,"name":155,"callback":156,"file":145,"line":157},"admin_init","rp_settings_init",40,{"type":142,"name":159,"callback":160,"file":161,"line":162},"wp_enqueue_scripts","rp_register_resources_reading_progressbar_public","public\\rp-public.php",51,{"type":142,"name":164,"callback":165,"priority":13,"file":161,"line":166},"wp_footer","rp_show_it",103,[],[],[],[],{"dangerousFunctions":172,"sqlUsage":173,"outputEscaping":175,"fileOperations":27,"externalRequests":27,"nonceChecks":27,"capabilityChecks":27,"bundledLibraries":213},[],{"prepared":27,"raw":27,"locations":174},[],{"escaped":149,"rawEcho":176,"locations":177},18,[178,181,183,185,187,189,191,193,195,197,199,201,203,205,207,208,210,211],{"file":145,"line":179,"context":180},173,"raw output",{"file":145,"line":182,"context":180},174,{"file":145,"line":184,"context":180},175,{"file":145,"line":186,"context":180},177,{"file":145,"line":188,"context":180},190,{"file":145,"line":190,"context":180},210,{"file":145,"line":192,"context":180},211,{"file":145,"line":194,"context":180},212,{"file":145,"line":196,"context":180},213,{"file":145,"line":198,"context":180},214,{"file":145,"line":200,"context":180},215,{"file":145,"line":202,"context":180},216,{"file":145,"line":204,"context":180},217,{"file":145,"line":206,"context":180},230,{"file":145,"line":206,"context":180},{"file":145,"line":209,"context":180},237,{"file":145,"line":209,"context":180},{"file":145,"line":212,"context":180},261,[],[],{"summary":216,"deductions":217},"Based on the static analysis and vulnerability history, the 'reading-progress-bar' plugin version 1.3.1 exhibits a generally good security posture. The plugin reports zero AJAX handlers, REST API routes, shortcodes, or cron events, resulting in a zero-width attack surface and zero unprotected entry points. This is a significant strength, as it minimizes the opportunities for external interaction with the plugin's code. Furthermore, the absence of dangerous functions, file operations, and external HTTP requests further contributes to its secure design.\n\nHowever, there are areas of concern. The code analysis indicates that only 61% of output is properly escaped. This leaves a notable portion of the plugin's output potentially vulnerable to cross-site scripting (XSS) attacks. While there are no known CVEs and the taint analysis shows no critical or high-severity flows, the lack of nonces and capability checks, coupled with the unescaped output, presents a potential risk. The absence of these common security measures means that if an attack vector were to be discovered that leveraged the unescaped output, it could be easier to exploit.\n\nIn conclusion, 'reading-progress-bar' v1.3.1 demonstrates strong foundational security by limiting its attack surface and avoiding several high-risk coding practices. The primary weakness lies in the incomplete output escaping and the absence of crucial security checks like nonces and capability checks. While there are no recorded vulnerabilities to date, the unaddressed output escaping represents a latent risk that could be exploited in conjunction with other potential weaknesses or future discoveries.",[218,221,224],{"reason":219,"points":220},"Significant portion of output not properly escaped",8,{"reason":222,"points":223},"Missing nonce checks",5,{"reason":225,"points":223},"Missing capability checks","2026-03-16T18:02:20.219Z",{"wat":228,"direct":238},{"assetPaths":229,"generatorPatterns":232,"scriptPaths":233,"versionParams":235},[230,231],"\u002Fwp-content\u002Fplugins\u002Freading-progress-bar\u002Fpublic\u002Fjs\u002Frp-public.js","\u002Fwp-content\u002Fplugins\u002Freading-progress-bar\u002Fpublic\u002Fcss\u002Frp-public.css",[],[234],"wp-content\u002Fplugins\u002Freading-progress-bar\u002Fpublic\u002Fjs\u002Frp-public.js",[236,237],"reading-progress-bar\u002Fpublic\u002Fcss\u002Frp-public.css?ver=","reading-progress-bar\u002Fpublic\u002Fjs\u002Frp-public.js?ver=",{"cssClasses":239,"htmlComments":241,"htmlAttributes":242,"restEndpoints":248,"jsGlobals":249,"shortcodeOutput":251},[240],"rp-progressbar",[],[243,244,245,246,247],"data-rp-height","data-rp-fg-color","data-rp-bg-color","data-rp-position","data-rp-custom-position",[],[250],"rp_settings_object",[]]