Wikipedia Reading Time Estimator
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
This script adds a reading time estimator to Wikipedia articles. When you visit any Wikipedia article, the script extracts the main article text (excluding infoboxes, tables of contents, references, navigation templates, and other non-article elements), counts the words, and calculates the estimated reading time based on your preferred reading speed. A badge appears at the top-right corner showing the estimated reading time (e.g., "📖 5 min read"). You can customize the reading speed in the settings panel to match your personal reading pace. An optional detailed breakdown shows word count, character count, the exact estimated time in minutes and seconds, and the current words-per-minute setting. The badge updates automatically when you navigate between articles.
WHERE IT RUNS
The script runs on all Wikipedia domains (*.wikipedia.org). It works on article pages (excluding special pages like Special:, Wikipedia:, Help:, File:, Category:, Template:, Portal:, User:, MediaWiki:, and Talk: pages). It supports both desktop and mobile views.
HOW TO USE
After installation, the settings panel appears on the left side of the screen with the gear emoji (⚙️). Open the panel to configure the script:
- The "Show reading time badge" toggle enables or disables the badge.
- Adjust the "Words per minute" setting to match your reading speed (default is 225, the average adult reading speed).
- Toggle "Show detailed breakdown" to display word count, character count, and detailed time breakdown in the badge.
- Click "Refresh article" to manually re-analyze the current article.
The badge appears automatically on any Wikipedia article. Click the ✕ button on the badge to hide it for the current session.
TECHNICAL SECTION — REAL MECHANISM
The script detects Wikipedia article pages by checking the URL for common special page prefixes and by looking for the #firstHeading element. It extracts the article text from the .mw-parser-output or #mw-content-text container, iterating through paragraph, list item, definition, and heading elements. Elements inside infoboxes (.infobox), navigation templates (.navbox), sidebars (.sidebar), references (.refbegin, .reflist, .references, .mw-references-wrap), tables of contents (#toc, .toc), hatnotes, and other non-article containers are excluded using closest() checks. The text is then cleaned by removing non-word characters and splitting on whitespace to count words. Character count is calculated by counting non-space characters. The reading time is calculated as wordCount / wordsPerMinute, with results formatted in minutes, hours, and seconds. The badge is created as a fixed-position div with a glassmorphism style and inserted into the DOM using style properties and textContent (never innerHTML). A MutationObserver watches for DOM changes and re-scans the article when the user navigates or expands sections.
THE PANEL
The settings panel is built with BotGentz's BGPanel component. It is draggable via its header, allowing you to reposition it anywhere on the screen. The panel snaps to the left edge by default but can be moved freely. Click the gear emoji to collapse the panel into a small bubble, and click the bubble to expand it again. The panel remembers its position per page session. Press the Escape key to quickly close or minimize the panel. The panel includes a status flash bar that provides visual feedback when settings are changed or actions are performed. All settings save automatically via GM_setValue.
PLEASE NOTE
This script requires the free BotGentz browser extension to run. It does not function as a standalone Chrome extension and does not use chrome.* APIs. Wikipedia frequently updates its page structure, which may affect the selectors used to find the article content and exclude non-article elements. If the script stops working, please check for updates. The reading time is an estimate based on word count and the configured words-per-minute setting—actual reading time varies by individual reading speed and content complexity. The script stores only your preferences via GM_setValue. No data is sent externally—all data is stored locally in your browser. The script never reads or writes password fields, hidden inputs, or file inputs. All DOM operations use safe methods (style properties, textContent, appendChild) and never use innerHTML.