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.
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.
Source: 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.
| Format | Conversion method |
|---|---|
| Text and table extraction | |
| PowerPoint, Word, Excel | Structure preserved |
| Images | EXIF metadata + OCR |
| Audio | Metadata + speech transcription |
| HTML, CSV, JSON, XML | Direct conversion |
| ZIP | Iterates over the files inside |
| YouTube URLs, EPUB | Transcript 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.
| Comparison | Built-in converter | Azure Content Understanding |
|---|---|---|
| Document conversion | On-premises per-format extraction | Cloud multimodal extraction |
| Structured fields | None | YAML front matter |
| Audio and video | Audio transcription only, no video | Audio and video analyzer |
| Cost | Local compute | Paid 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
Related posts
Open Source & Dev ToolsCamofox: Stealth Browser for AI Agents
Camofox is a stealth browser for AI agents: the Camoufox engine wrapped with a Node.js REST API and a drop-in open-source alternative to Playwright and Puppeteer that beats Cloudflare bot detection.
Open Source & Dev ToolsOpen Source HyperFrames: Render MP4 Video from HTML
HeyGen's open-source HyperFrames deterministically renders HTML/CSS/seekable animations to MP4 video. No build step, and 20 AI-agent stacks let agents create videos directly.
Why OpenAI Deprecated the openai/skills Repository
OpenAI has deprecated openai/skills, its Codex Skills Catalog repository. Despite 25.7k stars, it now serves only as a reference; active contributors should move to openai/plugins.
Curated, fact-checked, and edited by a single operator before publishing.