
Bionic Reading JS is a lightweight JavaScript library that transforms regular text into a more readable format by strategically bolding parts of words. This technique guides readers’ eyes through text, potentially increasing reading speed and comprehension.
Bionic Reading JS dynamically modifies text on your webpage by bolding specific portions of words based on their length and linguistic importance. The technique focuses attention on key parts of each word, creating a reading pattern that may help users process information more efficiently.
Features:
- Bolding the initial letters of words based on their length and importance
- Prioritizing content words (nouns, verbs) over function words (articles, prepositions)
- Maintaining the original text structure while enhancing readability
- Processing text automatically without manual intervention
How to use it:
1. Download the library and add the minified version to your HTML document:
<script src="bionic-reading.min.js"></script>
2. That’s it! The library automatically processes all text within paragraph (<p>) elements on your page when it loads. No additional configuration is needed to get started.
How it works:
Bionic Reading JS uses several algorithms to determine which parts of words should be bolded. Let’s examine the key components:
Word Analysis
The library analyzes each word to determine its importance and optimal bolding pattern:
- Word Importance Detection: The script distinguishes between content words (like nouns and verbs) and function words (like articles and prepositions). It uses a predefined list of common function words to identify less important terms.
- Length-Based Processing: Longer words receive different treatment than shorter ones. For example:
- Very short words (1-2 letters) get only their first letter bolded
- Medium-length words (3-4 letters) get 1-2 letters bolded depending on importance
- Longer words receive proportional bolding based on their length and importance
Intelligent Bolding Algorithm
The bolding process follows these steps:
- Calculating Bold Length: For each word, the library determines how many characters to bold using a formula that considers word length and importance. Important words receive about 50% bolding, while less important words receive about 40%.
- Digraph Recognition: The library recognizes common letter pairs (digraphs) like “ch,” “sh,” and “th” that function as single sounds, keeping them together when applying bolding.
- Vowel Optimization: The algorithm tries to create natural reading breaks by adjusting bold boundaries to stop at or before the first vowel (when possible).
- Text Node Replacement: Once the bolding pattern is determined, the library creates new text nodes with HTML that includes
<b>tags around the appropriate portions of words.
DOM Processing
The main function modifyParagraphs() works by:
- Selecting all paragraph elements on the page
- Identifying text nodes within those paragraphs
- Processing each text node to apply the bionic reading format
- Replacing the original text nodes with new ones containing the formatted text
FAQs:
Q: Can I customize which elements are processed?
A: The default implementation targets paragraph elements. If you need to customize this behavior, you can modify the selector in the `modifyParagraphs()` function to target different elements.
Q: Does this work with dynamically loaded content?
A: By default, the library processes content that exists when the page loads. For dynamic content added later, you would need to call the `modifyParagraphs()` function after adding new content to the page.
Q: Is this technique actually proven to increase reading speed?
A: The bionic reading technique is relatively new, and scientific research on its effectiveness is still emerging. Some users report significant benefits, while others may not notice a difference. The best approach is to test it with your specific audience.
Q: Does this affect SEO?
A: No, since the modifications happen client-side after the page loads, search engines still see your original text. There is no impact on SEO.







