markitdown
Convert documents to Markdown using MarkItDown MCP tools. Use when the user wants to convert PDF, read PPTX, extract text from DOCX, convert document to markdown, or mentions .pdf/.docx/.pptx/.xlsx/.xls/.ppt/.doc files for reading or conversion. Triggers on phrases like "convert to markdown", "read this document", "extract text from", "parse this file" with binary document formats.
Best use case
markitdown is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Convert documents to Markdown using MarkItDown MCP tools. Use when the user wants to convert PDF, read PPTX, extract text from DOCX, convert document to markdown, or mentions .pdf/.docx/.pptx/.xlsx/.xls/.ppt/.doc files for reading or conversion. Triggers on phrases like "convert to markdown", "read this document", "extract text from", "parse this file" with binary document formats.
Teams using markitdown should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/markitdown/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How markitdown Compares
| Feature / Agent | markitdown | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Convert documents to Markdown using MarkItDown MCP tools. Use when the user wants to convert PDF, read PPTX, extract text from DOCX, convert document to markdown, or mentions .pdf/.docx/.pptx/.xlsx/.xls/.ppt/.doc files for reading or conversion. Triggers on phrases like "convert to markdown", "read this document", "extract text from", "parse this file" with binary document formats.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# MarkItDown - Document to Markdown Conversion Use `mcp__markitdown__convert_to_markdown` whenever the user needs to read or extract text from binary document formats that Claude's native Read tool cannot parse. ## What MarkItDown Does MarkItDown converts binary and structured document formats into clean, readable Markdown text. It preserves document structure including headings, tables, lists, and other formatting elements. **Supported formats:** - **Office documents**: DOCX, PPTX, XLSX, DOC, PPT, XLS - **PDF**: PDF files (though Claude's Read tool also handles PDFs natively) - **Images**: PNG, JPG, JPEG, GIF, BMP, TIFF (extracts text via OCR when available) - **Web formats**: HTML, HTM - **Data formats**: CSV, JSON, XML - **Archives**: ZIP (extracts and converts contents) - **Audio**: MP3, WAV (transcribes audio when possible) - **eBooks**: EPUB ## When to Use MarkItDown Use the markitdown MCP tool when: 1. **The file is a binary Office format**: `.docx`, `.pptx`, `.xlsx`, `.doc`, `.ppt`, `.xls` — Claude's Read tool returns garbled binary data for these formats. MarkItDown is the only reliable way to extract their text content. 2. **The user wants structured extraction**: When the user needs to preserve table structure, slide content, spreadsheet data, or document formatting in a machine-readable form. 3. **Processing multiple documents in a ZIP**: When a ZIP archive contains documents that need to be converted together. 4. **The user explicitly asks to "convert to markdown"**: Regardless of file type, honor this intent by using MarkItDown. ## When NOT to Use MarkItDown Do NOT use MarkItDown for: - **Plain text files** (`.txt`, `.md`, `.csv`, `.json`, `.xml`, `.html`): Use Claude's native Read tool — it handles these perfectly and is faster. - **Source code files** (`.py`, `.js`, `.ts`, `.java`, etc.): Use the Read tool directly. - **PDF files**: For PDF extraction, prefer **EdgeParse** (`edgeparse` plugin) — it is faster, preserves document structure (headings, tables, bounding boxes), and supports page ranges and borderless tables. Only fall back to MarkItDown for PDFs when EdgeParse is not installed. - **Images when the user wants visual analysis**: Use Claude's native image understanding instead of OCR-only text extraction. ## How to Use ### Basic document conversion Call `mcp__markitdown__convert_to_markdown` with a `file://` URI: ``` mcp__markitdown__convert_to_markdown(uri="file:///absolute/path/to/document.docx") ``` The tool accepts `http:`, `https:`, `file:`, or `data:` URIs. For local files, always use the `file://` scheme with an absolute path (`file:///path/to/file`). The tool returns the document content as a Markdown string. Use this output directly to answer the user's question or to further process the content. ### Workflow for binary documents When the user asks to read, summarize, or analyze a `.docx`, `.pptx`, or `.xlsx` file: 1. Construct a `file://` URI from the absolute path (e.g. `file:///home/user/report.docx`) 2. Call `mcp__markitdown__convert_to_markdown` with the `uri` argument 3. Read the returned Markdown content 4. Answer the user's question based on the extracted content Do not attempt to use the Read tool on these binary formats first — it will return unreadable binary data and waste time. ### Handling PPTX (PowerPoint) files PowerPoint files convert to Markdown with each slide's content. Slide titles become headings, bullet points become list items, and tables are preserved. Speaker notes may also be included. ### Handling XLSX (Excel) files Excel spreadsheets convert with each sheet's data rendered as Markdown tables. Multiple sheets are separated with sheet name headings. ### Handling DOCX (Word) files Word documents convert with full structure: headings, paragraphs, tables, and lists are all preserved in Markdown format. ## Important Notes - **Always use `file://` URIs with absolute paths**: Construct the URI as `file:///absolute/path/to/file`. Relative paths are not supported — resolve to absolute first if needed. - **The MCP server uses `uvx markitdown-mcp`**: It requires `uv` to be installed on the system. If the tool fails, check that `uv` is available. - **Large files**: Very large documents (hundreds of pages) may take longer to convert. This is expected behavior. - **Password-protected files**: MarkItDown cannot open password-protected Office documents or encrypted PDFs without the password.
Related Skills
use-zod
Answer questions about the Zod schema validation library and help build schemas, parsers, refinements, transforms, codecs, and error formatters. Use when developers: (1) ask about Zod APIs like `z.object`, `z.string`, `z.array`, `z.union`, `z.discriminatedUnion`, `parse`, `safeParse`, `z.infer`; (2) define request/response/form schemas in TypeScript; (3) handle `ZodError` or customize error messages; (4) migrate between Zod v3 and v4 (entry-point split, `formatError` → `treeifyError`/`prettifyError`, unified `error` param replacing `message`/`errorMap`). Triggers on: "zod", "z.object", "z.string", "z.array", "z.union", "z.infer", "z.input", "z.output", "ZodError", "$ZodError", "safeParse", "parseAsync", "z.codec", "treeifyError", "prettifyError", "flattenError", "discriminatedUnion", "zod/v4", "zod/v3", "zod/mini", "z.coerce", "superRefine".
workflow
Creates durable, resumable workflows using Vercel's Workflow SDK. Use when building workflows that need to survive restarts, pause for external events, retry on failure, or coordinate multi-step operations over time. Triggers on mentions of "workflow", "durable functions", "resumable", "workflow sdk", "queue", "event", "push", "subscribe", or step-based orchestration.
wpds
Use when building UIs leveraging the WordPress Design System (WPDS) and its components, tokens, patterns, etc.
wp-wpcli-and-ops
Use when working with WP-CLI (wp) for WordPress operations: safe search-replace, db export/import, plugin/theme/user/content management, cron, cache flushing, multisite, and scripting/automation with wp-cli.yml.
wp-rest-api
Use when building, extending, or debugging WordPress REST API endpoints/routes: register_rest_route, WP_REST_Controller/controller classes, schema/argument validation, permission_callback/authentication, response shaping, register_rest_field/register_meta, or exposing CPTs/taxonomies via show_in_rest.
wp-project-triage
Use when you need a deterministic inspection of a WordPress repository (plugin/theme/block theme/WP core/Gutenberg/full site) including tooling/tests/version hints, and a structured JSON report to guide workflows and guardrails.
wp-plugin-development
Use when developing WordPress plugins: architecture and hooks, activation/deactivation/uninstall, admin UI and Settings API, data storage, cron/tasks, security (nonces/capabilities/sanitization/escaping), and release packaging.
wp-playground
Use for WordPress Playground workflows: fast disposable WP instances in the browser or locally via @wp-playground/cli (server, run-blueprint, build-snapshot), auto-mounting plugins/themes, switching WP/PHP versions, blueprints, and debugging (Xdebug).
wp-phpstan
Use when configuring, running, or fixing PHPStan static analysis in WordPress projects (plugins/themes/sites): phpstan.neon setup, baselines, WordPress-specific typing, and handling third-party plugin classes.
wp-performance
Use when investigating or improving WordPress performance (backend-only agent): profiling and measurement (WP-CLI profile/doctor, Server-Timing, Query Monitor via REST headers), database/query optimization, autoloaded options, object caching, cron, HTTP API calls, and safe verification.
wp-block-development
Use when developing WordPress (Gutenberg) blocks: block.json metadata, register_block_type(_from_metadata), attributes/serialization, supports, dynamic rendering (render.php/render_callback), deprecations/migrations, viewScript vs viewScriptModule, and @wordpress/scripts/@wordpress/create-block build and test workflows.
wp-abilities-api
Use when working with the WordPress Abilities API (wp_register_ability, wp_register_ability_category, /wp-json/wp-abilities/v1/*, @wordpress/abilities) including defining abilities, categories, meta, REST exposure, and permissions checks for clients.