Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Elixir
  3. nimble_csv

nimble_csv

Elixir

A simple and extremely fast CSV parsing and dumping library for Elixir with customizable parsers.

Visit WebsiteGitHubGitHub
823 stars60 forks0 contributors

What is nimble_csv?

NimbleCSV is a CSV parsing and dumping library for Elixir that emphasizes simplicity and high performance. It allows developers to define custom parsers using binary patterns for efficiency and supports both eager and lazy parsing modes. The library solves the need for fast, flexible CSV handling in Elixir applications without imposing data transformation rules.

Target Audience

Elixir developers who need to parse or generate CSV data efficiently, especially those working with large files or requiring custom parsing logic.

Value Proposition

Developers choose NimbleCSV for its speed, simplicity, and composability—it avoids bloat by focusing on parsing raw data and letting users handle transformations, making it ideal for performance-sensitive and customizable CSV processing.

Overview

A simple and fast CSV parsing and dumping library for Elixir

Use Cases

Best For

  • Parsing large CSV files efficiently with streaming
  • Defining custom CSV parsers with specific separators and escapes
  • Dumping Elixir data structures to CSV format
  • Integrating CSV processing into Elixir pipelines and streams
  • Handling RFC4180-compliant CSV data with a default parser
  • Building lightweight CSV tools without heavy dependencies

Not Ideal For

  • Projects requiring automatic data type conversion and header management out of the box
  • Teams needing comprehensive error handling and validation for malformed CSV files
  • Applications where CSV parsing must be highly configurable without writing custom code
  • Environments prioritizing quick, drop-in solutions over performance and customization

Pros & Cons

Pros

Custom Parser Flexibility

Allows defining parsers with specific separators and escapes using NimbleCSV.define, enabling efficient binary pattern matching for tailored CSV formats, as shown in the README example with custom tab-separated parsers.

Efficient Streaming Support

Provides parse_stream for lazy parsing of large files, integrating seamlessly with Elixir's Stream module for memory-efficient processing, demonstrated in the README with file streaming pipelines.

Minimalist Composable Design

Focuses solely on parsing raw data without imposing casting or header management, letting developers build transformations post-parsing, which aligns with Elixir's functional composition style.

Default RFC4180 Parser

Ships with a built-in parser for standard CSV formats using commas and double-quotes, reducing initial setup for common use cases, as highlighted in the README with aliasing examples.

Cons

No Automatic Data Casting

Lacks built-in type inference or conversion; developers must manually handle integer parsing, date conversion, etc., as admitted in the philosophy where it avoids data transformation.

Manual Header Processing

Requires additional code to manage CSV headers, unlike libraries with out-of-the-box header support, forcing extra steps for common tasks like mapping rows to structs.

Limited Error Handling

Focuses on speed and simplicity, providing minimal error messages or recovery for malformed CSV files, which can complicate debugging in production environments with irregular data.

Frequently Asked Questions

Quick Stats

Stars823
Forks60
Contributors0
Open Issues3
Last commit17 days ago
CreatedSince 2016

Tags

#elixir#csv-parsing#file-io#elixir-library#streaming#data-processing#performance

Built With

E
Elixir

Links & Resources

Website

Included in

Elixir13.1k
Auto-fetched 20 hours ago

Related Projects

csvcsv

CSV Decoding and Encoding for Elixir

Stars515
Forks94
Last commit1 year ago
csv2sqlcsv2sql

A blazing fast fully-automated CSV to database importer

Stars58
Forks3
Last commit2 months ago
csvlixircsvlixir

A CSV reading/writing application for Elixir.

Stars33
Forks4
Last commit8 months ago
cessocesso

CSV handling library for Elixir.

Stars27
Forks7
Last commit12 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub