Same task, explicit profiles
Direct converters use defaults. The remark pipeline includes GFM and serialization. HTML pipelines keep heading case, labels, alt text, and unmarked lists. All configurations are in the source and snapshot.
The benchmark notebook
What survives conversion? How long does it take? What do you ship? Compare the complete pipelines, and inspect the text behind the numbers.
Exploratory snapshot · Maintained by the remove-markdown project. These measurements use a small, authored corpus on one machine. Broader workloads and an independent rerun are planned before making broader performance claims.
One mixed Markdown document repeated to four sizes. Imports and initialization are excluded; every conversion stage is included. A pipeline is timed only when its output matches the expected content after whitespace normalization.
| Pipeline | Median / conversion | Middle 50% of samples | MiB / second | Content matches | Bundle, gzip |
|---|
Latency samples are per-batch averages, not individual request latencies. Content matches use the separate 31-case output audit. Bundle sizes include the complete standalone pipeline; they do not verify browser compatibility.
Our declared policy retains readable content—including code and image alt text—while removing formatting. Some libraries intentionally make different choices. Inspect exact output before choosing a tool for your use case.
Repeated unmatched opening brackets, at 1,024, 4,096, and 16,384 bytes. Each probe runs in a fresh worker with a two-second deadline, including initialization. This tests one failure pattern; it is not a security audit.
| Pipeline | 1,024 bytes | 4,096 bytes | 16,384 bytes |
|---|
Direct converters use defaults. The remark pipeline includes GFM and serialization. HTML pipelines keep heading case, labels, alt text, and unmarked lists. All configurations are in the source and snapshot.
Three isolated workers per size and pipeline, 100 ms warm-up, 15 timed batches per worker, and a seeded random job order. One workstation and one repeated synthetic document cannot represent every workload.
Raw outputs, exact matches, whitespace-normalized matches, failures, timing samples, source hashes, and environment details travel with the report. Option-specific cases are reported separately for remove-markdown.
markdown-to-txt requires an explicit lodash dependency because its published code imports lodash without declaring it. That dependency is pinned and counted in the bundle.