1. Use Variable Chunking for RAG
The default chunking mode (disabled) returns the entire document as one chunk. For RAG applications you need smaller chunks that can be embedded and retrieved independently.
Variable chunking splits at semantic boundaries like section headers, tables, and figures, keeping related content together while creating chunks sized for embedding models.
embed field contains table and figure summaries as natural language, which embeds better than raw Markdown tables. The content field preserves the original formatting for display.
2. Enable Agentic Mode Only When Needed
Agentic mode uses an LLM to review and correct parsing output. It adds latency with additional credit usage, so only enable it when needed. When to enablescope: "text":
- Handwritten documents or signatures
- Faded or low-quality scans
- Documents with unusual fonts
- When you see garbled characters in output
scope: "table":
- Tables with misaligned columns after parsing
- Merged cells that didn’t parse correctly
- Numbers appearing in wrong columns
- Financial documents where accuracy is critical
scope: "figure":
- Charts and graphs that need data extraction
- Advanced chart extraction with structured data output
- Diagrams requiring detailed descriptions
- Visual elements where you need numeric data from bar charts, line graphs, or pie charts
3. Set Priority for Async Requests
Parse has sync (/parse) and async (/parse_async) endpoints.
Async requests without priority: true enter a queue and may experience delays during high traffic. If you’re using async for latency-sensitive requests (user-facing features, real-time processing), always set priority.
4. Use HTML for Complex Tables
The default table format (dynamic) auto-selects HTML or Markdown based on complexity. For documents with complex tables (merged cells, nested headers, multi-row cells), explicitly request HTML.
json format instead.
5. Filter Headers and Footers for RAG
Page headers, footers, and page numbers add noise to RAG retrieval. When a user asks about invoice totals, you don’t want to retrieve chunks containing “Page 1 of 5” or “Confidential - Do Not Distribute”.chunks[].blocks metadata (so you can access them if needed), but they’re excluded from content and embed fields.
Common Pitfalls
Requests taking too long
Requests taking too long
If you’re using agentic mode, it adds latency since it runs an LLM pass over the output. Disable it and only enable for document types that actually need correction. For async calls, make sure you have
priority: true set.RAG retrieval quality is poor
RAG retrieval quality is poor
Check your chunking. If you’re using
disabled (default), the entire document is one chunk. Switch to variable for semantic chunking.Tables render incorrectly
Tables render incorrectly
Switch from
dynamic to html format. Markdown can’t handle merged cells.Async jobs are slow even for small docs
Async jobs are slow even for small docs
You forgot to set
priority: true. Without it, jobs enter a queue.Document fails with 'corrupted' or 'invalid' error
Document fails with 'corrupted' or 'invalid' error
The PDF file may be malformed or use unsupported encryption. Try opening the file in a PDF viewer to verify it’s valid. If the file opens but Reducto fails, the PDF may use non-standard formatting. Re-save it using a tool like Adobe Acrobat or a PDF printer, then retry.
Configuration Reference
For complete details on all options mentioned above, see the dedicated configuration pages:Chunking Methods
All chunking modes and their use cases.
Agentic Mode
When and how to use LLM-assisted parsing.
Table Formats
HTML, Markdown, JSON, CSV options.
Default Config
Full reference of all configuration options.