# csv

> For the complete documentation index, see [llms.txt](https://docs.redpanda.com/llms.txt). Component-specific: [cloud-data-platform-full.txt](https://docs.redpanda.com/cloud-data-platform-full.txt)

---
title: csv
latest-operator-version: v26.1.4
latest-console-tag: v3.7.3
latest-connect-version: 4.93.0
latest-redpanda-tag: v26.1.9
docname: connect/components/scanners/csv
page-component-name: cloud-data-platform
page-version: master
page-component-version: master
page-component-title: Cloud
page-relative-src-path: connect/components/scanners/csv.adoc
page-edit-url: https://github.com/redpanda-data/cloud-docs/edit/main/modules/develop/pages/connect/components/scanners/csv.adoc
page-git-created-date: "2024-09-09"
page-git-modified-date: "2026-05-26"
---

<!-- Source: https://docs.redpanda.com/cloud-data-platform/develop/connect/components/scanners/csv.md -->

**Type:** Scanner ▼

[Scanner](https://docs.redpanda.com/cloud-data-platform/develop/connect/components/scanners/csv/)[Input](https://docs.redpanda.com/connect/components/inputs/csv/)

**Available in:** Cloud, [Self-Managed](https://docs.redpanda.com/connect/components/scanners/csv/%20%22View%20the%20Self-Managed%20version%20of%20this%20component%22)

Consume comma-separated values row by row, including support for custom delimiters.

```yml
# Config fields, showing default values
csv:
  custom_delimiter: "" # No default (optional)
  parse_header_row: true
  lazy_quotes: false
  continue_on_error: false
```

## [](#metadata)Metadata

This scanner adds the following metadata to each message:

-   `csv_row` The index of each row, beginning at 0.


## [](#fields)Fields

### [](#continue_on_error)`continue_on_error`

If a row fails to parse due to any error emit an empty message marked with the error and then continue consuming subsequent rows when possible. This can sometimes be useful in situations where input data contains individual rows which are malformed. However, when a row encounters a parsing error it is impossible to guarantee that following rows are valid, as this indicates that the input data is unreliable and could potentially emit misaligned rows.

**Type**: `bool`

**Default**: `false`

### [](#custom_delimiter)`custom_delimiter`

Use a provided custom delimiter instead of the default comma.

**Type**: `string`

### [](#lazy_quotes)`lazy_quotes`

If set to `true`, a quote may appear in an unquoted field and a non-doubled quote may appear in a quoted field.

**Type**: `bool`

**Default**: `false`

### [](#parse_header_row)`parse_header_row`

Whether to reference the first row as a header row. If set to true the output structure for messages will be an object where field keys are determined by the header row. Otherwise, each message will consist of an array of values from the corresponding CSV row.

**Type**: `bool`

**Default**: `true`