markitdown
Python tool for converting files and office documents to Markdown.
File Explorer
- devcontainer.json
- pre-commit.yml
- tests.yml
- dependabot.yml
- __init__.py
- latex_dict.py
- omml.py
- __init__.py
- pre_process.py
- __init__.py
- __init__.py
- _audio_converter.py
- _bing_serp_converter.py
- _csv_converter.py
- _cu_converter.py
- _doc_intel_converter.py
- _docx_converter.py
- _epub_converter.py
- _exiftool.py
- _html_converter.py
- _image_converter.py
- _ipynb_converter.py
- _llm_caption.py
- _markdownify.py
- _outlook_msg_converter.py
- _pdf_converter.py
- _plain_text_converter.py
- _pptx_converter.py
- _rss_converter.py
- _transcribe_audio.py
- _wikipedia_converter.py
- _xlsx_converter.py
- _youtube_converter.py
- _zip_converter.py
- __about__.py
- __init__.py
- __main__.py
- _base_converter.py
- _exceptions.py
- _markitdown.py
- _stream_info.py
- _uri_utils.py
- py.typed
- MEDRPT-2024-PAT-3847_medical_report_scan.md
- movie-theater-booking-2024.md
- RECEIPT-2024-TXN-98765_retail_purchase.md
- REPAIR-2022-INV-001_multipage.md
- SPARSE-2024-INV-1234_borderless_table.md
- test.md
- equations.docx
- masterformat_partial_numbering.pdf
- MEDRPT-2024-PAT-3847_medical_report_scan.pdf
- movie-theater-booking-2024.pdf
- random.bin
- RECEIPT-2024-TXN-98765_retail_purchase.pdf
- REPAIR-2022-INV-001_multipage.pdf
- rlink.docx
- SPARSE-2024-INV-1234_borderless_table.pdf
- test.docx
- test.epub
- test.jpg
- test.json
- test.m4a
- test.mp3
- test.pdf
- test.pptx
- test.wav
- test.xls
- test.xlsx
- test_blog.html
- test_files.zip
- test_llm.jpg
- test_mskanji.csv
- test_notebook.ipynb
- test_outlook_msg.msg
- test_rss.xml
- test_serp.html
- test_svg_no_fallback.pptx
- test_wikipedia.html
- test_with_comment.docx
- __init__.py
- _test_vectors.py
- test_cli_misc.py
- test_cli_vectors.py
- test_cu_converter.py
- test_docintel_html.py
- test_module_misc.py
- test_module_vectors.py
- test_pdf_masterformat.py
- test_pdf_memory.py
- test_pdf_tables.py
- test_pptx_svg.py
- pyproject.toml
- README.md
- ThirdPartyNotices.md
- __about__.py
- __init__.py
- __main__.py
- py.typed
- __init__.py
- Dockerfile
- pyproject.toml
- README.md
- __about__.py
- __init__.py
- _docx_converter_with_ocr.py
- _ocr_service.py
- _pdf_converter_with_ocr.py
- _plugin.py
- _pptx_converter_with_ocr.py
- _xlsx_converter_with_ocr.py
- docx_complex_layout.docx
- docx_image_end.docx
- docx_image_middle.docx
- docx_image_start.docx
- docx_multipage.docx
- docx_multiple_images.docx
- pdf_complex_layout.pdf
- pdf_image_end.pdf
- pdf_image_middle.pdf
- pdf_image_start.pdf
- pdf_multipage.pdf
- pdf_multiple_images.pdf
- pdf_scanned_invoice.pdf
- pdf_scanned_meeting_minutes.pdf
- pdf_scanned_minimal.pdf
- pdf_scanned_report.pdf
- pdf_scanned_sales_report.pdf
- pptx_complex_layout.pptx
- pptx_image_end.pptx
- pptx_image_middle.pptx
- pptx_image_start.pptx
- pptx_multiple_images.pptx
- xlsx_complex_layout.xlsx
- xlsx_image_end.xlsx
- xlsx_image_middle.xlsx
- xlsx_image_start.xlsx
- xlsx_multiple_images.xlsx
- __init__.py
- test_docx_converter.py
- test_pdf_converter.py
- test_pptx_converter.py
- test_xlsx_converter.py
- LICENSE
- pyproject.toml
- README.md
- __about__.py
- __init__.py
- _plugin.py
- py.typed
- test.rtf
- __init__.py
- test_sample_plugin.py
- pyproject.toml
- README.md
- .dockerignore
- .gitattributes
- .gitignore
- .pre-commit-config.yaml
- CODE_OF_CONDUCT.md
- Dockerfile
- LICENSE
- README.md
- SECURITY.md
- SUPPORT.md
# Installation Guide
pythonSetup Steps
git clone https://github.com/microsoft/markitdown.git
Clone the repository locally.
python -m venv .venv
Create a Python virtual environment.
source .venv/bin/activate
Activate the virtual environment.
pip install -e 'packages/markitdown[all]'
Install the package in editable mode with all optional dependencies.
Key Commands
pip install 'markitdown[all]'
Install MarkItDown and optional dependencies.
markitdown path-to-file.pdf -o document.md
Convert files to markdown.
# Use via CDN
jsDelivrjsDelivr serves any public GitHub repository as a CDN with zero setup. Pick a version and a file to get a ready-to-paste link and snippet.
Release Timeline
Actively Maintained- 2026-07-29 Version 0.1.7
- 2026-05-26 Version 0.1.6
- 2026-02-20 v0.1.5
- 2026-01-08 Version 0.1.5b1 Pre-release
- 2025-12-01 Version 0.1.4
- 2025-08-26 v0.1.3
- 2025-05-28 v0.1.2
- 2025-05-21 v0.1.2a1 Pre-release
- 2025-03-25 v0.1.1
- 2025-03-22 v0.1.0
Command Glossary
Commands referenced in this DOCs, explained below.
conda activate
View Details ▼
conda activate
Activate a conda environment.
See also: `conda deactivate`.
conda activate myenv
Activate an existing environment named `myenv`:
conda activate {{path/to/myenv}}
Activate an existing environment located at custom path:
conda activate --stack myenv
Stack `myenv` environment on top of a previous environment making libraries/commands/variables from both accessible:
conda create
View Details ▼
conda create
Create new conda environments.
conda create {{[-y|--yes]}} {{[-n|--name]}} py39 python=3.9 "numpy>=1.11" scipy
Create a new environment named `py39`, install Python 3.9, NumPy v1.11 or above in it, and the latest stable version of SciPy. Say yes to all confirmations:
conda create {{[-n|--name]}} myenv --file {{file1.yml}} --file {{file2.yml}}
Create a new environment named `myenv` and install packages listed in files:
conda create {{[-p|--prefix]}} {{path/to/myenv}}
Create a new environment at a custom path (i.e. prefix):
docker build
View Details ▼
docker build
Build an image from a Dockerfile.
docker build .
Build a Docker image using the Dockerfile in the current directory:
docker build {{github.com/creack/docker-firefox}}
Build a Docker image from a Dockerfile at a specified URL:
docker build {{[-t|--tag]}} {{name:tag}} .
Build a Docker image and tag it:
docker run
View Details ▼
docker run
This command is an alias of `docker container run`.
tldr docker container run
View documentation for the original command:
git clone
View Details ▼
git clone
Clone an existing repository.
git clone {{remote_repository_location}} {{path/to/directory}}
Clone an existing repository into a new directory (the default directory is the repository name):
git clone --recursive {{remote_repository_location}}
Clone an existing repository and its submodules:
git clone {{[-n|--no-checkout]}} {{remote_repository_location}}
Clone only the `.git` directory of an existing repository:
hatch
View Details ▼
hatch
Modern, extensible Python project manager.
See also: `poetry`.
hatch new {{project_name}}
Create a new Hatch project:
hatch new --init
Initialize Hatch for an existing project:
hatch build
Build a Hatch project:
pip install
View Details ▼
pip install
Install Python packages.
pip install {{package1 package2 ...}}
Install one or more packages:
pip install {{package1 package2 ...}} {{[-U|--upgrade]}}
Upgrade all specified packages to the latest version, installing any that are not already present:
pip install {{package}}=={{version}}
Install a specific version of a package:
pre-commit
View Details ▼
pre-commit
Create Git hooks that run before commits.
pre-commit install
Install pre-commit into your Git hooks:
pre-commit run
Run pre-commit hooks on all staged files:
pre-commit run --all-files
Run pre-commit hooks on all files, staged or unstaged:
python
View Details ▼
python
Python language interpreter.
python
Start a REPL (interactive shell):
python {{path/to/file.py}}
Execute a specific Python file:
python -i {{path/to/file.py}}
Execute a specific Python file and start a REPL:
uv venv
View Details ▼
uv venv
Create an isolated Python environment for installing packages.
uv venv
Create a virtual environment in the default location (`.venv`):
uv venv {{path/to/venv}}
Create a virtual environment at a specific path:
uv venv {{[-p|--python]}} {{3.12}}
Create using a specific Python version:
