
Link to Text Converter: Extract Text or Markdown from a URL
A link-to-text converter takes a webpage URL and extracts its readable content. Use plain text for a text-only destination, or Markdown to retain headings, links and lists for notes, search or an AI workflow.
For a single public HTML page, open Webclaw's free Website to Markdown tool. For a terminal workflow, the CLI can return plain text. For application code, use the scrape API example below.
Convert a link without writing code
The browser tool converts one page per attempt:
- Open Website to Markdown and paste the complete public URL.
- Complete verification if prompted, then select Convert to Markdown.
- Compare the result with the source page. Copy the Markdown or download the
.mdfile.
Markdown is a text format with syntax for headings and links. A .md download is not a formatting-free .txt export. Use the CLI's text format if you need that output.
The free browser tool needs no account. It shares three attempts per network per UTC day across the free tools, and service capacity limits also apply. It processes content present in HTML; login-only pages, PDFs and JavaScript-rendered content are outside this tool's scope. A failed extraction can consume an attempt. Check the tool's current limits before a larger job.
We tested the browser tool on September 26, 2026 with example.com and our open-source crawler article. The article conversion returned 1,453 words and a downloadable Markdown file with tables and code. It also retained some toolbar labels and the site's closing CTA. Review the output and remove irrelevant text before adding it to a document collection; conversion does not guarantee complete boilerplate removal.
Convert a URL to plain text in the terminal
After installing the Webclaw CLI, run:
webclaw https://example.com --only-main-content --format text
We ran this command against the public Example Domain page on September 26, 2026. The output contained the page heading and its explanatory paragraph, without HTML tags. This excerpt omits blank lines and the final “Learn more” link label:
Example Domain
This domain is for use in documentation examples without needing permission. Avoid use in operations.
Save the output to a file in Bash or Zsh:
webclaw https://example.com --only-main-content --format text > page.txt
Replace the URL with a page you have permission to process. example.com is a small sanity check, not a benchmark for a dynamic site. Inspect a representative page from your own source before converting a whole collection.
Plain text, Markdown or structured JSON?
Choose the format based on what you need to preserve.
| Output | Useful for | Check before using it |
|---|---|---|
| Plain text | Text-only imports, reading and basic text search | Link destinations and heading syntax may be absent |
| Markdown | Research notes, documentation and AI context | Tables and complex layouts can lose meaning during conversion |
| Structured JSON | Named fields such as product, price and availability | Define the fields you need and verify them against the source |
Converting a page to Markdown does not summarize it. It also does not turn a pricing paragraph into validated price fields. For that task, use structured extraction and review missing or ambiguous values.
Mozilla Readability, for example, exposes article HTML and plain textContent as separate results. You still need to fetch the document and decide how to format its content. A browser or extraction service can handle those steps for you; a parser alone cannot recover text that was absent from its input.
Automate link-to-text conversion with the API
The Webclaw scrape endpoint accepts formats: ["text", "markdown"] and returns those formats as top-level response fields. Use /v1/scrape for page content; /v1/extract serves a different structured-data workflow.
This Node.js example uses the built-in fetch function. Supply your key through WEBCLAW_API_KEY in your environment, not in the source file. Run it as an .mjs file on Node.js 20 or newer.
const apiKey = process.env.WEBCLAW_API_KEY;
if (!apiKey) throw new Error("Set WEBCLAW_API_KEY before running this example");
const response = await fetch("https://api.webclaw.io/v1/scrape", {
method: "POST",
headers: {
Authorization: `Bearer ${apiKey}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://example.com",
formats: ["text", "markdown"],
only_main_content: true,
}),
signal: AbortSignal.timeout(60000),
});
if (!response.ok) throw new Error(`Scrape failed: HTTP ${response.status}`);
const page = await response.json();
if (typeof page.text !== "string" || !page.text.trim()) {
throw new Error("The response did not contain readable text");
}
console.log(page.text);
We ran this JavaScript example against the hosted API on September 26, 2026 and received the Example Domain text. The nonempty-text check catches an empty result, not a wrong one. Compare the returned heading and a known paragraph with the source. Review errors before retrying, and keep source URLs alongside stored text so you can trace a result back to its page.
The scrape reference documents response fields and selector options. For a shell request instead of JavaScript, see sending JSON with curl. The MCP setup guide covers using Webclaw from compatible agent clients.
Check extraction quality before processing more URLs
A successful request can still return incomplete content. Take a page you know and check both a passage near the beginning and one near the end. For a documentation page, check a code block; for a product page, check the values you need, not just the product name.
Use this checklist before saving the output:
- The title and body belong to the requested page, not a login, consent or error screen.
- The output includes the sections needed for your task.
- Links, tables and code retain enough structure for the destination format.
- You kept the source URL and extraction date with the result.
only_main_content narrows extraction to a main content region where one exists. A sidebar or specification table outside that region may disappear. The API also supports include and exclude selectors for a known layout; test those against more than one page before reusing them.
For repeated collection, the open-source crawler guide covers the step from one URL to a bounded crawl. For document retrieval, the web-data RAG guide covers downstream indexing. Neither step compensates for missing source text.
Troubleshoot empty or incomplete output
| Result | Next check |
|---|---|
| Only navigation or a short page shell | Compare the initial HTML with the rendered page; the missing text may require JavaScript |
| Login or access-denied message | Use an authorized API or export; do not treat the message as the requested document |
| Missing table or sidebar | Check the chosen content region and selectors |
| File download instead of HTML | Use a parser for that content type; the free browser converter accepts HTML pages |
| Allowance or rate-limit error | Follow the displayed reset or retry guidance; repeated submissions do not fix it |
Frequently asked questions
Can I convert a link to text for free?
Webclaw's browser tool offers limited, no-account Markdown conversion. The CLI provides a terminal path to plain text. Hosted API usage follows your account's plan and limits; the free tool's allowance is separate.
Does a link-to-text converter summarize the page?
No. Extraction keeps source content in a different format. Summarization produces a shorter interpretation and can omit details. Review the extracted text before asking a model to summarize it.
Is “copy link to text” the same thing?
No. A browser's text-fragment link points to a passage within the original page. It does not export the page text. MDN explains the #:~:text= syntax in its text fragments reference.
Can the free converter process a whole website or a video transcript?
The free Website to Markdown tool processes one public HTML page. It does not crawl a site or transcribe a video. Use a workflow designed for the source type and test the result before scaling it.