HTML to Markdown

FREE with proof-of-workor $0.001 in USDCPOST /api/html-to-markdown

Convert an HTML fragment or document you already have into clean markdown. hiddenContent reports text a reader cannot see (HTML comments, display:none or hidden elements, white-on-white or off-screen text, zero-width characters) and quotes any of it that reads as an instruction to an AI; send hidden: "drop" to leave it out of the markdown. Send POST /api/html-to-markdown with the required field html and pay $0.001 per call over x402 or MPP, or call it free by solving a proof-of-work challenge. It returns a JSON object with markdown and hiddenContent.

(To fetch + convert a live URL, use /api/extract.)

Category: Data conversionTags: html markdown convert

Try in playground →

Parameters

NameTypeRequiredDescription
htmlstringyesHTML text (max 100KB) Also accepted as content, body, markup, text, source.
hiddenstring (one of: keep, drop)noWhat to do with content a reader cannot see (HTML comments, display:none or hidden elements, white-on-white or off-screen text, zero-width characters): "keep" (default) converts it like everything else, "drop" removes it first. Either way hiddenContent reports what was found and quotes any hidden text that reads as an instruction to an AI.

Example request

curl -i -X POST https://agent402.tools/api/html-to-markdown \
  -H "Content-Type: application/json" \
  -d '{"html":"<h1>Hi</h1><p><b>bold</b></p>"}'

Without payment this returns HTTP 402 Payment Required with the exact price for html-to-markdown; any x402 v2 or MPP client pays it and retries.

Example response

{
  "markdown": "# Hi\n\n**bold**",
  "hiddenContent": {
    "mode": "keep",
    "total": 0,
    "found": {
      "comments": 0,
      "cssHidden": 0,
      "hiddenAttr": 0,
      "offscreen": 0,
      "invisibleChars": 0,
      "attributes": 0
    },
    "instructionLike": []
  }
}
FieldTypeAlways presentIn the example
markdownstringyes# Hi **bold**
hiddenContentobjectyes4 fields: mode, total, found, instructionLike

From an MCP client

catalog.call {
  "slug": "html-to-markdown",
  "params": {
    "html": "<h1>Hi</h1><p><b>bold</b></p>"
  }
}

On the hosted connector at https://agent402.tools/mcp, catalog.call runs html-to-markdown free (rate-limited, no wallet). Local install: npx -y agent402-mcp.

Errors and behavior

Paid call (JavaScript agent)

import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client();
client.setSpendControls?.({ maxAmountPerPayment: "$0.001" }); // refuse any quote above this tool's price
registerExactEvmScheme(client, { signer: privateKeyToAccount(KEY) });
const payFetch = wrapFetchWithPayment(fetch, client);

const res = await payFetch("https://agent402.tools/api/html-to-markdown", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    "html": "<h1>Hi</h1><p><b>bold</b></p>"
  }),
});

No wallet? Pay with compute

Fetch a challenge, solve the sha256 puzzle (16 leading zero bits, a fraction of a second of CPU), and resend with the X-Pow-Solution header:

import { createHash } from "node:crypto";
const lz = (b) => { let t = 0; for (const x of b) { if (!x) { t += 8; continue; } t += Math.clz32(x) - 24; break; } return t; };
const c = await (await fetch("https://agent402.tools/api/pow/challenge?slug=html-to-markdown")).json();
let n = 0;
while (lz(createHash("sha256").update(c.challenge + ":" + n).digest()) < c.difficulty) n++;
await fetch("https://agent402.tools/api/html-to-markdown", { method: "POST", headers: { "X-Pow-Solution": c.token + ":" + n, "Content-Type": "application/json" }, body: JSON.stringify({"html":"<h1>Hi</h1><p><b>bold</b></p>"}) });

Part of these workflows

HTML to Markdown is one step in these 2 skill packs, each sold as a single call:

Related tools

Markdown to HTML

FREE w/ compute · or $0.001 · POST /api/markdown-to-html

Render CommonMark + GFM markdown to HTML.

CSV to Markdown table

FREE w/ compute · or $0.002 · POST /api/csv-to-md

Convert CSV into a GitHub-flavored Markdown table (first row is the header).

Base / radix convert

FREE w/ compute · or $0.001 · POST /api/base-convert

Convert an integer between number bases (radix 2-36), e.g. binary↔hex↔decimal.

CSV to JSON

FREE w/ compute · or $0.002 · POST /api/csv-to-json

Parse CSV (quoted fields supported) into a JSON array of objects, using the first row as headers (header=false.

iCalendar parse (.ics)

FREE w/ compute · or $0.001 · POST /api/ics-parse

Parse iCalendar (.ics) text into structured JSON events: summary, start/end, location, organizer, attendees, status.

JSON flatten/unflatten

FREE w/ compute · or $0.001 · POST /api/json-flatten

Flatten nested JSON to dot-path keys, or unflatten dot-path keys back to nested JSON.