Data format

TOML converter

A .toml file is a configuration format designed to map unambiguously to a hash table: key/value pairs grouped under bracketed section headers, with real types for strings, integers, floats, booleans, dates and arrays. It aims to be obvious to a human reading it, which is what separates it from JSON and YAML.

Private for supported formats — processed in your browser

Convert supported files

Runs on your device

Drop TOML files here

Batch files can each use a different output. Nothing uploads for local conversions.

Working inputs include camera RAW, browser-local audio/video, PDF, CBZ/CBR comics, office documents, ebooks, markup, 3D models, structured text, images, and archives.

Where TOML comes from

Tom Preston-Werner published TOML in 2013 out of frustration with YAML's complexity and JSON's refusal to allow comments. It reached 1.0.0 in 2021 after a long, deliberate stabilisation, and became the default configuration format for Rust's Cargo and, via PEP 518, for Python's pyproject.toml — which is how most developers now meet it.

How TOML works

  • Types are explicit and inferred from syntax: quoted strings, bare integers, floats, booleans, and RFC 3339 datetimes.
  • Tables use [section] headers; arrays of tables use [[section]], which is the format's one genuinely surprising construct.
  • Keys may be bare, quoted or dotted, and dotted keys create nested tables without a header.
  • Comments start with # and run to end of line — the feature JSON's absence of which motivated the format.
  • Whitespace is insignificant, unlike YAML, so a stray indent cannot change the meaning of a document.

When to use TOML

  • Application and build configuration where a human edits the file by hand
  • Rust Cargo manifests and Python project metadata
  • Converting configuration between formats during a toolchain migration
  • Flattening typed configuration into environment variables for a container

Strengths and limitations

Strengths

  • Unambiguous — the same document cannot be read two ways, which is YAML's recurring failure
  • Comments and real date types, neither of which JSON has
  • Whitespace-insensitive, so indentation accidents cannot change semantics

Limitations

  • Deeply nested structures become verbose and hard to follow
  • Arrays of tables are widely misunderstood and easy to write wrongly
  • Less universal than JSON outside the Rust and Python ecosystems

Compatibility

Parsers exist for every mainstream language, and Cargo, pip, Poetry, Hugo and Netlify all consume TOML natively. Browsers have no built-in support. Novus Convert reads it locally and converts to JSON, YAML, INI, plain text and ENV — the last of which accepts only flat scalars, because an environment file has no way to represent an array or a nested table.

None. Comments are not carried into other formats, and no format here has a comment channel to receive them.