Playground Sign in Start free
Use case · Markdown for AI

Turn any URL into clean Markdown your LLM can actually read.

Web pages were not designed for context windows. Our Markdown endpoint strips the chrome, preserves headings, tables, and code, and ships citations - so your RAG and agent loops eat tokens, not navbars.

5,000 free credits · no card · 10 credits per Markdown conversion
Source HTML
docs.example.com/quickstart
<nav>
  <ul class="menu">
    <li><a href="/">Home</a></li>
    <li><a href="/docs">Docs</a></li>
  </ul>
</nav>

<aside class="cookie-banner">
  We use cookies. <button>Accept all</button>
</aside>

<main>
  <article>
    <h1>Quickstart</h1>
    <p>Welcome to the <em>API</em>. Follow these steps:</p>
    <ol>
      <li>Sign up for a free account</li>
      <li>Get your API key</li>
      <li>Make your first request</li>
    </ol>
    <pre><code class="lang-bash">
curl -X GET https://api.example.com/data
    </code></pre>
  </article>
</main>

<footer>© 2026 · Privacy · Terms</footer>
Clean Markdown
ready for context window
# Quickstart

Welcome to the *API*. Follow these steps:

1. Sign up for a free account
2. Get your API key
3. Make your first request

```bash
curl -X GET https://api.example.com/data
```

- filtered: nav, cookie-banner, footer
- tokens: 47  ·  source tokens: 184
The challenge

Why "just convert HTML to markdown" doesn’t work.

A working pipeline has to handle the dirty parts of the modern web - and emit Markdown an LLM can actually use.

Noisy HTML

Pages ship 60–90% boilerplate: navs, footers, cookie banners, related-articles widgets, share buttons. Naive converters drag it all into the context window.

Lost structure

Headings, tables, and code blocks survive the round-trip only if the converter respects the DOM. Most don’t.

No citations

For RAG, every chunk needs a stable source URL. Most "html→md" tools forget where the text came from.

JS-rendered pages

Docs sites, SPAs, and modern marketing pages render in the browser. Static-only converters return empty shells.

Use cases

Four workflows. One endpoint.

RAG pipelines

Feed your retrieval system, not your noise filter.

Convert any source (docs, news, forums) and pipe clean Markdown straight into your vector store. Headings make natural chunk boundaries; tables stay tables; code blocks stay code.

What you get
  • Cut ingest tokens by 60–80% vs raw HTML
  • Preserve heading hierarchy as chunk metadata
  • Drop in alongside LlamaIndex, LangChain, Haystack
Agent context

Hand the agent the page, not the wallpaper.

When an autonomous agent fetches a URL, you have one chance to give it usable context. Markdown that respects structure means the model can answer about "the third row of the pricing table" - not give up.

What you get
  • Drop into MCP tool / OpenAI function loops
  • 10 credits per page, with or without JS
  • Token-budget filter modes (raw / fit / bm25)
Knowledge base sync

Mirror docs sites your team uses every day.

Continuously sync vendor docs, API references, and changelogs into your internal Notion/Confluence/Slack. Markdown lossless-renders in every modern wiki, and the link graph survives the import.

What you get
  • Webhook-friendly batched output
  • JS rendering covers SPAs (Stripe, Docusaurus, MkDocs)
  • Heading anchors preserved for deep links
Content workflows

Bring the open web into your CMS, your way.

Editorial teams converting press releases, briefs, and competitor research need clean text, not screen-scraped soup. Markdown is the lowest-friction input format for every CMS shipped this decade.

What you get
  • Strip ads + related-content blocks automatically
  • Hero image + caption extracted as front-matter
  • Plays nicely with Sanity, Contentful, Strapi
Filter modes

Three modes. Pick what fits the prompt.

For agents that pay-per-token, the right filter is often worth more than the right LLM. Switch modes per request.

response.markdown~4,218 tokens
# Quickstart

Welcome to the *API*. Follow these steps:

1. Sign up for a free account
2. Get your API key
3. Make your first request

## Authentication

All requests require an API key sent as a Bearer token in the
Authorization header. Keys are issued from the dashboard.

```bash
curl -X GET https://api.example.com/data \
  -H "Authorization: Bearer YOUR_KEY"
```

## Rate Limits

| Plan     | Requests/min | Burst |
| -------- | ------------ | ----- |
| Free     | 60           | 100   |
| Pro      | 300          | 500   |
| Business | 1000         | 2000  |

…and another 18 sections of detail.
When to use

Everything in the article. Full text, full headings, full tables - no token budget enforced.

Token budgetNone
Structure keptFull
CitationsYes - every output
Credit cost10 / page
?url=...&filter=raw
response.markdown~612 tokens
# Quickstart

Welcome to the *API*. Follow these steps:

1. Sign up for a free account
2. Get your API key
3. Make your first request

## Authentication

All requests require an API key sent as a Bearer token in the
Authorization header.

```bash
curl -X GET https://api.example.com/data \
  -H "Authorization: Bearer YOUR_KEY"
```

… (main content only: nav, banners and footer dropped)
When to use

Keeps only the main content and drops navigation and boilerplate. Default mode.

Token budgetMain content only
Structure keptFull
CitationsYes - every output
Credit cost10 / page
?url=...&filter=fit
response.markdown~184 tokens
# Quickstart

> query: "how do I authenticate?"

## Authentication

All requests require an API key sent as a Bearer token in the
Authorization header. Keys are issued from the dashboard.

```bash
curl -X GET https://api.example.com/data \
  -H "Authorization: Bearer YOUR_KEY"
```

(showing 1 of 24 sections, ranked by relevance)
When to use

Keeps only the paragraphs that match your query - useful when you know what the agent is looking for.

Token budgettop-N by relevance
Structure keptPer-section
CitationsYes - every output
Credit cost10 / page
?url=...&filter=bm25&query=how%20do%20I%20authenticate
How it works

URL in. Clean Markdown out.

1

Send a URL

Call GET /markdown?url=... with optional flags for JS rendering and filter mode. 10 credits per successful conversion.

2

We render + clean

Headless Chromium executes the page, the cleaner walks the DOM, drops boilerplate (nav, footer, ads), and converts the rest to Markdown with preserved structure.

3

You get LLM-ready text

Markdown body with structure preserved, plus a version with numbered citations and a references list that ties the text back to its source URLs.

Try it

Drop a URL in. See the markdown.

Use the playground for a real round-trip - your URL, our renderer, fully cited output.

curl 'https://api.ujeebu.com/markdown' \
  -H 'ApiKey: YOUR_API_KEY' \
  -G \
  --data-urlencode 'url=https://docs.stripe.com/api' \
  --data-urlencode 'filter=fit' \
  --data-urlencode 'js=true'
No API key required for testing in the playground. Powered by /markdown
Features

Everything a clean Markdown pipeline needs.

Smart filtering

Three filter modes - raw, fit, bm25 - keep token budgets predictable. Pick per request.

Citations included

Responses include markdown_with_citations and a references list, so every passage traces back to its source URL. Drop straight into a RAG store.

JS rendering

Real headless Chromium when you need it. Docusaurus, MkDocs, Notion - the SPAs your team actually reads.

Heading hierarchy

Headings survive the round-trip with depth intact, so chunkers can use them as natural boundaries.

Code & table fidelity

Code blocks keep their language hint. Tables stay tables. Lists stay lists. Inline emphasis preserved.

Anti-bot when needed

Heavily protected pages? Set proxy_type=premium or residential. Same endpoint, no separate API.

FAQ

Frequently asked.

How is this different from Firecrawl, Jina Reader, or just calling html-to-md?
All three return Markdown. With Ujeebu you also get filter modes (raw, fit, bm25) to control token spend per request, numbered citations and references for RAG, and one credit pool shared with our Scrape, SERP and AI endpoints, so there is no separate subscription.
What page types work best?
Docs sites, news articles, blogs, knowledge bases, FAQ pages, product changelogs, API references. Highly interactive apps (Figma, Notion live editing) are out of scope - the Markdown we’d return wouldn’t represent the page meaningfully.
Does it work for SPAs / JS-rendered pages?
Yes. Pass js=true and we render with headless Chromium before converting. Same flag as our /scrape endpoint; same anti-bot stack inherited.
How do filter modes work?
raw returns the full page as Markdown. fit (the default) keeps only the main content and drops navigation and boilerplate. bm25 takes a query parameter and returns the passages most relevant to it.
Can I get chunks instead of a single Markdown blob?
Not as a built-in option. The API returns one Markdown document plus numbered citations and references. Split it by heading on your side before loading it into a vector store; headings are preserved, so they make natural chunk boundaries.
What does it cost?
10 credits per successful conversion with the default proxy, with or without JS rendering. Premium and residential proxies cost more, and a solved CAPTCHA adds 5 credits. The exact cost of each call is in the Ujb-Credits response header. Failed requests are free, except 404 Not Found.
5,000 free credits to start.
No credit card. Blocked and timed-out requests are not billed.
Start free

Ship Markdown your LLM actually likes.

One endpoint. 10 credits per page. Citations included. The free trial’s 5,000 credits cover up to 500 conversions before you spend a dollar.

No credit card required.