HTML to Markdown Converter
Upload an HTML file or paste a page URL and get clean, readable Markdown. ParseJet handles messy real-world HTML — nested divs, inline styles, legacy markup — and maps every element to proper Markdown syntax. Built for content migration, documentation, and LLM pipelines.
Drop a file here or browse
Accepts HTML,HTM files
Free — 3 requests/day, no signup. for 300 credits/month free.
How it works
Upload HTML or paste a URL
Drop an .html file above, or paste the URL of a live page. Both paths produce the same clean Markdown output.
Convert to Markdown
ParseJet parses the HTML, discards scripts, styles, and tracking code, and maps headings, lists, tables, links, and code blocks to Markdown.
Copy or use the API
Copy the result, or integrate the API to convert HTML to Markdown inside your application or migration script.
Key features
What makes this html to markdown stand out.
Full element mapping
h1–h6, ordered and unordered lists, tables, blockquotes, code blocks, bold/italic, and links all convert to their exact Markdown equivalents.
Messy HTML handled
Real-world HTML is rarely clean. ParseJet copes with unclosed tags, deeply nested divs, inline styles, and legacy markup without breaking the output.
Script and style removal
JavaScript, CSS, tracking pixels, and HTML comments are stripped completely — none of it leaks into your Markdown.
File or URL input
Convert saved .html files (like WordPress exports) or fetch live pages by URL — the same endpoint handles both.
Entity and encoding safe
HTML entities (&, , —) are decoded to real characters, and output is always UTF-8 — no mojibake in your Markdown.
Batch API conversion
Convert an entire export folder of HTML files to Markdown with a short script. See the Python example below.
Use cases
Common scenarios where this tool saves you time.
CMS and blog migration
Move content from WordPress, Ghost, or a legacy CMS into a Markdown-based stack like Hugo, Astro, or Jekyll — without hand-cleaning HTML.
Documentation conversion
Convert HTML-based docs and wiki exports (Confluence, MediaWiki) into Markdown for docs-as-code workflows in Git.
LLM input preprocessing
Raw HTML wastes tokens on markup noise. Convert to Markdown first and feed models compact, structured text that preserves the document hierarchy.
Scraping pipeline output
Turn the HTML your crawler collects into clean Markdown for storage, indexing, or downstream NLP — one API call per document.
Automate with the API
Use the same tool programmatically. Works with any language — just HTTP.
# Convert a local HTML file to Markdown
curl -X POST https://api.parsejet.com/v1/parse/auto/file \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@page.html"
# Convert a live page by URL
curl -X POST https://api.parsejet.com/v1/parse/webpage \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/page"}' import httpx
from pathlib import Path
# Batch-convert an HTML export folder to Markdown files
html_dir = Path("export/")
md_dir = Path("markdown/")
md_dir.mkdir(exist_ok=True)
for html_file in html_dir.glob("*.html"):
resp = httpx.post(
"https://api.parsejet.com/v1/parse/auto/file",
headers={"Authorization": "Bearer YOUR_API_KEY"},
files={"file": (html_file.name, html_file.read_bytes(), "text/html")},
)
md_path = md_dir / html_file.with_suffix(".md").name
md_path.write_text(resp.json()["text"], encoding="utf-8")
print(f"Converted {html_file.name} -> {md_path.name}") // Convert an HTML file (e.g. from a file input) to Markdown
const formData = new FormData();
formData.append("file", htmlFile); // File or Blob with .html content
const res = await fetch("https://api.parsejet.com/v1/parse/auto/file", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY" },
body: formData,
});
const { text } = await res.json();
console.log(text); // Markdown string Want to automate this?
ParseJet API gives you the same parsing power via a single HTTP endpoint. No ffmpeg, no poppler, no tesseract — just one API call.
Frequently asked questions
How do I convert HTML to Markdown?
Upload an .html file above or paste a page URL. ParseJet parses the markup and returns clean Markdown with headings, lists, tables, and links preserved. For automation, POST to /v1/parse/auto/file or /v1/parse/webpage.
Are tables converted properly?
Yes. HTML tables become Markdown tables with header rows and aligned columns. Nested lists, blockquotes, and code blocks are also mapped to their Markdown equivalents.
What happens to scripts, styles, and comments?
They are removed entirely. The output contains only the readable content of the document — no JavaScript, CSS, or tracking code.
Can I convert a live webpage instead of a file?
Yes. Paste the URL in the tool above, or use the URL to Markdown tool which is optimized for extracting the main content of live pages and removing navigation and ads.
How do I convert HTML to Markdown in Python?
POST the file to /v1/parse/auto/file with httpx or requests — the "text" field of the response is your Markdown. No html2text, BeautifulSoup, or markdownify to install. See the Python example above.
Is it free?
Yes. You get 3 free conversions per day with no signup. Create a free account for 300 credits per month. Paid plans start at $19/month for batch migrations.
Related tools
URL to Markdown Converter
Convert any URL to clean Markdown online for free. Paste a link and get the page's main content as Markdown — no ads, no navigation. API available.
Word to Markdown Converter
Convert Word documents (DOCX) to Markdown online for free. Headings, lists, and tables preserved. No signup — or automate DOCX to MD conversion via API.
PDF to Markdown Converter
Convert PDF to Markdown online for free. Preserves headings, lists, tables, and code blocks. No signup required — try it instantly or automate via API.