Skip to content

Document to Markdown Converter

Try for free

Convert Word, PowerPoint, Excel, CSV, HTML, EPUB, RTF, OpenDocument, JSON, XML and PDF files to clean, LLM-ready Markdown with metadata, per-slide/sheet sections and RAG chunks.

📄 Document to Markdown Converter

Turn Word, PowerPoint, Excel, CSV, web pages, e-books, RTF, OpenDocument, JSON, XML and PDF files into clean, LLM-ready Markdown. Every document comes back with its title, author, dates and page, slide or sheet counts, and you can get one row per slide, sheet or page, or chunks ready for a vector store. No login, no browser, no AI API: files are parsed directly, in seconds.

✨ Why use Document to Markdown Converter?

  • 🧩 One tool for every office format: DOCX, PPTX, XLSX/XLS, CSV/TSV, HTML, EPUB, RTF, ODT/ODS/ODP, JSON, XML/RSS, Jupyter notebooks, Outlook .msg, and PDFs with a text layer.
  • 🤖 Built for LLMs and agents: headings, lists, tables (GitHub Markdown), links and Word equations (as LaTeX) are kept; page chrome, empty anchors and image noise are dropped. Each row carries a token estimate.
  • ✂️ RAG chunks included: split at headings and paragraphs with your chunk size and overlap, each chunk tagged with its heading path.
  • 🗂️ Sections per slide, sheet and page: one row per slide, spreadsheet tab, PDF page or top-level heading when you need finer rows.
  • 🏷️ Metadata: title, author, description, language, created and modified dates, last editor, application, word count and file size.
  • 💸 Fair pricing: you pay per page converted. Failed or unsupported files are free.

🎯 Use cases

  • 📚 RAG ingestion: feed policies, manuals, decks and spreadsheets into a vector database as clean chunks.
  • 🧠 AI agents over MCP: give an agent a document URL and get readable Markdown back in one call instead of a binary file.
  • 🔎 Search indexing: index the text of Office files and e-books on your intranet or website.
  • 📊 Spreadsheet to text: turn Excel and CSV tables into Markdown tables an LLM can reason over.
  • 🗃️ Document migration: move Word and OpenDocument content into a wiki, CMS or docs-as-code repository.
  • 🧾 Metadata audits: list authors, editors, dates and page counts across a document collection.

🚀 How to use

  1. Paste one or more document URLs (one per line). Google Docs, Sheets and Slides links, Google Drive, Dropbox and GitHub file links work too. Or pick a key-value store with uploaded files.
  2. Choose the output rows: one per document, one per section (slide, sheet, page, heading), or chunks for RAG.
  3. Click Start and wait a few seconds.
  4. Download the results as JSON, CSV, Excel or HTML, or read them through the API or MCP.

📥 Input

FieldDescription
urlsDocument URLs, one per line.
outputModedocument (default), sections or chunks.
chunkSize / chunkOverlapChunk size and overlap in approximate tokens (default 1000 / 100).
keepImagesKeep image tags with URLs (default off: images become their alt text).
htmlMainContentOnlyWeb pages: keep the main content only (default on).
maxRowsPerSheetRows per spreadsheet tab (default 1000).
maxPagesPerDocumentPDF page cap (default 500).
keyValueStoreId / keyValueStoreKeysConvert files from one of your key-value stores.
requestHeadersExtra headers for protected downloads you have access to.
{
  "urls": [
    "https://example.com/files/quarterly-report.docx",
    "https://example.com/files/board-deck.pptx",
    "https://example.com/files/budget.xlsx"
  ],
  "outputMode": "document"
}

📤 Output

FieldDescription
url, fileName, formatSource, file name and detected format (docx, pptx, xlsx, pdf, html, ...).
title, author, description, languageDocument metadata (the title falls back to the first heading or the file name).
createdAt, modifiedAt, lastModifiedBy, applicationDates and authoring details when the file has them.
pageCount, slideCount, sheetCount, rowCount, sectionCountStructure counts.
wordCount, charCount, tokenEstimateSize of the Markdown.
billedPagesPages charged for this document.
markdownThe converted Markdown.
sectionType, sectionNumber, sectionTitleIn section mode: slide, sheet, page or heading section.
chunkIndex, chunkCount, headingsIn chunk mode: position and heading path of the chunk.
warningsNotes, for example a shortened sheet. Files that fail are not saved; they are listed with the reason in the status message and the OUTPUT record (failedInputs).

Example (one row per document, Markdown trimmed):

{
  "url": "https://example.com/files/quarterly-report.odt",
  "fileName": "quarterly-report.odt",
  "format": "odt",
  "title": "Quarterly Report",
  "author": "Jane Example",
  "sectionCount": 1,
  "wordCount": 23,
  "charCount": 208,
  "tokenEstimate": 52,
  "billedPages": 1,
  "fileSizeBytes": 1897,
  "markdown": "# Quarterly Report\n\nRevenue grew strongly. See [the website](https://example.com) for details.\n\n## Highlights\n\n- New office opened\n- Hired 12 people\n\n| Region | Sales |\n| --- | --- |\n| EU | 120 |\n| US | 200 |"
}

A slide deck comes back as ## Slide 1: <title> blocks, a workbook as one ## <sheet name> block with a Markdown table per tab.

💰 Pricing

You pay $2.50 per 1,000 pages ($0.0025 per page), plus a small amount of platform usage (compute and datacenter proxy traffic, usually well under a cent per run).

  • PDFs: one page per PDF page converted.
  • Slide decks (PPTX, ODP): one page per slide.
  • Everything else (Word, Excel, CSV, HTML, EPUB, RTF, JSON, ...): one page per 500 words of Markdown, at least one page per document.

Example: 100 Word documents of about 1,000 words each are 200 pages, about $0.50. Failed, empty and unsupported files are never charged.

❓ FAQ

Do I need an account on the source site, an API key or a proxy? No. Public URLs download directly through the built-in datacenter proxy. For private files you can access, add an Authorization header in requestHeaders, or upload the files to a key-value store.

Is it legal? Converting documents you own or are allowed to read is fine. You are responsible for having the right to process the files you submit.

Which formats are not supported? Legacy binary Word and PowerPoint files (.doc, .ppt), images and scanned PDFs without a text layer (there is no OCR), audio and ZIP archives. They are not saved as rows and cost nothing; the run's status message and the OUTPUT record (failedInputs) list each one with a clear reason.

What if a field is empty? Fields are left out when the file does not contain them (many files have no author or dates). title falls back to the first heading or the file name.

How large can documents be? Up to 50 MB by default (maxFileSizeMb, up to 500 MB). Very long documents are cut to fit one dataset row in document mode, with a warning; use section or chunk mode to keep all text.

Can I use it from an AI agent, the API or on a schedule? Yes. Call it through the MCP server, the REST API or the API clients, or schedule it in the console. Each run returns its rows in the default dataset.

⚠️ Limits

  • No OCR: scanned PDFs and images are reported as failures, not converted.
  • Legacy .doc and .ppt files are not supported; save them as .docx or .pptx.
  • Images are not extracted or described; only their alt text is kept.
  • Complex layouts (multi-column PDFs, floating text boxes) are converted in reading order on a best-effort basis.
  • Spreadsheets keep cell values (formula results), not formulas or formatting.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.