Free Tool

URL to Markdown Converter

Paste any web page URL and get clean Markdown back — or convert up to 10 URLs at once in bulk. Main content extracted, navigation and ads stripped, tables and code blocks preserved. Copy it, download it as .md, or call the free API.

Options
100% FreeNo Signup RequiredFree API Included

URL to Markdown API

Free, no API key, no signup. Send a GET request with the page you want converted and get Markdown back — 60 requests per hour per IP.

Endpoint

GET https://www.redseo.io/api/tools/url-to-markdown?url={url}

Raw Markdown, straight to a file

curl "https://www.redseo.io/api/tools/url-to-markdown?url=https://example.com&format=markdown" -o page.md

JSON with metadata

curl "https://www.redseo.io/api/tools/url-to-markdown?url=https://example.com"
{
  "markdown": "# Example Domain\n\nThis domain is for use in...",
  "title": "Example Domain",
  "description": "",
  "wordCount": 28,
  "extractedFrom": "main content",
  "sourceUrl": "https://example.com/",
  "truncated": false
}

Bulk — repeat the url parameter

curl "https://www.redseo.io/api/tools/url-to-markdown?url=https://example.com&url=https://example.org&format=markdown"

Up to 10 URLs per request, converted in parallel. With format=markdown the pages come back as one document separated by --- rules; with JSON you get a results array. Each URL in a batch counts against your hourly limit.

Bulk via POST

curl -X POST https://www.redseo.io/api/tools/url-to-markdown \
  -H "Content-Type: application/json" \
  -d '{"urls": ["https://example.com", "https://example.org"]}'

{
  "results": [
    { "url": "https://example.com", "ok": true, "markdown": "# Example Domain\n...",
      "title": "Example Domain", "wordCount": 28, "sourceUrl": "https://example.com/" },
    { "url": "https://example.org", "ok": false, "error": "The page returned HTTP 404." }
  ],
  "total": 2,
  "succeeded": 1,
  "failed": 1
}

Parameters

ParameterDefaultDescription
urlRequired. The public http(s) page to convert. Repeat it to convert up to 10 pages in one request.
formatjsonmarkdown returns the raw Markdown body as text/markdown.
mainContentOnlytrueStrip nav, sidebars, footers and ads.
includeLinkstrueSet false to flatten links to plain text.
includeImagestrueSet false to drop images entirely.
includeFrontmatterfalsePrepend YAML frontmatter with title, description and source.

In JavaScript

const res = await fetch(
  "https://www.redseo.io/api/tools/url-to-markdown?url=" +
  encodeURIComponent("https://example.com")
);
const { markdown, title } = await res.json();

Errors return a JSON body with an error field and a matching HTTP status (400 for a bad URL, 429 when rate limited, 502 when the page can’t be fetched). Only public http(s) addresses are accepted.

Turn any URL into clean Markdown

Raw HTML is a terrible format to read, diff, or feed to a language model. A single article page can carry hundreds of kilobytes of navigation, tracking scripts, cookie banners and styling around a few thousand words of actual text. This free URL to Markdown converter fetches the page server-side, isolates the article body, and gives you back portable Markdown — headings, lists, tables, code blocks and links intact, everything else gone.

Webpage to Markdown, without the copy-paste cleanup

Copying a rendered page into a Markdown editor loses the structure: headings collapse into bold text, lists lose their nesting, and tables arrive as tab-separated mush. Converting the underlying HTML instead preserves the document tree. Every <h2> becomes ##, every <table> becomes a GitHub-flavored Markdown table, and every <pre> becomes a fenced code block with its language label where the page declares one. Relative links and image sources are rewritten to absolute URLs, so the file still works once it leaves the original site.

Why convert a web page to Markdown for AI

Markdown has become the default way to hand web content to LLMs, and for a practical reason: it encodes the same structure as HTML in a fraction of the tokens. Stripping the markup off a typical article cuts its size by 80–95%, which means more of your context window goes to content and less to <div> soup. Switch on YAML frontmatter and each file carries its own title, description and source URL, so you keep provenance when you index a batch of pages. If you want to publish a structured summary of your own site for AI crawlers instead, the LLMs.txt Generator writes the file the emerging spec asks for.

Download a website as Markdown, page by page

The tool above converts one page at a time, which is usually what you want. For a whole site, take the complete URL list from the Website Page Counter — it reads your sitemap, including Yoast and other index-based sitemaps, and exports every URL as CSV — then loop those URLs through the API endpoint documented above. A short shell loop over the CSV will write one .md file per page.

What gets removed, and what survives

  • Removed: scripts, styles, SVG, iframes, forms and inputs, navigation, sidebars, footers, breadcrumbs, cookie banners, share buttons, comment threads, and long lists of short navigation links.
  • Kept: headings, paragraphs, ordered and unordered lists including nesting, tables, blockquotes, inline and fenced code, bold and italic, links, and images with their alt text.
  • Your call: links, images, frontmatter, and whether to isolate the main content at all — turn off “Main content only” to convert the entire page.

When the output comes back thin

This converter reads the HTML the server actually sends, the same way a non-rendering crawler does. If a site builds its content in the browser with JavaScript, that HTML may be close to empty — and the Markdown will be too. That is a genuine SEO signal worth knowing about: run the page through the SSR Testing Tool to see the server HTML and the rendered DOM side by side, or the Googlebot Simulator to see how Google’s crawler handles it.

Frequently Asked Questions