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.

Wait for
Extra delay before converting
Lazy loaded pages

Free to use. No account required.

Your Markdown will appear here, with the rendered page one tab away.

Step by step

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.

  1. 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
  2. 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
  3. 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.

Before and after

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

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.
AI workflows

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

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
Rendering engine

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.
Use Cases

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.

Which one

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.

Comparison of the free URL to Markdown tool and the ScreenshotAPI.net API
NeedFree tool on this pageURL to Markdown API
Pages per runOne URL at a time, in the browserAny number, from your code or a job queue
AuthenticationNone, public pages onlyAPI key, with cookies and headers for logged in pages
OutputMarkdown shown on the page, copy or download .mdJSON with a markdown_file URL and a screenshot URL, 30 day hosting
Render controlWait for event, delay, lazy loadEverything here plus viewport, user agent, proxy, JS and CSS injection, timeouts
Extra formatsMarkdownMarkdown, plain text, rendered HTML, image URLs, PNG, JPG, WebP, PDF
PriceFreeFree trial, then plans from the pricing page
Do this via the API

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.
POSThttps://shot.screenshotapi.net/v3/screenshot
# The API answers with JSON, for example:
# { "screenshot": "https://.../page.png", "markdown_file": "https://.../page.md" }
curl -X POST "https://shot.screenshotapi.net/v3/screenshot" \
  -H "Content-Type: application/json" \
  -d '{
    "token": "YOUR_API_KEY",
    "url": "https://example.com/docs/getting-started",
    "extract_markdown": true,
    "output": "json",
    "wait_for_event": "networkidle",
    "lazy_load": true
  }'

# Then download the Markdown file from the "markdown_file" URL
curl -o getting-started.md "https://.../page.md"

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