Changelog
Office Oxide follows semver. Pre-1.0, minor versions may include breaking changes — they will always be called out here.
0.1.0 — Initial release
The first public release. Six formats, six bindings.
Highlights
- Six formats: DOCX, XLSX, PPTX, plus legacy DOC, XLS, PPT — pure-Rust core, no JVM, no external binaries.
- Six bindings: Rust, Python, Node.js (native via koffi), Node.js / browser (WASM), Go (cgo), C# / .NET (P/Invoke), C FFI.
- One unified
DocumentAPI across formats and bindings — extension detection, magic-byte sniffing, the same method names everywhere. EditableDocumentwithreplace_text(DOCX, PPTX) andset_cell(XLSX) — preserves all unmodified OPC parts on save.to_markdown/to_html/to_irfor every format — designed for LLM and RAG pipelines.save_asfor transparent legacy → OOXML conversion (DOC → DOCX, XLS → XLSX, PPT → PPTX).- CLI (
office-oxide) and MCP server (office-oxide-mcp) — same engine, different runtimes.
Performance
Benchmarked on 6,062 real-world files:
- DOCX: 0.8 ms mean, 14× faster than python-docx
- XLSX: 5.0 ms mean, 2.8× faster than python-calamine, 18× faster than openpyxl
- PPTX: 0.7 ms mean, 46× faster than python-pptx
- DOC: 0.3 ms mean, 14× faster than catdoc
- XLS: 2.8 ms mean, 13× faster than xlrd
- PPT: 0.7 ms mean, 4× faster than catppt
- Overall pass rate: 98.4% across 6,062 files; zero failures on legitimate Office documents
Distribution
- crates.io:
office_oxide,office_oxide_cli,office_oxide_mcp - PyPI:
office-oxide— wheels for Linux, macOS, Windows × Python 3.8–3.14 - npm:
office-oxide(native),office-oxide-wasm - NuGet:
OfficeOxide - pkg.go.dev:
github.com/yfedoseev/office_oxide/go
Licensing
Dual-licensed under MIT OR Apache-2.0 at your option. No AGPL, no GPL, no copyleft restrictions. Use freely in commercial and open-source projects.
For full details, see the GitHub releases page.