DocToolkit, a headless browser, or an Office install?
What each approach needs on your server before it can convert a document, what it converts, and what it takes to run. Every cell comes from DocToolkit's own README and guides, or this site's DocToolkit page; where they say nothing, the cell is left empty.
| Needs on the server | DocToolkit | Headless browser | Office install |
|---|---|---|---|
| A browser binary | No | Yes, downloaded to the server | No |
| Office installed and licensed | No | No | Yes, on Windows |
| Native files | None | The browser's native libraries | Office's own program files |
| In a container | A plain .NET runtime image, with nothing to apt-get install | A headless browser installed into the image: a few hundred MB, and a CVE feed to watch | |
| What it converts | HTML and Markdown to DOCX and PDF; DOCX to HTML, Markdown and PDF; XLSX to CSV, HTML and PDF; PPTX and legacy .ppt to PDF; legacy .doc to DOCX | HTML, rendered to PDF | DOCX to PDF, through Word: the case DocToolkit's DOCX to PDF guide discusses |
| HTML layout | Text, headings, tables, lists, inline styles and images; no flexbox, grid, floats or absolute positioning | Pixel-accurate | |
| Licence | MIT; its 35 dependencies are MIT or Apache-2.0, with no revenue thresholds | A licensed Word installation on the server | |
| Server-side use | Its container sample is built and run in CI with no network | Through COM automation, which Microsoft explicitly does not support for server-side use | |
| Network at run time | None by default; remote images are an opt-in, per call or through DocToolkitOptions, with a host allow-list | ||
| Platforms | Linux, macOS, Windows and arm64, each tested in CI | Windows |
DocToolkit's build output held 0 native files when measured on 2026-08-09, with the package added to an empty net8.0 console app.
Where the cells come from
Each filled cell is taken from DocToolkit's README, its guides (Getting started, Capabilities, Running in production, HTML to Word and PDF, DOCX to PDF), the measurement under the table, or this site's DocToolkit page (its Why pure .NET table). Nothing is filled from memory.