Go to Sign up
Note: Your files never leave your device. We don't upload, transfer, or store your data.
|
|
|
|
|---|---|---|
|
|
|
The Markdown To TOML Converter on A.Tools transforms Markdown pipe-delimited tables into structured TOML data — directly in your browser, without uploading any file to a server.
Developers write Markdown tables in documentation and README files. Rust, Python, Go, and Hugo projects use TOML for configuration. This tool converts between the two formats with three output styles: Array of Tables, Column Array, and Keyed.
All processing runs client-side using JavaScript. No data leaves your device.
Click Enter Data to paste a Markdown table into the input area, or click Choose File to drag and drop a .md file. Press Sample to load example data.
Once parsed, an interactive spreadsheet appears. Use the toolbar to:
Add or delete rows and columns
Transpose the table (swap rows and columns)
Remove duplicate rows with one click
Delete empty rows and columns
Change text case (UPPERCASE, lowercase, Capitalize)
Find and replace values — supports case-sensitive search and regular expressions
Toggle First Row as Header to treat the first row as column names
Right-click any cell for context-menu operations: insert rows above/below, insert columns left/right, delete, or clear.
In the Properties panel:
| Setting | Options | Description |
|---|---|---|
| TOML Format | Array of Tables / Column Array / Keyed | Controls the structure of the output (see below) |
| Section Name | Custom text | Adds a [section_name] header before the data |
| Parse Values | On / Off | When on, converts numeric and boolean strings to native TOML types |
Click Convert to generate the TOML output. Use Copy to Clipboard or Download File to save the result.
Two input modes: Paste Markdown directly or upload a .md file via drag-and-drop
Full table editor: Edit, transpose, deduplicate, find-and-replace before converting
Three TOML formats: Array of Tables, Column Array, Keyed
Section name support: Wrap output in a named TOML section
Type inference: Parse Values toggle converts strings to integers, floats, and booleans
Client-side processing: Files never leave the browser — zero data upload
Undo/Redo: Full edit history with revert support
Context menu: Right-click for quick row/column/cell operations
Header toggle: Treat the first row as a header or regular data
Validation indicator: Real-time feedback on input validity
TOML (Tom's Obvious Minimal Language) is a configuration file format designed to be unambiguous and easy to read. It uses key-value pairs and supports tables, arrays, and nested structures.
Key facts:
Created by Tom Preston-Werner in 2013
Current version: 1.0 (specification at toml.io)
File extension: .toml
Used in: Rust (Cargo.toml), Python (pyproject.toml), Go (module config), Hugo (config.toml), InfluxDB, and more
TOML syntax example:
[server]
host = "localhost"
port = 8080
debug = true
[[users]]
name = "Alice"
age = 30
[[users]]
name = "Bob"
age = 25
TOML is designed to map unambiguously to a hash table (dictionary), making it straightforward for parsers to implement.
Given this input table:
| name | age | city |
|---|---|---|
| Alice | 30 | New York |
| Bob | 25 | Los Angeles |
[[data]]
name = "Alice"
age = "30"
city = "New York"
[[data]]
name = "Bob"
age = "25"
city = "Los Angeles"
Each row becomes a [[table]] entry. This is the most common TOML format for lists of records. Each entry is a separate TOML Table.
name = ["Alice", "Bob"]
age = ["30", "25"]
city = ["New York", "Los Angeles"]
Each column becomes a TOML array. Useful when you need to access all values of a single field at once.
[data.Alice]
age = "30"
city = "New York"
[data.Bob]
age = "25"
city = "Los Angeles"
Each row becomes a keyed sub-table, using the first column value as the key. Requires unique values in the first column. Useful for lookup-style configurations.
When a Section Name is provided (e.g., "users"), the output wraps in a named section:
[users]
[[users]]
name = "Alice"
age = "30"
Leave blank for no section wrapper.
When Parse Values is enabled, the converter detects:
Integers: "30" → 30
Floats: "3.14" → 3.14
Booleans: "true" / "false" → true / false
When disabled, all values remain as quoted strings.
| Feature | TOML | YAML | JSON |
|---|---|---|---|
| Comments | Yes (#) | Yes (#) | No |
| Multiline strings | Yes (""") | Yes (|) | No (escaped) |
| Dates/Times | Native type | Native type | String only |
| Arrays | Yes | Yes | Yes |
| Nested tables | Yes | Yes | Yes |
| Ambiguity | Low | High (indentation) | None |
| Primary use | Configuration | Configuration, data | Data interchange |
| Parser complexity | Simple | Complex | Simple |
| File extension | .toml | .yaml / .yml | .json |
TOML avoids YAML's indentation sensitivity and JSON's lack of comments. It is best suited for configuration files where human readability and unambiguous parsing both matter.
| Scenario | Use Markdown | Use TOML | Convert |
|---|---|---|---|
| Technical documentation | Yes | No | — |
| Rust Cargo.toml configuration | No | Yes | Markdown → TOML |
| Python pyproject.toml | No | Yes | Markdown → TOML |
| Hugo site configuration | No | Yes | Markdown → TOML |
| Data lookup tables in config | No | Yes | Markdown → TOML |
| Version-controlled docs (Git) | Yes | No | — |
| Application settings | No | Yes | Markdown → TOML |
Markdown tables are for human-readable documentation. TOML is for machine-readable configuration with type support. This converter handles the transition when tabular data from documentation needs to become part of a configuration file.
No. All file parsing and conversion runs in your browser using JavaScript. Your data stays on your device. A.Tools never receives, stores, or transmits your file contents.
The tool supports standard pipe-delimited Markdown tables following the CommonMark specification, including tables with or without leading/trailing pipes and alignment indicators (:---, :---:, ---:).
Array of Tables creates a [[table]] entry per row. Column Array creates one TOML array per column. Keyed uses the first column value as a sub-table name. See the "TOML Format Options Explained" section above for examples.
When enabled, the converter detects integers, floats, and boolean strings in your data and outputs them as native TOML types (unquoted). When disabled, all values remain as quoted strings.
Add a Section Name when the TOML output needs to be part of a larger configuration file. The section name creates a [name] header before the data. Leave blank for standalone output.
TOML requires unique table keys. If the first column contains duplicate values, the last occurrence overwrites earlier ones. Ensure the first column has unique values when using Keyed format.
Processing is client-side, so the limit depends on your browser's memory. Tables with tens of thousands of rows work reliably on modern browsers.
Yes. The output is valid TOML 1.0. Copy the result and paste it into your configuration file, or use a Section Name to match the expected structure.