Toolsy
Back to blog

Tech

MarkItDown explained: Microsoft’s library vs a browser converter

12 min read

MarkItDown is Microsoft’s open-source utility that turns common documents into Markdown so you can edit, search, or feed text into notes apps and LLM pipelines. People search “markitdown” when they want the GitHub project, a Python install, or a quick browser convert. Those are different jobs. The library (and CLI) fits local scripts and batch work. A browser converter fits one-off PDFs and Word files without a Python environment. Toolsy runs online conversion in that same workflow family; it is not the Microsoft GitHub repository. This guide covers what MarkItDown does, how the library differs from an online path, and how to choose without guessing.

Why people search for MarkItDown

Search for “markitdown” spiked after Microsoft published the project for LLM-friendly document ingestion. Developers want a single tool that reads PDF, Office files, HTML, and more, then emits plain Markdown instead of brittle copy-paste. Product teams hear the name in RAG demos and assume it is either a website or a SaaS product. It is neither by default: the core artifact is an open-source package you install yourself.

That mix of intents creates confusion. Some visitors want pip install instructions. Others want the repo URL. A third group wants to drop a PDF into a page and download .md without touching a terminal. If you treat all three as the same page, you ship the wrong answer. Start by naming the job: install and automate, or convert one file now.

You also hit naming collisions. “Markdown” tools that turn Markdown into PDF sit on huge reverse-direction queries. MarkItDown points the other way: documents into Markdown. Keep that direction clear when you compare options or you will waste time on exporters that solve yesterday’s problem.

For AI workflows, the draw is structure. Headings, lists, and tables in Markdown survive chunking better than opaque PDF bytes. That is why MarkItDown shows up next to RAG and knowledge-base talk. For the “why Markdown at all” angle, see why LLMs prefer Markdown over PDF. For company-doc prep, see how to prepare documents for RAG with Markdown.

What MarkItDown is

MarkItDown is an open-source document-to-Markdown converter maintained under Microsoft’s GitHub org. You run it as a Python library or command-line tool. You point it at a file; it returns Markdown text. The design goal is practical text you can paste into editors, wikis, and model context windows.

It targets formats people keep on disk: PDFs with a text layer, Word (.docx), PowerPoint, Excel, HTML, EPUB, and related office exports. Image and scan quality depends on how the stack is configured; blurry photos still fail more than clean digital PDFs. Treat output as a draft. Open the .md, fix odd headings, and check tables before you trust them in production RAG.

Microsoft ships MarkItDown as code you host. You own the install, the Python version, optional extras, and any servers that wrap it. That control is the point for engineering teams. It is also the cost: dependency updates, disk space, and the time to wire a batch job.

Microsoft library and GitHub project

When people type “microsoft markitdown” or “markitdown github,” they want the repository and docs. That path is correct for reading release notes, filing issues, or cloning for local use. Navigational SERPs for those queries lean toward GitHub, not a random converter site. Link people to the official repo when they ask for source; do not pretend a SaaS page replaces it.

The library path fits CI pipelines, nightly ingestion of shared drives, and scripts that process hundreds of files. You control retention, logging, and which machine sees the document. If compliance rules ban third-party upload, you stay on the library.

Python install versus a one-click convert

“markitdown python” and “pip install markitdown” signal install intent. You need a working Python environment, package extras for the formats you care about, and a few minutes to verify a sample file. Once that works, you can call MarkItDown from notebooks, workers, or MCP-style tooling if your stack supports it.

A browser convert skips that setup. You upload, wait, download Markdown. You trade local control for speed. For a single report before a meeting, that trade is often worth it. For a nightly crawl of an intranet, it is not.

Microsoft library versus a browser converter

Two delivery shapes serve the same idea: document in, Markdown out.

Need Prefer the Microsoft library / CLI Prefer a browser converter
Many files on a schedule Yes Rarely
No Python on the laptop No Yes
Files must stay on your network Yes Only if policy allows upload
One PDF before lunch Overkill Yes
Custom plugins / MCP wiring Yes No

The library wins when you automate. You version the package, pin dependencies, and keep documents inside your VPC or laptop. Failures show up in logs you control. You can retry, parallelize, and chain steps into a RAG loader.

A browser converter wins when the job is small and urgent. You avoid environment setup. You accept that the file leaves your machine for processing. On Toolsy, document tools in this family use a MarkItDown-backed convert path: upload PDF or other supported formats, get Markdown text back for the response, and the upload is not kept after processing. Free accounts get a daily file quota and a size cap (about 5 MB); Pro raises those limits. That is enough for handouts, saved articles, and short reports. It is not a substitute for a private cluster job.

Do not conflate brands. Toolsy offers online conversion in the MarkItDown workflow family. Toolsy is not the microsoft/markitdown GitHub project, and it does not replace Microsoft’s docs or issue tracker.

When the library is the better fit

Use the library when you already write Python, when legal wants files on machines you administer, or when volume makes clicking through a UI absurd. Batch convert folders. Fail hard on empty extraction. Store .md next to source files with a naming scheme your indexer understands.

Also choose the library when you need reproducible builds. Pin the package version in requirements.txt or a lockfile so last month’s PDF still converts the same way next quarter. Browser tools change under you; that can be fine for ad hoc work and painful for regression tests.

When an online converter is enough

Use an online path when you have one or a few files, no install rights on a locked corporate laptop, or you want to trial Markdown quality before investing in a pipeline. Start with PDF to Markdown for PDF-only jobs, or Convert to Markdown when the format varies.

Check the result the same way you would after a CLI run. Skim headings. Spot-check a table. If the PDF is a scanned image with no text layer, expect weaker extraction unless OCR is in play; a sharp digital export still beats a phone photo of a printout.

How to try MarkItDown as a library

High-level steps stay stable even as package extras change: create a virtual environment, install MarkItDown from PyPI per the current GitHub README, then convert a sample file from the CLI or a short Python call. Read the official README for the exact install flags for PDF and Office support. Third-party blog posts go stale; the repo is the source of truth.

Pick a representative sample first. A text-based PDF with clear headings teaches you more than a 200-page scan. Compare the Markdown to the original page by page for the first chapter. Note where lists collapse, where page headers pollute the body, and where tables need hand fixes.

Wire the successful command into a script only after that check. Add logging for empty output and timeouts. If you later expose MarkItDown through an API or MCP server, keep the same validation: reject empty Markdown and quarantine files that fail extraction instead of indexing empty garbage.

Skip deep MCP install guides here. “markitdown mcp” searches point at GitHub wiring docs. This article stays on the product choice: library versus browser.

How to convert online without installing Python

Open PDF to Markdown when your file is a PDF. Upload, wait a few seconds, then copy or download the Markdown. Prefer a text PDF under the free size limit. For Word, slides, sheets, EPUB, HTML, or mixed types, use Convert to Markdown or the dedicated format pages.

Before upload, remove password protection if you can unlock the file yourself. Huge scanned binders belong in a local OCR pipeline, not a quick browser pass. After download, open the .md in any editor. Fix heading levels so # means the document title and ## means real sections. That cleanup pays off when you chunk for RAG.

Privacy is a practical filter. Toolsy processes uploads for the job and designs them to be discarded shortly afterward (typically within about one hour). Details: what happens to files after processing. Still skip client-secret PDFs if policy forbids any third-party processing. In that case install MarkItDown on your machine and keep the bytes on your side.

If tables or figures matter more than body prose, read PDF to Markdown with tables and images before you trust a bulk convert. Or convert a sample on PDF to Markdown and check the .md by eye.

What to check in the Markdown output

Open the file and scroll for structure first. You want a sensible heading tree, not a wall of paragraphs with bold used as fake titles. Search for repeated page headers and footers; delete them so chunkers do not treat “Confidential · Page 3” as content.

Tables deserve a second pass. Wide sheets often need column tweaks. Merged cells from Excel or Word often break. Fix the ones you will quote in docs or feed to a model. Lists should use consistent - or 1. markers; mixed markers confuse some renderers.

Images and figures are a known soft spot. Many converters prioritize text. If a chart carries the point of the page, capture a caption by hand or keep the original PDF alongside the Markdown. Empty output means the source had little extractable text: try another export, OCR, or a different tool.

For RAG, split on headings after cleanup. Store source filename and date in front matter or a sidecar index. Garbage in still means garbage retrieval, whether you used the Microsoft library or a browser upload.

Related jobs on Toolsy and sibling guides

Document hubs on Toolsy map to common formats: PDF to Markdown, Word via /docx-to-markdown, and the multi-format hub at Convert to Markdown. Pick the narrow tool when you know the type; use the hub when the extension varies.

Editorial neighbors in this wave:

For Marker vs MarkItDown vs a browser converter, see Marker vs MarkItDown vs online. Here the decision is simpler: automate with the Microsoft library, or convert a few files online.

Limits, privacy, and when not to use either path

Neither path invents text that was never in the file. Encrypted PDFs, broken Office zips, and unreadable scans fail for structural reasons. Fix the source or use dedicated OCR before you blame the converter.

Do not upload regulated personal data to any online tool if your policy forbids it. Use the local library, an air-gapped machine, or an approved internal service. Browser convenience is not a compliance waiver.

Skip MarkItDown-style conversion when you need pixel-perfect layout, interactive forms, or print-ready design. Markdown is for text structure. Keep the original PDF for signatures and layout-critical archives. Also skip reverse converters: if you need Markdown turned into PDF, that is a different product category.

Frequently asked questions

What is MarkItDown?

MarkItDown is Microsoft’s open-source utility that converts documents into Markdown text. You run it as a Python package or CLI against PDF, Office, HTML, and related formats. The point is editable, searchable text for notes, docs, and LLM pipelines rather than a pretty page layout.

Is MarkItDown the same as Toolsy?

No. MarkItDown is the open-source project from Microsoft on GitHub. Toolsy is a browser toolkit that offers online document-to-Markdown conversion in that workflow family. You can use Toolsy without installing Python; you still use Microsoft’s repo when you want the library source or local automation.

How do I use MarkItDown in Python?

Create a virtual environment, install the package from PyPI using the commands in the official README, then call the library or CLI on a sample file. Confirm the extras you need for PDF or Office are installed. Treat the first output as a draft and fix headings before you automate a folder.

Where is the MarkItDown GitHub repo?

Search for microsoft/markitdown on GitHub for the canonical project page. That is the right place for install docs, issues, and release history. Converter websites do not replace the repository when your intent is source code or upstream bugs.

Can I convert PDF to Markdown online instead of installing MarkItDown?

Yes. If you only need a few files, upload them to PDF to Markdown or the multi-format Convert to Markdown hub. You skip Python setup and download .md after processing. Keep sensitive files local with the library when policy requires it.

Does MarkItDown work on Word and PowerPoint files?

The Microsoft project targets common Office formats such as .docx and .pptx in addition to PDF, with support details listed in the official docs. On Toolsy, use the dedicated Word or PowerPoint tools, or the hub, for those uploads. Always spot-check lists and speaker notes after conversion.

What is the difference between MarkItDown and Pandoc?

Pandoc is a general document Swiss Army knife with many input and output formats. MarkItDown focuses on turning everyday documents into Markdown for LLM-friendly text. Overlap exists on PDF and Office paths, but the tools optimize for different workflows. Choose Pandoc when you need exotic format graphs; choose MarkItDown when Markdown ingestion is the main goal.

Is markitdown online safe for confidential PDFs?

Any online converter receives the file for processing. Toolsy processes the upload for the request and designs it to be discarded shortly afterward (typically within about one hour). Read is it safe to upload documents online and the Privacy Policy. If your policy bans third-party processing, install MarkItDown on your machine and keep the file there. When in doubt, strip secrets before any upload.

Why is my Markdown missing tables or images?

Converters prioritize extractable text. Complex tables, merged cells, and figures often need manual cleanup. Scanned pages without a text layer extract weak text unless OCR is involved. For a deeper look, see PDF to Markdown with tables and images. Or run a sample through PDF to Markdown, then fix broken tables and captions in the .md before you automate.

Should I use MarkItDown for a RAG knowledge base?

Yes as a conversion step, not as the whole system. Convert to Markdown, clean headings, then chunk and index with your retrieval stack. Pair this with prepare documents for RAG and why LLMs prefer Markdown over PDF. The library fits batch ingestion; online tools fit trial files before you commit.

For the next file on your desk, pick the path that matches the job: install Microsoft’s MarkItDown when you automate, or convert now with PDF to Markdown / Convert to Markdown when you need a clean .md without a terminal. For Unstructured.io versus MarkItDown on PDF ingestion, see Unstructured.io vs MarkItDown for PDF ingestion.

Convert a PDF to Markdown

Upload a PDF, get clean Markdown with headings and lists when the source allows it. We process for the response, then drop the upload.

Convert PDF to Markdown
Share this article

More to read

MarkItDown explained: Microsoft’s library vs a browser converter — Toolsy