Welcome to the markitdown-rs documentation! Here's a comprehensive guide to all available resources.
Start here! Quick overview, installation, and basic usage examples for both CLI and Rust API.
Complete reference of 40+ supported formats including:
- Detailed capabilities for each format
- Known limitations and accuracy notes
- Format categories (Documents, Spreadsheets, Ebooks, Archives, etc.)
Deep dive into how markitdown-rs works:
- Core data model and architecture
- Converter pattern and how to implement
- Complete examples for simple and complex converters
- Multi-page format handling
- Performance considerations
- Full step-by-step guide to adding new formats
Comprehensive testing guide:
- How to run tests (all, specific formats, with debugging)
- Test statistics (198+ passing tests)
- Writing tests for new formats
- Best practices and common issues
- Coverage reporting
Quick reference matrix showing:
- All converters and their extensions
- Which test file covers each format
- Overall test statistics
Guidelines for contributing:
- Setting up development environment
- Workflow for reporting bugs and requesting features
- Step-by-step guide for adding formats
- Code style and testing requirements
- Common issues and troubleshooting
- Install
- Use CLI or Rust API
- Check FORMATS.md for format support
See FORMAT_COVERAGE.md for complete matrix of:
- 40+ formats with converter names
- Supported file extensions
- Test file locations
- Implementation status
| Category | Count |
|---|---|
| Total Tests | 198 ✅ |
| Ignored Tests | 3 |
| Format Categories | 31 |
| Formats Supported | 40+ |
See TESTING.md for full breakdown.
I want to...
- Convert a document → README.md - Quick Start
- Use the CLI → README.md - Command-Line
- Use the Rust API → README.md - Rust API
- Know if a format is supported → FORMATS.md
- Understand how converters work → ARCHITECTURE.md - Core Architecture
- Implement a new format → ARCHITECTURE.md - Adding Formats
- Write tests for a format → TESTING.md - Writing Tests
- Debug a failing conversion → TESTING.md - Debugging
- Contribute code → CONTRIBUTING.md
- Report a bug → CONTRIBUTING.md - Reporting Bugs
- Request a feature → CONTRIBUTING.md - Feature Requests
markitdown-rs/
├── README.md # Main entry point
├── CONTRIBUTING.md # Contribution guidelines
├── Cargo.toml # Project manifest
├── src/
│ ├── lib.rs # Main library interface
│ ├── model.rs # Core data types
│ ├── error.rs # Error types
│ └── <format>.rs # One converter per format (40+ files)
├── tests/
│ ├── <format>.rs # Tests for each format (31 test files)
│ └── test_documents/ # Test fixtures organized by format
├── docs/
│ ├── FORMATS.md # Format reference (this file)
│ ├── ARCHITECTURE.md # Architecture & development guide
│ ├── TESTING.md # Testing guide
│ ├── FORMAT_COVERAGE.md # Converter matrix
│ └── README.md # Documentation index (this file)
└── benches/
└── conversion.rs # Benchmarks
- Rust Book – Learn Rust
- Tokio Documentation – Async runtime
- Original markitdown – Python reference implementation
- Kreuzberg – Test file sources
Q: What's the easiest way to get started? A: Start with README.md for your use case (CLI or API).
Q: How do I add support for a new format? A: Follow the step-by-step guide in ARCHITECTURE.md.
Q: Where do I find test examples? A: See TESTING.md - Test File Template.
Q: Is the library production-ready? A: Yes! All 198 tests pass. See TESTING.md.
Q: What if my format isn't supported? A: Check FORMATS.md first. If not listed, request it.
Q: How do I report a bug? A: Follow CONTRIBUTING.md - Reporting Bugs.
- 40+ Formats supported
- 198 Tests passing
- 3 Ignored tests (edge cases)
- 31 Categories of formats
- Async-first design with Tokio
- Production-ready code
See CHANGELOG.md for recent changes and releases.
Need help? Open an issue or discussion!
Want to contribute? Start with CONTRIBUTING.md!