top of page

Microsoft MarkItDown Guide: Install, Use, Supported Formats, and Limitations

Updated: Aug 21

What is Microsoft MarkItDown?

Microsoft MarkItDown is an open-source Python utility that converts files and other inputs into Markdown. Its output is designed primarily for indexing, text analysis, search, and LLM workflows, where retaining useful structure—such as headings, lists, links, and tables—is more important than recreating the original page layout exactly.

That distinction matters. MarkItDown is not a general-purpose document editor, an official hosted “upload and convert” website, or a default machine-learning system that semantically understands every document. The core project uses format-specific converters. Some AI, OCR, and Microsoft Azure capabilities are available only through explicitly configured optional paths.

The official project lives in the Microsoft MarkItDown GitHub repository, and the installable package is published on PyPI.

Quick answer: use MarkItDown when you need machine-readable Markdown for a search, RAG, knowledge-base, or text-analysis pipeline. Use a layout-preserving export tool instead when the Markdown must visually match the source document for human publication.

Microsoft MarkItDown guide for converting files into Markdown

What files can MarkItDown convert?

The official README currently lists support for PDFs, PowerPoint, Word, Excel, images, audio, HTML, text-based formats such as CSV/JSON/XML, ZIP archives, YouTube URLs, EPUBs, and additional inputs.

Support is modular. Installing the core package does not necessarily install every converter dependency. MarkItDown exposes optional dependency groups such as:

  • pdf for PDF dependencies;

  • docx for Word files;

  • pptx for PowerPoint files;

  • xlsx and xls for Excel formats;

  • outlook for Outlook messages;

  • audio-transcription for WAV and MP3 transcription dependencies;

  • youtube-transcription for YouTube transcripts;

  • az-doc-intel for Azure Document Intelligence;

  • az-content-understanding for Azure Content Understanding;

  • all to install all optional dependencies.

This design lets a small workflow install only what it needs instead of carrying every optional library and cloud integration.

What the Markdown output preserves

MarkItDown focuses on content that downstream tools can use: text, headings, lists, tables, links, and other meaningful structure. It does not promise pixel-perfect reproduction of the source file. A complicated PDF, slide deck, spreadsheet, or scanned document should always be tested with representative files before you commit to a production workflow.

MarkItDown supported input groups with optional OCR, LLM, and Azure paths

How to install Microsoft MarkItDown

MarkItDown requires Python 3.10 or later. A virtual environment is recommended to reduce dependency conflicts.

Install all optional dependencies with:

pip install 'markitdown[all]'

For a smaller installation, choose only the formats you need. For example:

pip install 'markitdown[pdf,docx,pptx]'

You can also install from the official GitHub source:

git clone https://github.com/microsoft/markitdown.git
cd markitdown
pip install -e 'packages/markitdown[all]'

Use the repository README as the authority for current extras and commands; package names and optional capabilities can change between releases.

Is MarkItDown free?

The current PyPI package declares an MIT license, and the repository includes the license text. That makes MarkItDown free and open source, but organizations should still review the current repository license, dependency licenses, trademark guidance, and any cloud-service terms that apply to their deployment.

MarkItDown installation choices for core, selected extras, and all extras

How to use the MarkItDown CLI

The shortest CLI conversion sends Markdown to standard output:

markitdown path-to-file.pdf > document.md

You can also provide an output path directly:

markitdown path-to-file.pdf -o document.md

The CLI can read piped input as well. That is useful in shell pipelines, but it should not be treated as permission to feed arbitrary untrusted files or URLs into a server process.

A practical quality check

Before converting thousands of files, choose a small sample that includes ordinary documents and hard cases: multi-column PDFs, scanned pages, large tables, embedded images, unusual fonts, password-protected files, and malformed inputs. Review:

  • whether headings and lists remain in the right order;

  • whether tables are readable;

  • whether links and metadata survive;

  • how much manual cleanup is required;

  • runtime, memory use, and any cloud cost;

  • whether sensitive files stay within the intended trust boundary.

This pilot is more useful than relying on generic accuracy claims because document quality varies dramatically by source.

How to use the MarkItDown Python API

For programmatic conversion, import the package and call it from Python:

from markitdown import MarkItDown

md = MarkItDown(enable_plugins=False)
result = md.convert("report.pdf")
print(result.text_content)

The Python API—not a built-in REST service—is the project’s primary programmatic interface. If your application needs HTTP endpoints, you can build a service around the Python package, but then authentication, file limits, network access, sandboxing, timeouts, and cleanup become your responsibility.

Use the narrowest conversion method you need

The project’s security guidance warns that MarkItDown performs I/O with the privileges of the running process. Its general convert() method can work with local files, remote URIs, and streams. For tighter control, the documentation recommends using a narrower method such as convert_local() or convert_stream(), or fetching remote content yourself before passing a controlled response to the converter.

Never expose a permissive converter directly to untrusted input without validating file paths, URI schemes, network destinations, sizes, and resource limits.

MarkItDown by Microsoft—file-to-Markdown conversion utility

Built-in conversion versus optional AI and Azure paths

Many descriptions of MarkItDown blur its default converters together with optional AI and cloud services. They should be evaluated separately.

Built-in and format-specific converters

The ordinary local path uses the package and the dependencies installed for each format. It is the simplest choice for supported files when you want local processing and do not need advanced cloud layout analysis.

Third-party plugins

MarkItDown supports third-party plugins, but plugins are disabled by default. You can list installed plugins with:

markitdown --list-plugins

Enable them explicitly with --use-plugins. Review a plugin’s code, dependencies, data handling, and maintenance before using it with sensitive documents.

OCR and LLM-assisted image handling

The separate markitdown-ocr plugin can use an OpenAI-compatible vision client to extract text from images embedded in PDF, DOCX, PPTX, and XLSX files. The core Python API can also accept an LLM client for image descriptions in supported image and PowerPoint workflows.

These features require explicit configuration. They may send image content to the model endpoint you select, so privacy, retention, regional processing, and usage costs depend on that provider and configuration.

Azure Document Intelligence

Azure Document Intelligence is an optional cloud-backed converter for document layout extraction and OCR. It requires the related optional dependency and an Azure endpoint. It is not the default local converter.

Azure Content Understanding

Azure Content Understanding is another optional cloud path. The current project documentation describes multimodal conversion, structured field extraction, and configurable analyzers. Calls routed through it can be billable Azure API calls, so restrict routing to the formats that actually need the service.

MarkItDown local built-in conversion compared with optional plugins and Azure services

When MarkItDown is a good fit

MarkItDown is a strong candidate when:

  • you want Markdown for indexing, RAG, search, or LLM ingestion;

  • your pipeline handles several common file formats;

  • you prefer a Python package and CLI that can run locally;

  • preserving useful document structure matters more than pixel-perfect layout;

  • you are willing to test difficult files and choose optional services only when needed.

It may not be the best fit when:

  • the output must visually reproduce the source document;

  • nontechnical users need an official hosted browser UI;

  • the workflow cannot run Python or containers;

  • untrusted uploads cannot be isolated and validated;

  • scanned or complex documents require guaranteed extraction quality without a separate OCR/cloud strategy;

  • regulated content cannot be sent to an external model or cloud endpoint.

MarkItDown compared with other approaches

Choose the approach based on the output you need:

  • MarkItDown: broad file-to-Markdown conversion for machine consumption, Python workflows, and local-first pipelines.

  • Format-specific libraries: more control over one file type, but you assemble normalization and orchestration yourself.

  • Layout-aware cloud extraction: stronger OCR, layout, or structured-field capabilities for difficult documents, with setup, privacy, and usage-cost trade-offs.

  • Visual document converters: better when humans need a high-fidelity copy rather than Markdown optimized for analysis.

MarkItDown can also act as the normalization layer before a knowledge system. For example, you can convert source material to text-friendly Markdown, validate the result, and then index it in the search or retrieval system of your choice.

Microsoft MarkItDown FAQ

Is there an official MarkItDown online converter?

The official project documentation focuses on the Python package, CLI, Python API, source installation, and Docker. It does not document an official hosted upload-and-convert website. Treat third-party sites using the MarkItDown name as separate services with their own privacy and security policies.

Where is the official MarkItDown download?

Use the official GitHub repository, its releases, or the verified PyPI package. For normal Python use, installing from PyPI is usually simpler than looking for a desktop binary.

Does MarkItDown have an API?

Yes: it provides a Python API. The official documentation does not present a built-in hosted REST API. You can wrap the Python package in your own service, but you must design the service’s security and resource controls.

Does MarkItDown work on Windows and macOS?

MarkItDown requires Python 3.10 or later. It can be used where its Python and format-specific dependencies are supported. Confirm the current installation instructions and test the exact converters you need on your operating system.

Can MarkItDown convert scanned PDFs?

Results depend on the selected path and the source file. Text-based PDFs can use the PDF dependencies. Scanned or image-heavy documents may need the OCR plugin, Azure Document Intelligence, or Azure Content Understanding. Test representative scans before making a production commitment.

Does MarkItDown require a GPU?

The ordinary local conversion path does not generally require a GPU. Optional vision-model or cloud paths have their own compute and service requirements. Do not infer a GPU requirement from the presence of optional AI features.

Is MarkItDown safe for confidential files?

Local execution can reduce unnecessary data transfer, but safety depends on your application. Validate untrusted inputs and use narrow conversion methods. Optional LLM or Azure paths may transmit content to configured external endpoints, so review their policies and architecture separately.

From converted Markdown to usable knowledge

File conversion solves only the normalization step. A useful knowledge workflow still needs indexing, search, access controls, source traceability, and a way to retrieve the right information later.

If you do not want to build that full pipeline yourself, remio can index local folders and files without uploading them and make the resulting information searchable in a personal knowledge workspace. See remio Info Capture for the current supported workflow. MarkItDown and remio are separate products; the connection is simply that both can participate in a broader file-to-knowledge process.

Sources and maintenance note

MarkItDown is actively developed. Before implementing commands or optional integrations, verify the current details in:

This guide deliberately avoids popularity counts and benchmark promises because those values change and extraction quality depends on the document set and selected conversion path.

Give every agent the context to do better work

Connect your agents to the knowledge, decisions, and history already organized in remio.

For the best experience, remio currently supports Windows 10+ (x64) and Macs with Apple silicon.

Your AI Partner at Work
Get more done with remio

Plan. Create. Deliver.
All in one place.

bottom of page