> ## Documentation Index
> Fetch the complete documentation index at: https://docs.markpdf.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Convert heavy documents into clean Markdown for AI agents.

# Flash PDF to Markdown

API to convert documents to readable, compact and easy-to-read Markdown by AI agents.

## What converts

* DOCX
* CSV
* TXT
* XLSX
* PPTX
* ZIP with a supported document inside

## Typical use cases

* **Agents who read contracts or reports**: a legal or financial assistant who needs the content of a PDF in the context of the prompt, without spending tokens on formatting noise.
* **Pipelines RAG**: Index large documents by converting them to clean Markdown before chunking and embedding.
* **Backoffice automation**: convert invoices, shipments or exports XLSX/CSV to structured text so that a LLM extracts fields.
* **Document preview**: display the content of a PDF in a UI without the need for a heavy viewer.
* **Documentation migration**: move manuals or wikis in DOCX to Markdown for a Markdown-based content management system.

For very large PDFs where you are only interested in one section, first use [`POST /pdf/index`](/docs/api/pdf-index) to get the document map and then request only the relevant page range — avoid paying the full conversion and token cost.

## Three ways to send documents

<CardGroup cols={3}>
  <Card title="POST /convert" icon="upload" href="/docs/api/convert">
    Subida `multipart/form-data`.
  </Card>

  <Card title="POST /convert/raw" icon="file-arrow-up" href="/docs/api/convert-raw">
    Raw binary, with optional gzip/zstd.
  </Card>

  <Card title="POST /convert/from-url" icon="link" href="/docs/api/convert-from-url">
    From a signed URL.
  </Card>
</CardGroup>

For large documents, `from-url` is usually better: it prevents your server from receiving and forwarding the same file. `POST /convert/raw` has a separate body limit (12 MB by default) precisely because the binary travels the entire network before starting to convert; `from-url` does not have that limit and goes up to the processing limit (500 MB by default). See [Weights and limits](/docs/api/heavy-and-limits).

## Why Markdown

* Headings (`#`, `##`, `###`) give the model an explicit hierarchy of the document, instead of having to infer it from line breaks or capital letters.
* Tables are normalized to Markdown syntax, so the model does not have to reconstruct columns from loose spaces.
* The default `clean=true` removes repeated headers and footers on each sheet, which would otherwise be repeated hundreds of times in a long document and waste context.

## Quick FAQ

* **Do I need to pre-process PDF?** No. Send it as is: PDF native or scanned, with or without text layer.
* **Can I use it for production?** Yes, it is intended for real agent traffic, not just demos. See [Security](/docs/security) and [Weights and limits](/docs/api/heavy-and-limits).

## Siguiente paso

<Card title="Quickstart" icon="rocket" href="/docs/quickstart">
  Your first conversion in less than a minute.
</Card>
