Markdown to HTML
Markdown to HTML is an API that converts Markdown text (GitHub's, Notion's, Obsidian's...) into plain HTML, tables and strikethrough included (GFM). Useful for showing Markdown-written content inside a website, an email, or anywhere that only understands HTML.
How it works
You send the Markdown text (raw or inside a JSON body) and get back the equivalent HTML. It doesn't clean the result: if your Markdown has hand-written HTML mixed in, it comes out as-is, same as any Markdown converter.
If you're going to show that HTML to people you don't control (user comments, say), sanitizing it is on you: this tool doesn't do it for you.
All you need
- Your API key. Create it in your dashboard with "+ Create key". It's shown only once, so copy and save it.
- In your automation platform, an "HTTP Request" step (n8n, Make, Zapier, Pipedream… all have one).
How to use it in n8n (step by step)
In the HTTP Request node:
- Method:
POST - URL:
https://api.cofferdock.com/markdown-to-html - Send Headers: on → add two:
x-api-key= your key, andContent-Type=application/json - Send Body: on → Body Content Type: JSON →
{ "markdown": "# Hello\n\nThis is **Markdown**." }
In Make (HTTP → Make a request module): same method and URL, Body type: Raw, Content type: JSON, with the same body.
Options (inside the JSON)
| Option | Default | What it does |
|---|---|---|
markdown | - | Required. The Markdown text to convert. |
output | json | html to get the raw HTML back instead of JSON. |
API overview
- Endpoint:
POST https://api.cofferdock.com/markdown-to-html - Auth: header
x-api-key: YOUR_KEY. - Input: JSON
{ "markdown": "..." }, or raw Markdown withContent-Type: text/plain. - Engine: marked, CommonMark + GFM (tables, strikethrough, task lists).
- Limits: 30 requests/min per IP. Up to 2MB of text. 1 call = 1 credit.
Examples
curl:
curl -X POST "https://api.cofferdock.com/markdown-to-html" \
-H "x-api-key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"markdown":"# Hello\n\nThis is **Markdown**."}'
JavaScript (Node 18+):
const r = await fetch('https://api.cofferdock.com/markdown-to-html', {
method: 'POST',
headers: { 'x-api-key': 'YOUR_KEY', 'Content-Type': 'application/json' },
body: JSON.stringify({ markdown: '# Hello\n\nThis is **Markdown**.' }),
});
const { html } = await r.json();
Response
{ "success": true, "html": "<h1>Hello</h1>\n<p>This is <strong>Markdown</strong>.</p>",
"meta": { "used": 12, "remaining": 488 } }
What you get back
html, the converted result. With output=html, the raw HTML as the response body (Content-Type: text/html), no JSON wrapper.