Convert TSV to TOML

Drag and drop files here or click to select.
Max file size 100mb.
Uploading progress:

TSV vs TOML Format Comparison

Aspect TSV (Source Format) TOML (Target Format)
Format Overview
TSV
Tab-Separated Values

Plain text format for storing tabular data where columns are separated by tab characters. Clipboard-native format used when copying from spreadsheets, a bioinformatics standard, and free from quoting issues that plague CSV files. Simpler and more reliable than CSV for data exchange.

Tabular Data Clipboard-Native
TOML
Tom's Obvious, Minimal Language

A minimal configuration file format designed to be easy to read due to obvious semantics. TOML maps unambiguously to a hash table and supports typed values including strings, integers, floats, booleans, dates, arrays, and tables. Used as the configuration format for Rust (Cargo.toml), Python (pyproject.toml), and many modern tools.

Configuration Typed Values
Technical Specifications
Structure: Rows and columns in plain text
Delimiter: Tab character (U+0009)
Encoding: UTF-8 or ASCII
Headers: Optional first row as column names
Extensions: .tsv, .tab
Structure: Key-value pairs with sections
Data Types: String, Integer, Float, Boolean, Date, Array, Table
Encoding: UTF-8
Standard: TOML v1.0.0 (2021)
Extensions: .toml
Syntax Examples

TSV uses tab-separated values:

Name	Age	City
Alice	30	New York
Bob	25	London
Charlie	35	Tokyo

TOML uses arrays of tables:

[[records]]
Name = "Alice"
Age = 30
City = "New York"

[[records]]
Name = "Bob"
Age = 25
City = "London"

[[records]]
Name = "Charlie"
Age = 35
City = "Tokyo"
Content Support
  • Tabular data with rows and columns
  • Text, numbers, and dates
  • No quoting needed for commas or special chars
  • Native clipboard format from spreadsheets
  • Large datasets (millions of rows)
  • Bioinformatics standard (BLAST, BED, GFF)
  • Typed key-value pairs
  • Nested tables and sections
  • Arrays and arrays of tables
  • Date/time values with timezone
  • Multi-line strings
  • Inline tables for compact data
  • Comments for documentation
Advantages
  • No quoting issues unlike CSV
  • Clipboard-native (copy-paste from Excel)
  • Standard in bioinformatics pipelines
  • Simpler parsing than CSV
  • Tab characters rarely appear in data
  • Human-readable with aligned columns
  • Strong typing for values
  • Unambiguous mapping to data structures
  • Excellent human readability
  • Native comment support
  • Used by Rust, Python, and Go ecosystems
  • Simpler than YAML, more readable than JSON
Disadvantages
  • No formatting or styling
  • No data types (everything is text)
  • Tab characters can be invisible in editors
  • No multi-sheet support
  • No metadata or schema definition
  • Verbose for deeply nested data
  • Not designed for tabular datasets
  • Less suitable for large data volumes
  • Limited query/filter capabilities
  • Newer format, smaller ecosystem than JSON/YAML
Common Uses
  • Bioinformatics data exchange
  • Spreadsheet clipboard operations
  • Database export/import
  • Scientific data processing
  • Log file analysis and ETL pipelines
  • Rust Cargo.toml package configuration
  • Python pyproject.toml build config
  • Application settings files
  • CI/CD pipeline configuration
  • Hugo and Netlify site configuration
Best For
  • Clipboard data from spreadsheets
  • Bioinformatics and scientific workflows
  • Simple, unambiguous data exchange
  • Automation and scripting pipelines
  • Configuration files with typed values
  • Structured records from tabular data
  • Human-editable settings files
  • Build and deployment configuration
Version History
Introduced: 1960s (early computing)
Standard: IANA text/tab-separated-values
Status: Widely used, stable
MIME Type: text/tab-separated-values
Introduced: 2013 (Tom Preston-Werner)
Current Version: TOML v1.0.0 (2021)
Status: Active, growing adoption
MIME Type: application/toml
Software Support
Microsoft Excel: Full support
Google Sheets: Full support
LibreOffice Calc: Full support
Other: Python, R, pandas, all databases, BLAST
Cargo (Rust): Native config format
Python: tomllib (stdlib), tomli, tomlkit
Go: BurntSushi/toml, pelletier/go-toml
Other: Hugo, Netlify, pip, Poetry

Why Convert TSV to TOML?

Converting TSV data to TOML format transforms flat tab-separated tabular data into a structured configuration format with typed values. While TSV excels at storing raw data from spreadsheets and bioinformatics tools, TOML provides a human-readable, strongly-typed format ideal for configuration files and structured records.

TSV's clipboard-native nature makes it the easiest way to export data from any spreadsheet application. Simply copy cells in Excel or Google Sheets, paste into a text file, and you have clean TSV data. Unlike CSV, there are no quoting issues or delimiter ambiguity. Our converter takes this clean input and produces well-structured TOML using arrays of tables ([[records]]) where each row becomes a named record with properly typed values.

This conversion is particularly valuable when you need to turn spreadsheet data into configuration or seed data for applications built with Rust, Python, or Go. For example, you might maintain a list of server configurations in a spreadsheet, export it as TSV, and convert it to TOML for use in deployment tools. The TOML format preserves data types, making numbers, booleans, and dates explicit rather than storing everything as text.

TSV to TOML conversion bridges the gap between data management in spreadsheets and structured configuration in modern development workflows. The converter automatically detects numeric values, booleans, and dates, producing clean TOML output that follows the v1.0.0 specification.

Key Benefits of Converting TSV to TOML:

  • Typed Values: Numbers, booleans, and strings are properly typed in the TOML output
  • Clipboard-Native Input: TSV is what you get when copying from Excel or Google Sheets
  • No Quoting Hassles: TSV avoids the delimiter conflicts that plague CSV files
  • Configuration Ready: Output follows TOML v1.0.0 spec, compatible with Cargo, pyproject, etc.
  • Structured Records: Each row becomes a well-defined table entry with named fields
  • Human Readable: TOML output is clear, minimal, and easy to edit manually
  • Data Integrity: All cell values are preserved with appropriate type conversion
  • Modern Ecosystem: TOML is the standard config format for Rust, Python, and Go projects

Practical Examples

Example 1: Application Configuration Seeds

Input TSV file (config.tsv):

service	port	enabled	max_connections
web	8080	true	1000
api	3000	true	500
worker	9090	false	50

Output TOML file (config.toml):

[[records]]
service = "web"
port = 8080
enabled = true
max_connections = 1000

[[records]]
service = "api"
port = 3000
enabled = true
max_connections = 500

[[records]]
service = "worker"
port = 9090
enabled = false
max_connections = 50

Example 2: Package Dependencies

Input TSV file (dependencies.tsv):

name	version	optional	license
serde	1.0.193	false	MIT
tokio	1.35.0	false	MIT
clap	4.4.11	true	Apache-2.0

Output TOML file (dependencies.toml):

[[records]]
name = "serde"
version = "1.0.193"
optional = false
license = "MIT"

[[records]]
name = "tokio"
version = "1.35.0"
optional = false
license = "MIT"

[[records]]
name = "clap"
version = "4.4.11"
optional = true
license = "Apache-2.0"

Example 3: Environment Variables Catalog

Input TSV file (env_vars.tsv):

variable	default_value	required	description
DATABASE_URL	postgres://localhost:5432/app	true	Primary database connection
REDIS_URL	redis://localhost:6379	false	Cache server connection
LOG_LEVEL	info	false	Application log verbosity

Output TOML file (env_vars.toml):

[[records]]
variable = "DATABASE_URL"
default_value = "postgres://localhost:5432/app"
required = true
description = "Primary database connection"

[[records]]
variable = "REDIS_URL"
default_value = "redis://localhost:6379"
required = false
description = "Cache server connection"

[[records]]
variable = "LOG_LEVEL"
default_value = "info"
required = false
description = "Application log verbosity"

Frequently Asked Questions (FAQ)

Q: What is TOML format?

A: TOML (Tom's Obvious, Minimal Language) is a configuration file format created by Tom Preston-Werner (GitHub co-founder) in 2013. It is designed to be easy to read and write, with unambiguous semantics that map directly to hash tables. TOML supports typed values including strings, integers, floats, booleans, dates, arrays, and nested tables. It is the standard configuration format for Rust (Cargo.toml) and Python (pyproject.toml).

Q: Why is TSV better than CSV for this conversion?

A: TSV uses tab characters as delimiters, which virtually never appear in actual data. This eliminates the quoting issues that plague CSV files where commas in cell values require special handling. TSV is also the clipboard-native format, meaning when you copy data from Excel or Google Sheets, the result is tab-separated. This makes TSV inherently simpler and more reliable as a conversion source.

Q: How does the converter handle data types?

A: The converter automatically detects data types in your TSV values. Numbers are converted to TOML integers or floats, "true"/"false" values become TOML booleans, and everything else becomes quoted strings. This type detection ensures that the generated TOML is semantically correct and can be parsed by any TOML library with proper typing.

Q: How are TSV rows represented in TOML?

A: Each TSV row is converted to a TOML array of tables entry using the [[records]] syntax. The header row provides the key names, and each subsequent row becomes a separate [[records]] block with key-value pairs. This is the idiomatic way to represent tabular data in TOML.

Q: Can I use the output with Cargo or pyproject.toml?

A: The generated TOML follows the TOML v1.0.0 specification and is valid for any TOML parser. However, the output structure uses generic [[records]] tables. For Cargo.toml or pyproject.toml, you may need to adjust the table names and structure to match the expected schema. The converter provides a solid starting point that you can customize.

Q: Is TSV the same as what I get when copying from Excel?

A: Yes! When you select cells in Excel, Google Sheets, or LibreOffice Calc and copy them to the clipboard, the data is stored in TSV format (tab-separated values). You can paste this into a text editor, save it as a .tsv file, and convert it directly. This makes TSV the most natural format for spreadsheet-to-configuration workflows.

Q: What happens with empty cells in TSV?

A: Empty cells in your TSV file are converted to empty strings ("") in the TOML output. If a column consistently contains numeric values but has empty cells, those empty cells will still be represented as empty strings rather than null or zero, preserving the distinction between missing and zero values.

Q: Can I convert large TSV files to TOML?

A: Yes, the converter handles large TSV files efficiently. However, TOML is primarily designed for configuration files, not large datasets. For TSV files with thousands of rows, the resulting TOML file will be quite verbose since each row becomes a multi-line table entry. For very large datasets, consider JSON or YAML as alternative target formats.