Logo

CSV to TOML

Upload a dataset to begin

Supported formats: .csv,.xlsx,.xls,.xlsm,.xlsb,.tsv

Not signed in: Up to 20kB per day, no sign-up needed.
Sign in for free for unlimited files, no payment required.

About CSV to TOML

Convert CSV rows into a TOML array of tables, entirely in your browser — no upload, no file size limit.

TOML powers config files across the Rust and Python ecosystems (Cargo.toml, pyproject.toml) thanks to its readable, unambiguous syntax.

This tool converts each CSV row into a TOML array-of-tables entry (`[[row]]`), with values quoted or left bare depending on whether they parse as numbers, so the output loads correctly in any TOML parser.

Converting back the other way, it reads a TOML file's array-of-tables entries and flattens them into CSV columns, taking the union of keys across all entries as the header row.

Category: Conversion & Export

Common Use Cases

  • Generating a TOML array-of-tables config block from a spreadsheet of settings
  • Turning a CSV list of dependencies or packages into TOML for a build tool
  • Flattening a TOML export back into CSV for review in a spreadsheet

Key Features

  • Quotes string values and leaves numeric values bare so the output parses correctly
  • Generates a standard array-of-tables ([[row]]) structure any TOML parser understands
  • Handles large files in chunks so the tab stays responsive

The CSV to TOML tool is compatible with: Cargo.toml-style Configs, pyproject.toml, Rust/Python Tooling Configs.

Use CSV to INI instead when the target tool expects flat section/key config rather than TOML's richer typing.

Frequently Asked Questions

What TOML structure does it produce?

An array of tables using the [[row]] syntax, with one table per CSV row and one key per column.

Are numeric values kept as numbers in the TOML output?

Yes, values that parse cleanly as numbers are written bare (unquoted); everything else is written as a quoted string.

What if TOML entries have different keys?

When converting TOML back to CSV, the header row is built from the union of all keys seen across every table, leaving cells blank where a given entry lacks that key.

Built for developers turning spreadsheets into Rust or Python tooling configs.

Read the related guide