Clean Web Clipper Add to Chrome (free)

Who it is for · ·

Web page to Markdown for ChatGPT, without the site menu

Clean Web Clipper converts a web page to Markdown for ChatGPT and leaves the menus behind. On a 109-page head-to-head run it left 102 duplicated navigation lines where three other extraction engines left 282, 478 and 491, and no leftover HTML tags. The model gets the article plus a header naming the source URL and the publication date.

Where these numbers come from: the benchmark, with engine versions and dates

What does a pasted page really cost?

Copy a documentation page out of the browser and into a chat and you send the model the cookie notice, the sidebar, the version picker, the “on this page” rail, four columns of footer links and a “read next” strip. Every one of those lines is tokens you pay for, and every one competes for attention with the two paragraphs you wanted read.

The second cost is subtler – repeated navigation looks like structure. A model asked to summarise the page will list menu items as topics, and asked where a claim came from it will point at a link label. Stray div and table markup left behind by a careless converter adds one more layer the model has to parse around before it reaches a sentence.

The second paste is where it starts to cost. A conversation gets long, the history is trimmed, and you paste the page again – except the page has changed since the morning, so the model is now reasoning over slightly different text and nothing in the thread records that it happened. An agent that fetches the same URL on every run has the same problem, plus rate limits and a login it cannot pass. A file on disk is the same input every time, and it is still readable when the site is not.

The clip window’s Markdown view: a Wikipedia article with title, source, date and extraction recorded in the frontmatter
The refusal screen shown when a page has no article body, instead of the extension handing over a feed’s worth of links
The settings page: which frontmatter fields to keep and whether images are downloaded, skipped or kept as links
Add to Chrome (free)Free in full. No account, no sign-up, no limits.For Chrome on a computer

What does the model receive instead?

Everything the model gets – and nothing elsedocs.python.org/3/library/asyncio-task.html
---
title: "Coroutines and Tasks"
source: "https://docs.python.org/3/library/asyncio-task.html"
extraction: "dom"
---

## Awaitables

We say that an object is an *awaitable* object if it can be used in an
`await` expression. There are three main types: coroutines, Tasks and Futures.

```python
async def main():
    await asyncio.sleep(1)
    print("hello")
```

Set it up for prompts

Two different setups, sharing most of their settings – one for pasting into a chat, one for filling a folder an agent reads. Both take about five minutes.

  1. Right-click the icon, open Options, and set what the icon click does to “copy to clipboard”. That is the shortest path there is – click, switch to the chat, paste.
  2. Set images to skip. A single CDN image URL can be two hundred characters of resizing parameters, and none of it means anything to a text model.
  3. In the frontmatter section keep source and date on, and switch author and extraction off. Two header lines are enough for the model to attribute a claim; the rest is header you are paying to send.
  4. Clip the page with Alt+Shift+M and paste. If the extension answers “no article”, do not paste it anyway. That answer means the page was mostly link labels, which is exactly the input that makes a model list menu items as topics.
  5. For an agent instead of a chat, set the destination to a folder your agent already reads, such as context/ in the project, and the filename template to {domain}-{title}.
  6. Clip the six or eight pages the task actually depends on into that folder. The agent then reads local files: no fetching, no rate limits, no login it cannot get through, and the same text on every run.
  7. Add a per-site rule for the sites you clip most, reddit.com into its own subfolder with images skipped, so the folder stays sorted without you thinking about it.

Which settings cut the context bill?

Every one of these removes something the model is charged for reading. The frontmatter row is the one people get wrong – attribution is worth two lines, not five.

SettingValueWhy this value here
Icon clickCopy to clipboardClick, switch, paste: no file, no window, no dialogue
ImagesSkipImage URLs are long, meaningless to a text model, and often longer than the paragraph beside them
Frontmattersource and date on, author and extraction offEnough to attribute a claim, nothing spent on fields the model will not use
Destination (agent)Folder context/ in the projectLocal files mean no fetch, no rate limit and identical input on every run
Filename template{domain}-{title}An agent grepping the folder can tell two “Overview” pages apart
SelectionClip the selection, not the pageWhen one section answers the question, the other nine are pure cost
Per-site rulereddit.com → subfolder, images skippedThreads and reference material are worth keeping in separate piles
What a feed page returns instead of three hundred linksthe clip window on a category listing
No article on this page.

More than a quarter of the extracted text sat inside link labels, which is
what a feed, a storefront or a search result looks like. Nothing was written
to the clipboard.

  Blocks examined      41
  Chosen block         <section class="cards">
  Link share           0.71
  Real text            740 characters

See three model setups

The same clip serves three different setups: pasting one section straight into a chat, filling a folder a coding agent reads instead of fetching, and reaching a page behind a login no model could open on its own. All three remove the same cost – repeated navigation billed as context.

One page, one question

You are reading a specification and want the model to check your reading of one section. You select the section, press Alt+Shift+M, and paste. What arrives is the section, a source line and a date line: no cookie notice, no version picker, no “on this page” rail, no eight columns of footer.

The difference shows in the answer rather than the bill. Asked to summarise a pasted page, a model given the navigation lists menu entries among the topics, because a phrase repeated in every section genuinely looks like structure. Removing it removes the mistake at the source.

A folder an agent reads instead of fetching

A coding agent needs the API reference for an SDK. You clip eight pages into context/, each named from its domain and title. The agent reads local files: nothing is fetched, nothing is rate-limited, and the pages behind your logged-in session are as readable as the public ones.

It also stays still. A fetched page can change between two runs of the same task, and nothing in the transcript will say that it did. A clipped file changes only when you clip it again, and the old file is still there to diff against.

A page the model cannot reach at all

The document is on an internal wiki behind single sign-on, or in a subscription you pay for. A model asked to fetch that URL gets a login screen; a model given a search tool gets the version served to a bot. The extension reads the page your browser has already rendered for your session, so the text you can see is the text you can paste.

The page text never leaves your machine on the way, and the clip itself is not uploaded anywhere. The clip goes to your clipboard, and the “send to chat” button copies and opens a tab rather than transmitting anything itself.

How does it compare to the other ways to feed a page in?

Five routes are what people actually use to get a web page in front of a model. Each column below is what you get and what it costs – this extension included.

How it is done nowWhat you getWhat it costs
Paste the URLOne line in the promptMany models cannot fetch; those that can may be served the version built for bots
Copy and paste the pageEverything, including the furnitureComparable output carried 282 to 491 duplicated menu lines against 102 here
Screenshot into a multimodal modelThe page as it lookedImage tokens, no source line, no date, and nothing you can grep afterwards
Save the page as HTMLA faithful copy on diskMarkup dominates the file; the article is a minority of what you send
Reader mode, then copyCleaner text, sometimesTriggers on some pages and not others, and carries no source or date header
Clean Web ClipperArticle text with a two-line headerOne page at a time; it does not summarise, chunk or embed anything

What happens when the answer comes back wrong?

Four causes explain most bad answers: a feed page clipped instead of the article, content that had not finished loading when you clipped, a page that published no date at all, or image links left in when they should have been skipped. Each is a setting or a habit, not a defect in the extraction.

The model summarised the navigation, not the article

That is what a feed page does to a prompt. Check what the clip window said – if it reported “no article”, more than about a quarter of the extracted characters were sitting inside link labels, which is the signature of a category page, a search result or a storefront. Find the article page itself and clip that one. The answer will change more than any amount of prompt wording.

The clip is much shorter than the page looked

Two common causes. Either the page loads its body as you scroll, and only the rendered part existed at the moment you clipped – scroll to the end first, then clip. Or a section is inside a collapsed accordion or an unopened tab, which is not in the DOM until you open it. What the browser has not rendered, no extension can read.

There is no date for the model to cite

The page declared none. The field is left empty rather than filled with today’s date, because a confident wrong date is worse in a model’s context than a missing one. It will be quoted back to you as fact. Some corpora carry dates far less often than others – on the Turkish and Czech top-fifty lists a publication date is genuinely rare, and that is a property of those sites rather than of the extraction.

Images default to being kept as links, which is right for reading and wrong for a prompt. Set images to “skip”, globally or as a per-site rule, and the Markdown contains no image references at all – not a placeholder, not an empty bracket, nothing. Re-clip the page afterwards; the setting applies from that point on, not retroactively to files already written.

What does Clean Web Clipper not do for a model?

Clean Web Clipper does not talk to any AI service. The clip is sent nowhere – it goes to your clipboard or your disk, and the “send to chat” button only copies and opens a tab. It does not summarise, chunk or embed the text. That is your model’s job, not a clipper’s. It clips one page at a time, the page you are on, with no crawler.

The extension cannot capture what the page never rendered.

Add to Chrome (free)Free in full. No account, no sign-up, no limits.For Chrome on a computer

Why clip instead of fetching or pasting?

Why not just give the model the URL? Many models cannot reach the page at all, and those that can often get the version served to a bot rather than the one you are reading. Clipping captures exactly what was on your screen, including pages behind a login you were already using.

Does the extension send anything to an AI service?
Only if you press the button that does, and even then it copies to the clipboard and opens a chat tab. The extension itself never uploads the page text; what it reports to our statistics server is the bare domain of a successful clip, the address of a page it failed to convert, the screens and actions you use and a random install number, and one switch in settings stops all of it.
How much context does this actually save?
The measurable part is duplicated navigation: 102 repeated menu lines across 109 pages, where the engines compared left 282, 478 and 491. On a page whose menu repeats in every section, that is most of the noise.
Can I drop images to save tokens?
Yes. Set images to “skip” and the Markdown contains no image links at all.
Does it work on pages behind a login?
Clean Web Clipper works behind a login: it reads the page your browser already rendered, so an internal wiki or an article you subscribe to clips like any other page.

What survives, and what does not?

Does it work with a local model? Yes, and nothing about it assumes otherwise. The clip is never uploaded, so it goes to your clipboard or a folder on disk and it is entirely your business what reads it after that.

Does it chunk, embed or summarise the text?
Clean Web Clipper does not chunk, embed or summarise: it converts the page and stops. Chunking and embedding belong to whatever pipeline you are building, and a clipper that summarised would be deciding for you which parts of the source the model never sees.
Will the same page give me the same text tomorrow?
Only if the page is the same. That is the argument for keeping the file – a clip is fixed once it is written, so a task rerun a month later reads the same input, and the earlier capture is still on disk to compare against.
Do code samples survive well enough for a model to read?
Code samples come across as fenced blocks, with the language tag where the site declared one: on a nine-page technical corpus the tag survived in 73 of 156 fences, against 20 of 104 and 0 of 24 for the engines compared. The tag comes from the class the site’s own highlighter left, so it is never a guess.
Can I clip several tabs into one prompt at once?
No. There is no batch mode and no crawler. It clips the page you are on. For several pages, clip them one at a time into a folder and point the model or the agent at the folder.