- Category
- Developer Tools
- Rank
- No. 4302Tools index
Previous survey · No. 3986 ·
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Data Processing
- Interfaces
- SDK
- Builder
- @nickscamara_
- GitHub
- 23.4k stars
- Latest release
- v0.2.4
- Date
About
MIT-licensed Rust document-to-Markdown library with Node, Python, CLI and browser bindings. Most formats use a shared document model; PDFs convert directly to Markdown. Local scanned-PDF handling needs OCR, while optional wrapper fallback sends the whole document to a hosted service. Built-in browser CSV/RTF samples converted in the trial.
At a glance
Anydoc is worth evaluating for document ingestion when you want ordinary office files converted to Markdown without starting with a hosted AI service. Its Rust parsers expose Node, Python, CLI and browser bindings. The public demo converted built-in CSV and RTF examples in the trial. The important boundary is scanned PDFs: local conversion needs readable text, while optional hosted OCR can send the whole document to another service.
Good fit
Developers preparing mixed document collections for search, retrieval or an agent to read. Most formats pass through a common document model and Markdown renderer, which gives integrations a shared representation instead of a separate output convention for every parser. PDFs are an exception: the inspected Rust entry point converts them directly to Markdown and does not support the document-model path. Choose the API according to whether you need text or structured assets.
Consider something else when
You need a faithful reproduction of page layout, locally performed OCR or proven accuracy on your own complex documents. Images and embedded objects in ordinary Markdown do not reproduce the original document’s full visual content. A scanned PDF can return needsOcr rather than usable text. Enabling hosted OCR is a separate processing decision, not a way to retain the default local-only boundary. Complex tables, equations and reading order still need comparison with the original.
Start here
Open the browser demo and choose report.csv or notes.rtf before supplying any document. The trial returned a Markdown table for CSV and preserved bold/italic markers from the RTF sample. Those samples are assembled in the page and passed through the converter, not uploaded personal files. For a later CLI evaluation, the documented pattern is npx @firecrawl/anydoc report.docx, which downloads the platform package on first use; it was not run here. Keep OCR at its default rejection behavior until you have chosen a permitted processing path.
Cost and requirements
The source is MIT-licensed. The inspected package is version 0.2.4; its Node manifest requires Node 20 or newer, and building the Rust crate requires Rust 1.88 or newer. The browser package uses WebAssembly and its calls run synchronously, so a worker may be needed for a responsive application. Local compute and integration work are yours to provide. The wrappers describe keyless hosted OCR with limits and optional paid-service credentials; no hosted quota, price, payment or OCR request was tested.
Limits to know
The Node and Python wrappers default to rejecting PDFs that need OCR. With hosted OCR enabled, the fallback posts the full file to Firecrawl Parse, with an API endpoint override available. It does not send only the scanned pages. The Rust core has no such hosted option. Only two small built-in browser samples were tried; native bindings, complex files, encrypted inputs, PDF extraction and OCR remain untested. The demo’s displayed milliseconds and the publisher’s benchmark are not an independent performance study or a corpus-wide quality result.
Related work
Still unclear
- Conversion fidelity and failure handling on a representative private corpus were not tested.
- Native bindings, PDF extraction and the optional hosted OCR path were not exercised.
Sources checked 2026-10-31. Source-based assessment.
- github.com/firecrawl/anydoc/blob/main/README.md
- github.com/firecrawl/anydoc/blob/main/LICENSE
- github.com/firecrawl/anydoc/blob/main/Cargo.toml
- github.com/firecrawl/anydoc/blob/main/node/package.json
- github.com/firecrawl/anydoc/blob/main/python/anydoc/__init__.py
- github.com/firecrawl/anydoc/blob/main/src/lib.rs
- github.com/firecrawl/anydoc/blob/main/wasm/README.md
- github.com/firecrawl/anydoc/blob/main/node/anydoc.js
- github.com/firecrawl/anydoc/blob/main/node/cli.js
- firecrawl.github.io/anydoc/
Why it made the leaderboard
A useful candidate for mixed-document ingestion when local text conversion fits the job. The guide distinguishes plain Markdown from structured assets, small tested samples from unverified corpus fidelity, and default local rejection from optional whole-file hosted OCR. It does not repeat publisher speed claims as independent measurements.
Tags
Tech Stack
Media
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.