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

# CSV Reader

> Convert CSV files into knowledge base documents with CSVReader.

`CSVReader` converts each CSV row into a document with `RowChunking` by default.

```python csv_reader.py theme={null}
from pathlib import Path

from agno.knowledge.reader.csv_reader import CSVReader

reader = CSVReader()

csv_path = Path("tmp/test.csv")
csv_path.parent.mkdir(parents=True, exist_ok=True)
csv_path.write_text(
    "name,department\nJordan,Engineering\nTaylor,Product\n",
    encoding="utf-8",
)

documents = reader.read(csv_path)
for document in documents:
    print(document.content)
```

## Run the Reader

<Steps>
  <Snippet file="create-venv-step.mdx" />

  <Step title="Install dependencies">
    ```bash theme={null}
    uv pip install -U "agno[csv]"
    ```
  </Step>

  <Step title="Run the script">
    ```bash theme={null}
    python csv_reader.py
    ```
  </Step>
</Steps>

## Reader Parameters

<Snippet file="csv-reader-reference.mdx" />

Pass `delimiter` and `quotechar` to `read()` for other CSV dialects.

`CSVReader.async_read()` accepts `page_size` to batch files with more than 10 rows before applying the chunking strategy.

## Next Steps

| Task                      | Guide                                                                        |
| ------------------------- | ---------------------------------------------------------------------------- |
| Configure row chunking    | [CSV Row Chunking](/knowledge/concepts/chunking/csv-row-chunking)            |
| Label fields in each row  | [Field-Labeled CSV Reference](/reference/knowledge/reader/field-labeled-csv) |
| Compare available readers | [Readers Overview](/knowledge/concepts/readers/overview)                     |
