HTML→MARKDOWN PARSER CORE
HTML in.
Markdown out.
markmaton is a lightweight parser core for agent workflows.
Feed it page HTML from your fetcher or browser — get back clean Markdown,
metadata, links, images, and quality signals.
page.html — abridged
<html lang="en">
<head>
<title>Shipping Faster With Queues</title>
<meta name="description" content="How Acme…" />
</head>
<body>
<header><nav><a href="/">Acme</a> … </nav></header>
<div class="cookie-banner">We use cookies. … </div>
<main>
<article>
<h1>Shipping Faster With Queues</h1>
<p>We cut p95 job latency by 60% …</p>
<p>The full breakdown is in our
<a href="/posts/queue-first-design">post</a>.</p>
<pre><code class="language-python">…</code></pre>
<img srcset="… latency-chart.png 2x" />
</article>
<aside class="related"><a href="/posts/retry-storms">…</aside>
</main>
<footer>© 2026 Acme Corp</footer>
<script>window.analytics.track("pageview");</script>
</body>
</html>
page.md
# Shipping Faster With Queues
We cut p95 job latency by 60% after moving
webhook delivery to a queue-first design.
The full breakdown is in our
[queue-first design post](https://…)
```python
def enqueue(job):
queue.push(job, delay=backoff(…))
```

Struck lines are stripped before conversion. Links and images resolve against the page URL.
PIPELINE
The last mile of a web pipeline
You already have a way to visit pages. markmaton is the step that turns what they return into something an agent can use.
Your fetcher
Playwright, fetch, Firecrawl — anything that returns HTML
markmaton
Strips chrome, converts, resolves, scores
Your agent
Clean Markdown, metadata, and a quality gate
A parser, not a crawler — no network, no browser control, no LLM calls.
STRUCTURED OUTPUT
More than Markdown
JSON mode returns everything a pipeline needs to decide what to keep.
markdown- Main content as clean Markdown.
html_clean- The distilled content HTML, links resolved.
metadata- Title, description, canonical URL, language, author.
links·images- Absolute URLs, resolved against the page URL.
quality- Counts and scores to gate downstream use.
response — real output, trimmed
{
"metadata": {
"title": "Shipping Faster With Queues · Acme Engineering",
"language": "en"
},
"links": ["https://…/queue-first-design"],
"images": ["https://…/latency-chart.png"],
"quality": {
"quality_score": 0.7255,
"link_density": 0.004,
"used_main_content": true
}
}
- 0.726QUALITY SCORE
- 0.004LINK DENSITY
- 251TEXT LENGTH
- trueMAIN CONTENT
INSTALL
Start parsing
WITH PIP
pip install markmaton
WITH UV
uv tool install markmaton
CONVERT A PAGE
markmaton convert --html-file page.html --url https://example.com/article
Python CLI and API around a fast Go engine. Quickstart and Python API in the README.
ALTERNATIVES
How it compares
markdownify
Converts HTML to Markdown, but does no main-content extraction or metadata collection. markmaton does both in one step.
readability-lxml
Distills main content as cleaned HTML — you still add a converter and a metadata layer. markmaton returns the full response in one call.
trafilatura
A broader framework with its own fetching and discovery. markmaton is deliberately narrower: a parser core behind your fetcher.