# papaparse

> Fast and powerful CSV parser for the browser that supports web workers and streaming large files. Converts CSV to JSON and JSON to CSV.

Latest version **5.7.0** (published 2026-08-24) · MIT license · 0 weekly downloads

## Install

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

## Health

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

Positive: has types package; no vulnerabilities; recently updated; high maintenance score; high quality score; popular repo.

Warnings: low downloads; no esm support.

## Facts

| | |
|---|---|
| Version | 5.7.0 |
| Published | 2026-08-24 |
| First published | 2014-11-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | separate (@types/papaparse) |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 264.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 13574 |
| Author | Matthew Holt |
| Maintainers | mholt, pokoli |
| Keywords | csv, parser, parse, parsing, delimited, text, data, auto-detect, comma, tab, pipe, file, filereader, stream, worker, workers, thread, threading, multi-threaded |

## Links

- npm: https://www.npmjs.com/package/papaparse
- Repository: https://github.com/mholt/PapaParse
- Homepage: https://www.papaparse.com/
- Issues: https://github.com/mholt/PapaParse/issues
- npm.io page: https://npm.io/package/papaparse

## Alternatives

- [@lexical/table](https://npm.io/package/@lexical/table.md) — 3.0M weekly downloads
- [mantine-datatable](https://npm.io/package/mantine-datatable.md) — 98.2K weekly downloads
- [react-native-collapsible-tab-view](https://npm.io/package/react-native-collapsible-tab-view.md) — 70.6K weekly downloads
- [@handsontable/vue3](https://npm.io/package/@handsontable/vue3.md) — 16.1K weekly downloads
- [vuewordcloud](https://npm.io/package/vuewordcloud.md) — 7.2K weekly downloads

## Recent versions

- 5.7.0 (latest) — 2026-08-24
- 5.0.0-beta.0 (beta) — 2018-11-21
- 5.6.1 — 2026-08-24
- 5.6.0 — 2026-08-13
- 5.5.5 — 2026-08-13
- 5.5.4 — 2026-06-19
- 5.5.3 — 2025-05-19
- 5.5.2 — 2025-01-28
- 5.5.1 — 2025-01-10
- 5.5.0 — 2025-01-09
- 5.4.1 — 2023-03-23
- 5.4.0 — 2023-03-02
- 5.3.2 — 2022-03-15
- 5.3.1 — 2021-05-28
- 5.3.0 — 2020-08-25
- … 35 more at https://npm.io/package/papaparse/versions

## README

Parse CSV with JavaScript
========================================

Papa Parse is the fastest in-browser CSV (or delimited text) parser for JavaScript. It is reliable and correct according to [RFC 4180](https://tools.ietf.org/html/rfc4180), and it comes with these features:

- Easy to use
- Parse CSV files directly (local or over the network)
- Fast mode
- Stream large files (even via HTTP)
- Reverse parsing (converts JSON to CSV)
- Auto-detect delimiter
- Worker threads to keep your web page reactive
- Header row support
- Pause, resume, abort
- Can convert numbers and booleans to their types
- One of the only parsers that correctly handles line-breaks and quotations

Papa Parse has **no dependencies**.

Install
-------

papaparse is available on [npm](https://www.npmjs.com/package/papaparse). It
can be installed with the following command:
```shell
npm install papaparse
```

If you don't want to use npm, [papaparse.min.js](https://unpkg.com/papaparse@latest/papaparse.min.js) can be downloaded to your project source.

Usage
-----
```js
import Papa from 'papaparse';

Papa.parse(file, config);
    
const csv = Papa.unparse(data[, config]);
```

Homepage & Demo
----------------

- [Homepage](https://www.papaparse.com)
- [Demo](https://www.papaparse.com/demo)

To learn how to use Papa Parse:

- [Documentation](https://www.papaparse.com/docs)

The website is hosted on [Github Pages](https://pages.github.com/). Its content is also included in the docs folder of this repository. If you want to contribute on it just clone the master of this repository and open a pull request.


Papa Parse for Node
--------------------

Papa Parse can parse a [Readable Stream](https://nodejs.org/api/stream.html#stream_readable_streams) instead of a [File](https://www.w3.org/TR/FileAPI/) when used in Node.js environments (in addition to plain strings). In this mode, `encoding` must, if specified, be a Node-supported character encoding. The `Papa.LocalChunkSize`, `Papa.RemoteChunkSize` , `download`, `withCredentials` and `worker` config options are unavailable.

Papa Parse can also parse in a node streaming style which makes `.pipe` available.  Simply pipe the [Readable Stream](https://nodejs.org/api/stream.html#stream_readable_streams) to the stream returned from `Papa.parse(Papa.NODE_STREAM_INPUT, options)`.  The `Papa.LocalChunkSize`, `Papa.RemoteChunkSize` , `download`, `withCredentials`, `worker`, `step`, and `complete` config options are unavailable.  To register a callback with the stream to process data, use the `data` event like so: `stream.on('data', callback)` and to signal the end of stream, use the 'end' event like so: `stream.on('end', callback)`.

Get Started
-----------

For usage instructions, see the [homepage](https://www.papaparse.com) and, for more detail, the [documentation](https://www.papaparse.com/docs).

Tests
-----

Papa Parse is under test. Download this repository, run `npm install`, then `npm test` to run the tests.

Contributing
------------

To discuss a new feature or ask a question, open an issue. To fix a bug, submit a pull request to be credited with the [contributors](https://github.com/mholt/PapaParse/graphs/contributors)! Remember, a pull request, *with test*, is best. You may also discuss on Twitter with [#PapaParse](https://twitter.com/search?q=%23PapaParse&src=typd&f=realtime) or directly to me, [@mholt6](https://twitter.com/mholt6).

If you contribute a patch, ensure the tests suite is running correctly. We run continuous integration on each pull request and will not accept a patch that breaks the tests.

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