---
title: "Free URL to Markdown Converter: Clean, LLM Ready Output"
slug: "/tools/url-to-markdown"
description: "Convert any URL to Markdown free. Paste a link and get clean .md with headings, lists, tables and links kept and scripts stripped. Ready for LLMs and RAG."
---

# Convert Any Webpage URL to Markdown in Seconds

To convert a URL to Markdown, paste the webpage link below, choose how long the page should load, and click Convert to get clean Markdown you can copy or download as a .md file. ScreenshotAPI.net renders the page in a real browser first, so JavaScript content is included, then keeps headings, lists, tables, links and images while dropping navigation, scripts and layout noise, free and with no signup.

## How to Convert a URL to Markdown in 3 Steps

To convert a URL to Markdown you only need the link. The converter above does the browser work, and every option you pick maps to one API parameter so the same setup carries over when you convert webpages to Markdown from code.

2.  1
    
    ### Paste the webpage URL
    
    Enter any public link: an article, a docs page, a product listing or a changelog. No account, no browser extension and nothing to install.
    
    `url`
    
3.  2
    
    ### Choose how the page should load
    
    Leave Wait for on Page load for most sites, or pick Network idle for single page apps. Add a delay for charts and late content, and scroll first when the page lazy loads.
    
    `wait_for_event · delay · lazy_load`
    
4.  3
    
    ### Convert, copy or download the .md
    
    ScreenshotAPI.net renders the page in a real browser, converts the visible content to Markdown and shows it beside a screenshot of the same render.
    
    `extract_markdown=true · output=json`
    

What one request looks like

GETshot.screenshotapi.net/v3/screenshot?url=https://www.wikipedia.org/&extract_markdown=true&output=json

Response

{  "screenshot": "https://.../wikipedia_org.png",  "markdown_file": "https://.../wikipedia_org.md",  "url": "https://www.wikipedia.org/",  "extract_markdown": "true",  "output": "json"}

The highlighted field is the Markdown file. The free tool fetches it for you and shows the text. The API hands you the URL so you can store the file or pipe it into an LLM.

## What the Markdown Output Keeps and What It Strips

Turning a webpage to Markdown is a filtering job as much as a formatting one. The page on the left is what the browser sees. The file on the right is what you get back: the content, with the chrome around it removed. Every pin on the mock matches an item in the lists below.

Rendered page

5

4

1

2

3

7

6

Markdown output

# Complete SEO Guide1 Learn how to improve rankings with **modern** SEO techniques.2 ## Key Topics - Keyword research3- Technical SEO- Link building | Plan | Price || --- | --- || Starter | $19/month | [View pricing](https://example.com/pricing)4

### Kept in the page to Markdown output

1

Headings and hierarchy

h1 to h6 become # to ######, so the document outline survives.

2

Paragraphs and emphasis

Body text, bold and italic stay readable without any HTML tags.

3

Lists and HTML tables

Bulleted and numbered lists keep their nesting. Real table elements keep rows, columns and header cells.

4

Links and images

Anchors become [text](url) and images become ![alt](src), both with absolute URLs, so nothing points at a relative path.

### Stripped before you see it

5

Navigation and footers

Menus and repeated footer link blocks are dropped instead of turning into long bullet lists.

6

Scripts, styles and tracking

No inline JavaScript, no style blocks, no analytics snippets. Only what a reader would see.

7

Layout markup

Wrapper divs, classes, ids and inline styles are gone. A 7,000 character page of HTML becomes a few hundred words of text.

## Website to Markdown for LLMs, RAG and AI Agents

Language models read Markdown well and HTML badly. A website to Markdown step in front of your model cuts token use, keeps the document structure the model relies on, and gives you a plain text file you can diff, cache and version.

1.  1. Input
    
    ### Any public URL
    
    Docs, blog posts, changelogs, listings, competitor pages.
    
    `https://example.com/docs/auth`
    
2.  2. Render
    
    ### Real browser load
    
    JavaScript runs, frameworks hydrate, lazy sections mount.
    
    `wait_for_event=networkidle`
    
3.  3. Convert
    
    ### Clean Markdown
    
    Headings, lists, tables and links. No nav, scripts or layout.
    
    `extract_markdown=true`
    

.md

### Prompt context for ChatGPT or Claude

Paste the Markdown instead of a URL. The model gets the whole page, structured, with no fetch step and no HTML tokens wasted.

### Chunks for a RAG index

Split on headings, embed each chunk, store the source URL. Markdown boundaries make far better chunks than raw HTML.

### A tool for AI agents

Agents in Claude, Cursor or Windsurf can call the same conversion through the ScreenshotAPI.net MCP server and read the Markdown inline.

[See the MCP server](https://www.screenshotapi.net/integrations/mcp-server)

## Why Rendering the Page First Gives Better Markdown

Most web page to Markdown scripts download the raw HTML and convert it. On a React, Vue or Angular site that HTML is an empty shell, so the Markdown is empty too. ScreenshotAPI.net opens the URL in a real browser, lets the JavaScript finish, and only then converts what is on the page. We tested it with a page whose content exists only after a script runs, and the headings, paragraph and list all came through.

Plain fetch, then convert

$ curl https://app.example.com/dashboard | html-to-md # Loading... Please enable JavaScript to use this application. <!-- 1 heading, 0 lists, 0 tables, 0 links -->

Render first, then convert

$ shot.screenshotapi.net/v3/screenshot?url=...&extract_markdown=true # Revenue dashboard ## This month | Metric | Value | Change || --- | --- | --- || MRR | $48,200 | +6.1% || Churn | 1.8% | -0.3% | [Export CSV](https://app.example.com/export)

`wait_for_event`

load waits for resources. networkidle waits until the page stops making requests, which is what SPAs and dashboards need.

`delay`

Extra milliseconds after load for charts, counters and anything that animates in. 2000 to 5000 covers most cases.

`lazy_load`

Scrolls the full page before converting so sections that mount on scroll are in the DOM when the Markdown is built.

`cookies / headers`

Send a session cookie or an auth header through the API and convert pages behind a login. Public pages only in the free tool.

## Common Uses: Docs Migration, Knowledge Bases and Research

Anything you would otherwise copy and paste out of a browser. These are the jobs people run through the converter and the API most often.

### Docs migration

Move a documentation site from a CMS or wiki into a Markdown based system such as Docusaurus, MkDocs or Mintlify, one page per .md file.

### Internal knowledge bases

Convert vendor docs, policy pages and partner guides into Markdown your team can search in Notion, Obsidian or a company wiki.

### Research and reading archives

Save articles as plain .md files that stay readable in ten years, diff cleanly in git, and open in any editor.

### Competitor and pricing tracking

Transform a website to Markdown on a schedule and diff the files to spot changed prices, plans and feature lists without screenshots to eyeball.

### Training and evaluation sets

Build clean text corpora from public pages, with headings preserved so you can sample sections rather than whole pages.

### Content audits

Pull every page of a site into Markdown and count headings, links and words per page to find thin or duplicated content.

## Free Tool vs API: Which One Fits Your Workflow

Use the URL to Markdown online tool for a page you need right now. Reach for the API when the conversion has to run without you.

| Need | Free tool on this page | URL to Markdown API |
| --- | --- | --- |
| Pages per run | One URL at a time, in the browser | Any number, from your code or a job queue |
| Authentication | None, public pages only | API key, with cookies and headers for logged in pages |
| Output | Markdown shown on the page, copy or download .md | JSON with a markdown_file URL and a screenshot URL, 30 day hosting |
| Render control | Wait for event, delay, lazy load | Everything here plus viewport, user agent, proxy, JS and CSS injection, timeouts |
| Extra formats | Markdown | Markdown, plain text, rendered HTML, image URLs, PNG, JPG, WebP, PDF |
| Price | Free | Free trial, then plans from the pricing page |

## URL to Markdown API for Automated Extraction

Converting hundreds of pages, or feeding a pipeline? Send the URL to the ScreenshotAPI.net API with extract_markdown=true and output=json. The response is JSON with a markdown_file URL and a screenshot of the same render, so one call gives you the text and the visual proof.

`extract_markdown`

true converts the rendered page to Markdown and returns a markdown_file URL in the JSON response.

`output`

Must be json. Extraction is not available with image or scrolling screenshot output modes.

`wait_for_event / delay / lazy_load`

Control when the page counts as ready. Use networkidle for single page apps and lazy_load for pages that mount content on scroll.

`extract_text / extract_html / get_image_urls`

Add any of these to the same request to get plain text, the rendered HTML or every image URL beside the Markdown.

## URL to Markdown FAQ

Common questions about converting webpages and URLs to Markdown, JavaScript rendering, .md downloads, and automating it with the ScreenshotAPI.net API.

Don't see your question here?

[Browse all help articles](https://www.screenshotapi.net/help)
