# csv

> A mature CSV toolset with simple api, full of options and tested against large datasets.

Latest version **6.6.3** (published 2026-08-05) · MIT license · 0 weekly downloads

## Install

```sh
npm install csv
pnpm add csv
yarn add csv
bun add csv
```

## Health

**Score 75/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 6.6.3 |
| Published | 2026-08-05 |
| First published | 2011-01-21 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >= 0.1.90 |
| Dependencies | 4 |
| Unpacked size | 2 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 4286 |
| Author | David Worms |
| Maintainers | david |
| Keywords | node, csv, tsv, parser, parse, stringifier, stringify, transform, stream, generate, generation, backend, frontend |

## Links

- npm: https://www.npmjs.com/package/csv
- Repository: https://github.com/adaltas/node-csv
- Homepage: https://csv.js.org
- Issues: https://github.com/adaltas/node-csv/issues
- npm.io page: https://npm.io/package/csv

## Dependencies (4)

- [csv-parse](https://npm.io/package/csv-parse.md) ^7.0.2
- [csv-generate](https://npm.io/package/csv-generate.md) ^4.6.1
- [csv-stringify](https://npm.io/package/csv-stringify.md) ^6.8.3
- [stream-transform](https://npm.io/package/stream-transform.md) ^3.5.1

## Alternatives

- [csv-to-markdown-table](https://npm.io/package/csv-to-markdown-table.md) — 47.0K weekly downloads
- [@sapphire/ratelimits](https://npm.io/package/@sapphire/ratelimits.md) — 4.4K weekly downloads
- [js-csvparser](https://npm.io/package/js-csvparser.md) — 2.0K weekly downloads
- [@adadapted/js-sdk](https://npm.io/package/@adadapted/js-sdk.md) — 251 weekly downloads
- [@grapecity/spread-sheets-sparklines](https://npm.io/package/@grapecity/spread-sheets-sparklines.md) — 103 weekly downloads

## Recent versions

- 6.6.3 (latest) — 2026-08-05
- 6.6.2 — 2026-08-02
- 6.6.1 — 2026-07-02
- 6.6.0 — 2026-06-14
- 6.5.1 — 2026-03-20
- 6.5.0 — 2026-03-17
- 6.4.1 — 2025-07-16
- 6.4.0 — 2025-07-10
- 6.3.11 — 2024-11-21
- 6.3.10 — 2024-07-27
- 6.3.9 — 2024-05-13
- 6.3.8 — 2024-02-28
- 6.3.7 — 2024-02-27
- 6.3.6 — 2023-12-08
- 6.3.5 — 2023-10-09
- … 93 more at https://npm.io/package/csv/versions

## README

# CSV for Node.js and the web

[![Build Status](https://img.shields.io/github/actions/workflow/status/adaltas/node-csv/nodejs.yml?branch=master)](https://github.com/adaltas/node-csv/actions)
[![NPM](https://img.shields.io/npm/dm/csv)](https://www.npmjs.com/package/csv) [![NPM](https://img.shields.io/npm/v/csv)](https://www.npmjs.com/package/csv)

The `csv` project provides CSV generation, parsing, transformation and serialization for Node.js.

It has been tested and used by a large community over the years and should be considered reliable. It provides every option you would expect from an advanced CSV parser and stringifier.

This package exposes 4 packages:

- [`csv-generate`](https://csv.js.org/generate/)
  ([GitHub](https://github.com/adaltas/node-csv/tree/master/packages/csv-generate)),
  a flexible generator of CSV string and Javascript objects.
- [`csv-parse`](https://csv.js.org/parse/)
  ([GitHub](https://github.com/adaltas/node-csv/tree/master/packages/csv-parse)),
  a parser converting CSV text into arrays or objects.
- [`csv-stringify`](https://csv.js.org/stringify/)
  ([GitHub](https://github.com/adaltas/node-csv/tree/master/packages/csv-stringify)),
  a stringifier converting records into a CSV text.
- [`stream-transform`](https://csv.js.org/transform/)
  ([GitHub](https://github.com/adaltas/node-csv/tree/master/packages/stream-transform)),
  a transformation framework.

## Documentation

The full documentation for the current version is available [here](https://csv.js.org).

## Usage

Installation command is `npm install csv`.

Each package is fully compatible with the Node.js stream 2 and 3 specifications. Also, a simple callback-based API is always provided for convenience.

## Synchronous sample

```js
// Import the package
import * as csv from "csv/sync";

// Run the pipeline
import { generate, parse, transform, stringify } from "csv/sync";

// Run the pipeline
const input = generate({ seed: 1, columns: 2, length: 2 });
const rawRecords = parse(input);
const refinedRecords = transform(rawRecords, (data) =>
  data.map((value) => value.toUpperCase()),
);
const output = stringify(refinedRecords);

// Print the final result
console.log(output);
//> OMH,ONKCHHJMJADOA
//> D,GEACHIN
```

## Streaming sample

This example uses the Stream API to create a processing pipeline.

```js
// Import the package
import * as csv from "csv";

// Run the pipeline
csv
  // Generate 20 records
  .generate({
    delimiter: "|",
    length: 20,
  })
  // Transform CSV data into records
  .pipe(
    csv.parse({
      delimiter: "|",
    }),
  )
  // Transform each value into uppercase
  .pipe(
    csv.transform((record) => {
      return record.map((value) => {
        return value.toUpperCase();
      });
    }),
  )
  // Convert objects into a stream
  .pipe(
    csv.stringify({
      quoted: true,
    }),
  )
  // Print the CSV stream to stdout
  .pipe(process.stdout);
```

## Development

This parent project doesn't have tests itself but instead delegates the tests to its child projects.

Read the documentation of the child projects for additional information.

## Contributors

The project is sponsored by [Adaltas](https://www.adaltas.com), an Big Data consulting firm based in Paris, France.

- David Worms: <https://github.com/wdavidw>

## Related projects

- Pavel Kolesnikov "ya-csv": <http://github.com/koles/ya-csv>
- Chris Williams "node-csv": <http://github.com/voodootikigod/node-csv>
- Mat Holt "PapaParse": <https://github.com/mholt/PapaParse>

---
_Source: https://npm.io/package/csv · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
