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; 0 (default) keeps every row.
maxPagesPerDocumentPDF pages to convert; 0 (default) converts every page.
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 per page converted:

EventFreeStarterScaleBusiness
Page (per 1,000)$3.00$2.55$2.55$2.55

Platform usage (compute, proxy, browser) is included in the price; you pay the events only.

  • 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, $0.60 on Free, $0.51 on Business. 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). Every page and every spreadsheet row is converted by default. Very long documents are cut to fit one dataset row (about 8 MB) in document mode, with a warning, and only the saved share is charged; use section or chunk mode to keep all text (a sheet too big for one row is saved as several parts).

Can I use it from an AI agent, the API or on a schedule? Yes. Call it through the Scrape.ly API, CLI, or from AI agents through the Scrape.ly MCP server, 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.
  • One dataset row holds about 8 MB of Markdown: in document mode longer documents are cut (with a warning, charged only for the saved part); section mode splits a longer sheet into parts and chunk mode keeps everything.
  • Converting one document may take at most 4 minutes; a bigger file is reported as failed (not charged).
  • 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

//From the blog\\

Latest articles

All articles

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.

No credit card. No setup calls.