Fetch public web pages as clean Markdown with markdown.new through a single curl request. Use this whenever a user gives you a URL and wants the page fetched, summarized, analyzed, quoted, rendered in the terminal, or saved as Markdown—especially when they mention markdown.new, Cloudflare Markdown conversion, curl, jq, glow, or token efficiency. Prefer this over downloading raw HTML for single-page fetches.
Use https://markdown.new/ as the default way to turn a public web page into clean Markdown. It is lighter than fetching raw HTML and asking the agent to parse it afterward.
Use this skill when:
.md filemarkdown.new, Cloudflare Markdown conversion, curl, jq, glow, or token savingsDo not use this skill for:
method: "auto"..contentmethod: "browser".method: "ai" with retain_images: true.browser fails, stop retrying and report the best available result.auto)curl -fsSL 'https://markdown.new/' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://simonwillison.net/2026/Mar/5/chardet/",
"method": "auto"
}' | jq
Use this only when the auto result looks incomplete.
curl -fsSL 'https://markdown.new/' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://simonwillison.net/2026/Mar/5/chardet/",
"method": "browser"
}' | jq
curl -fsSL 'https://markdown.new/' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://simonwillison.net/2026/Mar/5/chardet/",
"method": "ai",
"retain_images": true
}' | jq
curl -fsSL 'https://markdown.new/' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://simonwillison.net/2026/Mar/5/chardet/",
"method": "auto"
}' | jq -r '.content' | glow
curl -fsSL 'https://markdown.new/' \
-H 'Content-Type: application/json' \
-d '{
"url": "https://simonwillison.net/2026/Mar/5/chardet/",
"method": "auto"
}' | jq -r '.content' > article-chardet.md
When the URL or method comes from variables, build the JSON body with jq -nc so shell quoting stays correct.
URL='https://simonwillison.net/2026/Mar/5/chardet/'
METHOD='auto'
curl -fsSL 'https://markdown.new/' \
-H 'Content-Type: application/json' \
-d "$(jq -nc --arg url "$URL" --arg method "$METHOD" '{url:$url, method:$method}')" | jq
With image retention:
URL='https://www.nasa.gov/image-of-the-day/'
curl -fsSL 'https://markdown.new/' \
-H 'Content-Type: application/json' \
-d "$(jq -nc --arg url "$URL" '{url:$url, method:"ai", retain_images:true}')" | jq
Before you summarize a page, inspect a small preview:
curl -fsSL 'https://markdown.new/' \
-H 'Content-Type: application/json' \
-d "$(jq -nc --arg url 'https://example.com' '{url:$url, method:"auto"}')" | \
jq '{title, method, content_length:(.content|length), preview:(.content|split("\n")[:20]|join("\n"))}'
This catches empty or obviously incomplete results early.
For scripts that should fail fast, prefer jq -e:
curl -fsSL 'https://markdown.new/' \
-H 'Content-Type: application/json' \
-d "$(jq -nc --arg url 'https://example.com' '{url:$url, method:"auto"}')" | \
jq -e 'if .success == true and (.content | length) > 0 then {title, method, content_length:(.content|length)} else error(.error // "markdown.new returned no content") end'
.content.jq -r '.content' > file.md.jq -r '.content' | glow.glow is unavailable, fall back to jq -r '.content'.curl exits non-zero, report the error clearly..error field, surface it.browser rendering fails, explain that the page could not be rendered and continue with the best available auto or ai result.