defuddlehtml-to-markdownreadabilitymarkdownai-tools

Show HN: Defuddle, an HTML-to-Markdown alternative to Readability

Zephyr Whimsy2026-07-209 min read

Show HN: Defuddle, an HTML-to-Markdown alternative to Readability

Defuddle caught my eye because it solves a real problem: extracting the main content from messy web pages and turning it into Markdown.

The Show HN post describes Defuddle as an open source JavaScript library for parsing web pages, extracting main content and metadata, and optionally returning Markdown. It was built while working on Obsidian Web Clipper, partly because Mozilla Readability has not moved as quickly as the modern web. That is a fair motivation. If you have ever tried to clip a page full of cookie banners, nav bars, newsletter boxes, embedded tweets, side rails, and sponsored widgets, you know the pain.

I tested this kind of workflow from the other side: not as someone building a read-it-later app, but as someone trying to get useful web content into AI tools without dragging along half the page chrome. The question I kept coming back to was simple: what do you actually need when your destination is ChatGPT, Claude, Cursor, or another AI assistant?

For that use case, clean Markdown is only part of the job. You also need access to the page in the first place. That is where browser-side tools like Web2MD matter.

Defuddle is good news for the web clipping crowd

Defuddle deserves credit for being developer friendly. It is open source, it is built in JavaScript, and it focuses on the hard part of content extraction: deciding what is the article and what is noise.

Readability has been the standard answer for years. It powers a lot of reader modes and content extraction workflows. But web pages have changed. Some are server rendered. Some are client rendered. Some hide meaningful content behind interaction. Some wrap simple paragraphs in absurd nesting. Some have metadata that is useful but inconsistent.

A maintained alternative is useful.

For developers building clippers, read-it-later apps, personal knowledge tools, or content ingestion pipelines, Defuddle looks like the right kind of project: small enough to understand, practical enough to use, and honest about still being a work in progress.

But if your goal is "I want this page in Markdown so I can paste it into Claude," a library alone is not the whole experience.

What I tested when converting pages for AI

When I test HTML-to-Markdown tools, I do not only check whether the output is technically Markdown. I check whether it is useful to an AI model.

That means I look for a few things:

  • Does it preserve headings in the right order?
  • Does it keep links where they matter?
  • Does it remove navigation, cookie banners, and footers?
  • Does it keep lists as lists?
  • Does it avoid dumping hidden UI text into the output?
  • Does it give me a token count before I paste?
  • Does it work on pages that require login?
  • Does it keep the content local?

The last two are where many good tools hit a wall.

A server-side reader can only fetch what the server can reach. If the article sits behind a login, a company dashboard, a private documentation portal, a Notion workspace, a course page, or a paywalled publication you subscribe to, the server usually cannot see what your browser can see.

Your browser already has the session. Your browser has the rendered DOM. Your browser has the page you are actually reading.

That is the edge Web2MD is built around.

Example: clean article output

A noisy web article might have a sticky header, share buttons, related posts, and signup forms. The Markdown you want for an AI tool is usually much smaller:

# Defuddle: an HTML-to-Markdown alternative to Readability

Defuddle is an open source JavaScript library for extracting the main
content and metadata from web pages.

It can return structured content or Markdown, which makes it useful for
web clippers, read-it-later apps, and AI ingestion workflows.

## Why it exists

Readability has been the default extraction library for many years, but
modern pages often need more careful parsing.

## Useful links

- Defuddle repository
- Defuddle CLI
- Obsidian Web Clipper

That is the kind of output I want before sending a page into ChatGPT or Cursor. Not perfect prose. Not a screenshot. Just the article structure, stripped down enough that the model can reason over it.

Where Web2MD fits

Web2MD is a Chrome extension that converts the page you are viewing into clean Markdown. It runs in your browser, which changes the tradeoff.

If you are on a logged-in page, Web2MD sees the page after you have logged in. If you are reading something behind a paywall you legitimately have access to, it can convert the rendered page in your browser. If you are looking at an internal tool, private docs, or a course dashboard, you do not have to send the URL to a server and hope it can fetch the same thing.

That browser-side model has three practical benefits.

First, it works on more of the pages people actually need for research. Server fetchers are great for public pages. They struggle with authenticated content.

Second, it is more private by design. The conversion happens locally in your browser. You are not handing the URL to a crawler just to get Markdown back.

Third, it can help with AI context management. Web2MD includes a built-in token counter, so you can see whether the page is small enough for your target model before you send it.

For AI workflows, that last part is underrated. A 12,000 word article, a dense API doc, and a product changelog do not cost the same amount of context. Token count is the difference between "send the whole thing" and "trim this section first."

Example: Markdown for a technical page

For a technical page, the details matter more than the prose. Tables, code, headings, and links need to survive the conversion.

# API rate limits

The API accepts authenticated requests from browser and server clients.

## Limits

| Plan | Requests per minute | Burst |
| --- | ---: | ---: |
| Free | 60 | 100 |
| Pro | 600 | 1000 |

## Error response

```json
{
  "error": "rate_limited",
  "retry_after": 30
}

Use the retry_after value before sending another request.


This is the kind of Markdown I want inside Cursor when I am asking it to update an integration. The table still reads like a table. The JSON stays fenced. The headings give the model structure.

## How it compares with Jina Reader, Firecrawl, and MarkDownload

Jina Reader is excellent for quick public URL conversion. I use tools like it when I want a clean text view of a public page without installing anything. It is simple, fast, and convenient.

Firecrawl is stronger when you need crawling, extraction at scale, or developer APIs. If you are building a pipeline that needs to fetch many pages, follow links, or run structured extraction, Firecrawl is in a different category than a browser extension.

MarkDownload is a useful browser extension too, especially for people who want a straightforward "save this page as Markdown" workflow.

Web2MD is not trying to pretend those tools are bad. They are good at what they are built for.

The difference is the AI workflow around the current browser tab. Web2MD wins when the page is already open in Chrome, when the page requires your browser session, when you care about keeping the conversion local, and when you want a token count before sending the result to ChatGPT, Claude, or Cursor.

It also has a low-friction free tier: 3 conversions per day, no API key required. For heavier use, Pro is $9/mo. That is a real limit, and it is worth saying plainly. If you need unlimited free local conversion, Web2MD's free tier is not that. If you need Firefox or Safari support today, Web2MD is not there either. It is Chrome-only.

## Defuddle and Web2MD solve adjacent problems

I do not see Defuddle and Web2MD as direct enemies.

Defuddle is a library. It gives developers another way to extract article content and Markdown from HTML.

Web2MD is a browser extension for people who want to use the page they are looking at inside AI tools. It packages the conversion with practical workflow features: local processing, logged-in page support, token counting, and one-click send-to-AI.

That distinction matters. A developer choosing an extraction library has different needs than a researcher preparing context for Claude. A student clipping a private course page has different needs than a crawler indexing public docs. A product manager sending a competitor pricing page to ChatGPT has different needs than an engineer building a read-it-later app.

The HTML-to-Markdown space is getting more interesting because AI has changed the destination. Markdown used to be mostly about saving notes. Now it is also about preparing context.

## When I would use each tool

I would look at Defuddle if I were building a JavaScript app that needs content extraction.

I would use Jina Reader for quick public pages where privacy and login state are not concerns.

I would use Firecrawl for crawling, batch extraction, and API-driven workflows.

I would use MarkDownload for simple browser-based Markdown saving.

I would use Web2MD when I am already on the page in Chrome and want clean Markdown for an AI tool, especially if the page is logged-in, paywalled, private, or long enough that I need to check the token count first.

That is the practical split.

If you want to try the browser-side approach, install [Web2MD](/), convert a page you already have open, and compare the Markdown with what you get from a server-side reader. Start with the free tier. Three conversions a day is enough to see whether it fits your AI workflow, and if you need more, the [Pro plan](/pricing) is there.

Related Articles

Most Read

last 30 days
  1. #1LLM을 위한 Markdown vs HTML: 토큰 67% 절감, 더 나은 답변 (2026 테스트)

Latest Articles