Using Plugins
Enabling Plugins
Plugins are disabled by default and must be explicitly enabled.Listing Installed Plugins
Check which plugins are installed:Finding Plugins
Discover available plugins:1
Search GitHub
Look for repositories tagged with
#markitdown-plugin:Search GitHub for #markitdown-plugin2
Check PyPI
Search PyPI for packages starting with
markitdown-:3
Community Resources
Check the MarkItDown repository for plugin recommendations
Installing Plugins
Plugins are installed as Python packages:Creating Plugins
Plugin Structure
A MarkItDown plugin is a Python package that implements a specific interface:1
Create a DocumentConverter
converter.py
2
Create Plugin Interface
__init__.py
3
Configure Entry Point
pyproject.toml
Entry Point Configuration
The entry point is critical for plugin discovery:- Entry point group: Must be
"markitdown.plugin" - Plugin name: Any unique identifier (e.g.,
rtf_plugin) - Package name: The fully qualified package name (e.g.,
markitdown_rtf_plugin)
Plugin Interface Version
Your plugin must export the interface version:1 is supported.
Registration Function
Implement theregister_converters function:
Advanced Plugin Development
Converter Priority
Control when your converter is tried:Lower priority values are tried first. Built-in converters use
0.0 for specific formats and 10.0 for generic formats.Accessing File Content
Thefile_stream is seekable:
Using Configuration Options
Access configuration passed to MarkItDown:Error Handling
Handle missing dependencies gracefully:Example: Sample Plugin
The official sample plugin demonstrates best practices:Testing Plugins
Test your plugin:Publishing Plugins
1
Package Your Plugin
2
Test Locally
3
Publish to PyPI
4
Tag Repository
Add
#markitdown-plugin topic to your GitHub repository for discoverabilitySecurity Considerations
Best practices:- Review plugin source code before installation
- Use virtual environments for testing new plugins
- Keep plugins updated
- Report security issues to plugin authors
Troubleshooting
Plugin Not Found
If--list-plugins doesn’t show your plugin:
Plugin Fails to Load
Check for errors:Converter Not Called
Ensureaccepts() returns True: