> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reducto.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Table output formats

> Learn about the different formats available for table output in the API

Reducto provides several options for controlling how tables are formatted in the API response. You can specify the table output format using the `table_output_format` parameter in the advanced options.

## Available formats

### Dynamic format

The dynamic format (`dynamic`) automatically chooses between markdown and HTML based on table complexity:

* Uses markdown for simple tables (≤ 30 cells and ≤ 4 merged cells)
* Uses HTML for complex tables

This is our overall recommended format for RAG use cases, etc.

### HTML format

```html theme={null}
<table>
  <tr>
    <th>Header 1</th>
    <th>Header 2</th>
  </tr>
  <tr>
    <td>Data 1</td>
    <td>Data 2</td>
  </tr>
</table>
```

The HTML format (`html`) returns tables as HTML strings with proper support for:

* Table headers (`<th>` tags)
* Merged cells (using `rowspan` and `colspan` attributes)
* Complex table structures
* Cell formatting

This is the default format and is recommended for accuracy sensitive use cases as it preserves all table information.

### Markdown format

```md theme={null}
| Header 1 | Header 2 |
|----------|----------|
| Data 1   | Data 2   |
```

The Markdown format (`md`) returns tables in GitHub-flavored markdown format. This is useful when:

* You need a human-readable format
* You're displaying the content in markdown viewers
* You want simpler table representation
* The table doesn't have complex merged cells

### JSON format

```json theme={null}
[
  ["Header 1", "Header 2"],
  ["Data 1", "Data 2"]
]
```

The JSON format (`json`) returns tables as nested arrays where:

* The outer array represents rows
* Each inner array represents cells in that row
* First row typically contains headers
* All cell values are strings

This format is useful for programmatic processing of table data.

### JSON with bounding boxes

```json theme={null}
[
  [
    {
      "text": "Header 1",
      "bbox": {
        "x": 0.1,
        "y": 0.2,
        "width": 0.3,
        "height": 0.4
      }
    }
  ]
]
```

The JSON with bounding boxes format (`jsonbbox`) extends the JSON format by including positional information for each cell. The coordinates are normalized to \[0,1] range where:

* `x`: Distance from left edge of the page
* `y`: Distance from top edge of the page
* `width`: Cell width as percentage of page width
* `height`: Cell height as percentage of page height

### CSV format

```csv theme={null}
Header 1,Header 2
Data 1,Data 2
```

The CSV format (`csv`) returns tables in comma-separated values format. This is useful when:

* You need to import the data into spreadsheet software
* You want a simple, widely-supported format
* The table structure is relatively simple
* You want to save on output tokens.

### AI JSON format

The AI JSON format (`ai_json`) uses a custom LVM to parse the table structure and return the underlying JSON data. This mode performs the best in cases where the underlying table structure is very complex and not strictly tabular or contains many artifacts.
