Table Data Converter
Turn pasted table data into clean delimited, Markdown, JSON, or HTML output with header handling, column profiles, and safety notes.{{ outputText }}
| # | {{ header.label }} | Copy |
|---|---|---|
| {{ row.index }} | {{ cell.value }} | |
| No parsed rows to preview. |
| # | Header | Output key | Present | Blank | Fill | Type mix | Sample | Copy |
|---|---|---|---|---|---|---|---|---|
| {{ row.index }} | {{ row.header }} | {{ row.key }} | {{ row.present }} | {{ row.blank }} | {{ row.fillLabel }} | {{ row.typeMix }} | {{ row.sample }} |
| Area | Setting | Value | Evidence | Copy |
|---|---|---|---|---|
| {{ row.area }} | {{ row.setting }} | {{ row.value }} | {{ row.evidence }} |
Table-shaped data moves between people, spreadsheets, databases, Markdown documents, APIs, and small scripts. The same rows may appear as comma-separated text, tab-separated text, a Markdown pipe table, an HTML table, JSON objects, JSON Lines, or a custom delimited file. The useful part is not the file extension; it is the rectangular grid of rows, columns, headers, and cell values underneath.
Conversion mistakes usually come from shape, not from the final format. A delimiter can be guessed wrong, the first row can be mistaken for data instead of headers, an uneven row can shift later cells, and a cell that starts with a formula character can become risky when opened in a spreadsheet. Checking the grid before copying output prevents most downstream surprises.
Headers carry a second kind of meaning. Human-friendly labels may be ideal for Markdown, while snake case or generated column labels can be safer for JSON keys, database imports, and scripts. A converter should make that choice visible so the reader can see when labels were preserved, generated, or repaired for duplicate names.
A good table conversion is repeatable. If the source format, delimiter, header handling, trim setting, quote policy, and formula guard stay fixed, differences in output are more likely to come from the data itself rather than from changed parsing assumptions.
How to Use This Tool:
Start by confirming the parsed grid, then choose the target output that matches the next place the data will go.
- Paste table text into the source field, browse for a local text file, or use the sample. Empty input shows a repair message instead of producing output.
- Leave Source format on Auto detect, or choose CSV comma, TSV tab, semicolon CSV, pipe delimited, Markdown table, JSON object array, JSON row matrix, JSON Lines, HTML table, or custom delimiter.
- Set Source delimiter when custom source parsing is selected. Short tokens such as
^,::, or|are supported. - Choose Target format. The output can be delimited text, Markdown table, JSON object array, JSON row matrix, JSON Lines, or HTML table.
- Set Header handling. Auto mode promotes a likely label row; Use first row as headers is best when row 1 names fields; Generate Column 1 headers is safer for data-only grids.
- Use Output header row for destinations that need headers. JSON objects and JSON Lines still use header keys even when row-style outputs omit a header row.
- Open Advanced for header name style, cell trimming, delimited quoting, spreadsheet formula guard, missing cell token, and preview row count.
- Review Converted Output, Grid Preview, Column Profile, Column Completeness, Conversion Audit, and JSON before using the result downstream.
If the source fails, the summary asks you to fix the text or choose a more specific source format. JSON parse errors, missing rows, missing columns, and unavailable HTML parsing stop conversion until the source can become a grid.
Interpreting Results:
The summary reports the parsed row count, column count, source format, target format, and applied header choice. Check those values before copying the output. A wrong delimiter can still produce text, but the row and column counts will usually look suspicious.
Grid Preview shows parsed rows using the active headers and preview limit. Column Profile is the fastest way to find shifted data because it lists each header, output key, present count, blank count, fill percentage, type mix, sample value, and maximum length. Conversion Audit records the source delimiter, target delimiter, header style, formula guard, padded cells, blank cells, notes, and warnings.
- If row 1 disappeared into headers by mistake, change Header handling to generated headers.
- If JSON object keys look wrong, adjust Header names before using the output.
- If missing cells were padded, decide whether the missing cell token should be blank,
NULL, or another receiver-specific value. - If formula-looking cells were guarded, verify that the leading apostrophe is acceptable for the destination.
- If Delimited quoting is off, delimiters inside cells can split columns in another importer.
Technical Details:
Table conversion has two phases: parse a source into a rectangular grid, then serialize that grid into the chosen target. The parser normalizes line endings, skips empty rows where applicable, and pads short rows to the widest parsed row so previews and exports have stable column positions.
Delimited parsing is character-based. A delimiter splits cells only when the parser is outside quoted text. Doubled quotes inside quoted delimited fields collapse to a literal quote and are counted as a parser note. Markdown parsing removes separator rows, JSON parsing can turn object arrays into header plus data rows, JSON Lines parses one JSON value per nonblank line, and HTML parsing extracts cell text from table rows.
Transformation Core:
| Stage | Rule | Review Point |
|---|---|---|
| Detect or select source | Auto mode checks HTML table text, JSON, JSON Lines, Markdown tables, and scored delimiters. | Audit shows the detected source format and delimiter. |
| Parse rows | Source-specific parsing produces raw rows and notes such as ignored Markdown separators or doubled quote escapes. | Warnings appear when quotes are unclosed or only separators remain. |
| Choose headers | Auto mode promotes likely labels; manual modes use the first row or generated Column labels. | Headers drive JSON keys, Markdown headers, profile labels, and audit rows. |
| Normalize width | Rows shorter than the widest row are padded with the missing cell token. | Padded cell count warns about uneven source rows. |
| Serialize target | The same grid is rendered as delimited text, Markdown, JSON objects, JSON matrix, JSON Lines, or HTML. | Converted Output should match the target system's expected shape. |
Format Map:
| Format | Parser or Renderer Behavior | Common Trap |
|---|---|---|
| CSV and other delimited text | Uses comma, tab, semicolon, pipe, or a custom token with quote handling. | Turning quoting off can break cells that contain delimiters or line breaks. |
| Markdown table | Reads pipe-separated rows and ignores the delimiter row; output always includes a header separator. | Pipes inside text need escaping. |
| JSON object array | Object keys become headers; nested objects become compact JSON cell text. | Header order follows first appearance across records. |
| JSON row matrix | Arrays become rows and scalar entries become single-cell rows. | Headers may be generated when the first row is data. |
| JSON Lines | Each nonblank line is parsed as one JSON value. | One bad line stops parsing with its line number. |
| HTML table | Reads or writes table rows and cell text. | Only actual table row and cell elements are considered table data. |
Output Safety and Normalization:
| Condition | Behavior | Why It Matters |
|---|---|---|
| Header is blank or duplicated | The output key is generated or suffixed to stay unique. | JSON objects and profiles need stable keys. |
| Header style is snake or camel | Labels are normalized into machine-friendly keys. | Useful for JSON and database-like handoffs. |
Cell begins with =, +, -, @, tab, or carriage return | Formula guard prefixes an apostrophe when enabled. | Spreadsheet apps may treat those values as formulas. |
| Delimited cell contains delimiter, quote, or line break | Minimal quoting wraps the cell and doubles quotes. | The receiving parser can keep the field together. |
| More than 24 columns | The completeness chart shows the first 24 columns. | Tables and exports still include all columns. |
Privacy Notes:
Pasted text and selected local files are parsed in the browser. Generated outputs, table exports, chart downloads, and JSON payloads are created from the current browser session, but downloaded files and copied text can still contain sensitive source data.
Worked Examples:
CSV to Markdown table. A source with name,city,score as row 1 should show headers promoted from row 1 and a Converted Output Markdown table. Column Profile should list three output keys and a high fill percentage for each column.
JSON Lines to JSON objects. Three nonblank JSON Lines become three rows after parsing. If line 2 is malformed, conversion stops with a JSON Lines parse error for that line instead of guessing around the broken record.
Uneven pipe-delimited rows. A row with fewer cells than the widest row is padded. Conversion Audit records the padded cell count, and Grid Preview shows the missing cell token in that position.
Spreadsheet-bound output. A cell containing =IMPORTXML(...) should trigger formula guard when the switch is on. Conversion Audit reports how many formula-looking cells were guarded before the output is used in a spreadsheet.
FAQ:
Why did Auto detect choose the wrong delimiter?
Auto mode scores common delimiters by row width and consistency. If the source uses a rare separator or contains many delimiter-like characters inside text, choose the source format or custom delimiter manually.
Does preview row count limit the copied output?
No. Preview rows limits only the on-page grid preview. Copy and download actions use the full converted grid.
Why are my JSON keys different from the original headers?
Header names may be set to snake case, camelCase, or generated column labels. Switch it to preserve labels when human-readable headers should remain unchanged.
What does formula guard do?
When enabled, cells that begin with common spreadsheet formula starters are prefixed with an apostrophe during output generation. This reduces a common spreadsheet risk but does not replace review of untrusted data.
Why does Markdown output still have headers when I turned headers off?
Markdown tables require a header and separator row, so generated Column labels are used when output headers are otherwise disabled.
Glossary:
- Delimited text
- Rows where a delimiter such as comma, tab, semicolon, pipe, or a custom token separates cells.
- Header handling
- The rule that decides whether the first row becomes column names or remains data.
- Grid Preview
- The parsed table view after source parsing, header handling, and row normalization.
- Column Profile
- A per-column summary of fill, blank cells, type mix, sample value, and output key.
- Formula guard
- A text prefix applied to formula-looking cells before spreadsheet-bound output is copied or downloaded.
- Conversion Audit
- The result table that records parse choices, output settings, warnings, and coverage counts.
References:
- RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) Files, IETF, October 2005.
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange Format, RFC Editor, December 2017.
- GitHub Flavored Markdown Spec: Tables extension, GitHub, April 2019.
- CSV Injection, OWASP.