All posts
Open Source & Dev Tools

Microsoft's open-source markitdown: turn files into Markdown

Microsoft's open-source markitdown converts PDFs, Office files, images, audio, and YouTube URLs into Markdown for LLM pipelines. CLI and Python API are simple, and it recently trended on GitHub.

Sep 8, 2026 6분 읽기

An open-source document conversion tool riding GitHub trends

Microsoft's open-source markitdown recently climbed the GitHub trending charts. It's a Python utility that picked up 771 new stars in a single day and now has over 180,000 stars in total. Forks have reached roughly 13,000, and with an MIT license anyone is free to use it.

Microsoft MarkItDown project hero imageSource: Microsoft MarkItDown GitHub repository

What this tool does is exactly one thing: it converts a wide range of files — from PDF, PowerPoint, Word, and Excel to images and audio, even YouTube URLs — into a single Markdown format.

Why Markdown — turning documents into a form LLMs can read

You can't feed a PDF or PPT directly into an LLM or text-analysis pipeline; you have to extract it to text first. The problem is that older tools often strip out the document's structure — headings, tables, and links — because they only pull out the plain body text. markitdown focuses on preserving that structure as Markdown.

According to the project documentation, markitdown stays closer to plain text while using just enough Markdown markup to express structure, and LLMs like GPT-4o were trained on large volumes of Markdown text, so they understand it at a near-native level. On top of that, token efficiency is good, which helps keep analysis costs down. Still, the project is explicit that it's a tool built for LLM analysis rather than a high-fidelity converter meant for human reading.

The supported formats break down like this.

FormatConversion method
PDFText and table extraction
PowerPoint, Word, ExcelStructure preserved
ImagesEXIF metadata + OCR
AudioMetadata + speech transcription
HTML, CSV, JSON, XMLDirect conversion
ZIPIterates over the files inside
YouTube URLs, EPUBTranscript and body text extraction

Installation is simple, from the CLI to the Python API

As long as you have Python 3.10 or later, one pip command installs it.

pip install 'markitdown[all]'

The CLI prints Markdown as soon as you pass in a file path.

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

The Python API is similarly simple: create an object, call convert(), and read the result from result.markdown.

from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("test.xlsx")
print(result.markdown)

If you want to keep dependencies light, you can install only the formats you need, for example markitdown[pdf, docx, pptx]. Running it as a Docker image is also supported. If you want captions for images or figures inside PowerPoint, you can pass llm_client and llm_model so an LLM writes the caption — this currently applies only to PowerPoint and image files.

Quality and extension: Azure, then plugins

If the built-in converter isn't enough, you can plug in Microsoft's Azure options. Azure Content Understanding supports multimodal conversion spanning documents, images, audio, and video, and it emits the structured fields the analyzer extracts (such as a receipt's VendorName or InvoiceDate) as YAML front matter. Notably, video conversion is the only path available through this route.

ComparisonBuilt-in converterAzure Content Understanding
Document conversionOn-premises per-format extractionCloud multimodal extraction
Structured fieldsNoneYAML front matter
Audio and videoAudio transcription only, no videoAudio and video analyzer
CostLocal computePaid API per call

Azure Document Intelligence can be enabled by adding a single -d flag to the CLI, and you can point it at a custom endpoint via environment variables. Because Azure-backed conversion is paid per call, you can restrict it to certain formats only — say PDF — using cu_file_types.

Extensions are also possible through plugins. They're disabled by default, but you turn them on with --use-plugins and find them on GitHub under the #markitdown-plugin hashtag. For example, markitdown-ocr is a published plugin that runs LLM-based OCR on text inside images. The repo's GitHub topic already lists autogen, langchain, and openai, and with an official markitdown-mcp package, it looks like the ecosystem is naturally growing toward agents and MCP tooling.

What to know before you use it: scope and security

The goal of this repository is to build a library that gets embedded in other systems. End-user apps like a web API or GUI are explicitly out of scope, so if you need that kind of surface, the documentation recommends building a separate project that depends on markitdown from PyPI.

Security is worth a thought too. The conversion process accesses files and URLs with whatever permissions the process has, so if you're on a server and pass user input straight through, it can lead to SSRF-style issues that fire requests at internal networks or metadata endpoints. If you only ever handle local files, prefer a narrower API like convert_local() and validate inputs carefully.

To sum up: if you need to turn PDFs and Office documents into food for an LLM pipeline, this is an open-source option you can start using right after a one-line pip install, through a single CLI command. But if you need high-quality conversion of complex documents, keep the Azure options and paid API calls in mind.

Reference links

#markitdown#markdown#open source#LLM data pipeline#document conversion
Robeedau

Curated, fact-checked, and edited by a single operator before publishing.