Crate & Package Structure
Workspace crates (crates/)
html-to-markdown— core library, primary Rust API,unsafe_code = "forbid"at workspace levelhtml-to-markdown-cli— CLI binary (clap)html-to-markdown-ffi— C FFI bridge, cbindgen headers, only crate that overrides unsafe_code linthtml-to-markdown-py— PyO3 Python bindinghtml-to-markdown-node— NAPI-RS Node/TypeScript bindinghtml-to-markdown-php— ext-php-rs PHP bindinghtml-to-markdown-wasm— wasm-bindgen WebAssembly binding
Out-of-workspace packages (packages/)
csharp/,elixir/,go/,java/,r/,ruby/— language-native packages wrapping the FFI cratephp/,python/,typescript/,wasm/— distribution packages
Primary API
convert(&str, Option<ConversionOptions>) -> Result<ConversionResult, ConversionError>ConversionResult:content,warnings, optionallymetadataandinline_images(feature-gated)- Feature flags:
inline-images,metadata,visitor(custom traversal),serde - Dual parser: html5ever (spec-compliance) and astral-tl (performance), selectable via
ConversionOptions