Reading and extraction
Readability algorithm
Also called Readability.js, Arc90 Readability
A readability algorithm identifies the main article inside an HTML page by scoring elements on text density, paragraph length, link ratio, and class or id hints, then keeping the highest-scoring subtree. The Arc90 Readability approach and Mozilla's Readability.js are the reference implementations behind most reading views.
What the score measures
The heuristics are simple and durable. Long runs of text in paragraph tags score well. High link-to-text ratios look like navigation and score badly. Class and id names containing words like comment, sidebar, promo, or share are penalized; names like article, content, or post are rewarded. Scores propagate to parents so the container holding the most article-like text wins.
Nothing here understands language. That is the strength — it generalizes across sites and locales without training data — and the weakness, because a well-marked-up subscribe module can outscore a short article.
Modern limits
Heuristic scoring assumes the article is in the delivered HTML. Client-rendered pages, infinite-scroll feeds, and fragmented layouts break that assumption, so production systems pair a readability pass with rendering, alternate sources, and a quality check on the output.
Common questions
Is Readability.js still used?
Yes. Mozilla's Readability.js powers Firefox reading view and remains a common baseline in reading tools, archives, and summarizers.
Why does a readability pass return a subscribe prompt?
Because it selects the best-scoring block, not a correct one. If the article body was withheld, the promo module can be the densest text on the page.