Skip to content

Design goals

These goals guide the development of FastCSV.

FastCSV reads and writes CSV data fast, without trading away compliance with the CSV specification, reliability or security.

Benchmark

FastCSV has no runtime dependencies and keeps its memory footprint small. The JAR file is about 100 KiB.

FastCSV is built on RFC 4180, and specification tests check its behavior against it. The CSV interpretation page explains how FastCSV handles real-world CSV data beyond the RFC, such as LF line breaks or comments, and the cases the RFC leaves open, such as records with differing field counts. The Java CSV Comparison Project shows how FastCSV handles edge cases compared to other libraries.

The API is small and does what its names say. The Quickstart gives a first impression.

Besides the test coverage, PIT mutation testing checks that the tests actually catch faults.

Some documented methods accept null arguments; no public API returns null.

FastCSV follows the Open Source Security Foundation (OpenSSF) Best Practices; see the Best Practices report. It is also part of OSS-Fuzz.

Every feature is documented, on this website and in the Javadoc.

SpotBugs, PMD, Error Prone, NullAway and Checkstyle keep the code maintainable. The FAQ explains how to get help and how to contribute.

Flexibility and extensibility are not design goals. They are considered only where they don’t conflict with the goals above.