How the main content is picked
A reader mode keeps the article and drops the rest of the page. This tool does the same job with a scoring pass over article, main, section and div containers. The highest score wins, and the blocks inside it become the text that gets chunked.
| Signal | How it counts |
|---|---|
| Text length | Visible characters under the container, not counting removed parts. |
| Paragraphs | Each paragraph of 25 characters or more adds 100 to the length score. |
| Link density | The score is multiplied by one minus the share of text that is link text. |
| Tag | article counts 1.5 times, main or role="main" 1.4 times, section and div once. |
| Id or class words | A word such as article, content, main, post, entry, text or story gives 1.2 times. |
| Removed before scoring | nav, header, footer, aside, form, button, select, svg and dialog elements; script, style, noscript, template, iframe, object and embed; hidden elements; navigation, banner, contentinfo, complementary, search, dialog and alertdialog roles; id or class words such as cookie, consent, sidebar, comment, share, related, ad, promo, newsletter and paywall, unless a content word is also present. |
The rules follow the approach of Mozilla's Readability, which scores candidate blocks by tag and class weights, penalises link-heavy blocks, and drops nodes that match an "unlikely candidate" pattern (Mozilla Readability repository). This tool is its own implementation, not that library, and it will make mistakes on unusual markup. The Main content tab lists every removal rule that matched, with its element count and visible characters, largest first. Script, style and head elements are not listed. If extraction drops the page's first h1, for example from inside a header, the tool adds that heading back as the first block, so the title still appears in the heading paths. If no container scores, the whole body is used and the tab says so.