| # | {{ header }} |
|---|---|
| {{ row.index }} | {{ cell }} |
| No rows to display. |
| Column | Key | Type | Non-empty | Null | Empty | Unique | Sample value |
|---|---|---|---|---|---|---|---|
| {{ profile.index }}. {{ profile.label }} | {{ profile.key }} | {{ profile.type || 'empty' }} | {{ profile.nonEmpty.toLocaleString() }} | {{ profile.nullCount.toLocaleString() }} | {{ profile.emptyCount.toLocaleString() }} | {{ profile.unique.toLocaleString() }} | {{ profile.sample || '—' }} |
| No columns profiled yet. | |||||||
null markers. Empty counts represent blank strings after trimming.{{ jsonArrays }}
{{ jsonLines }}
{{ xmlText }}
{{ htmlTable }}
{{ markdownTable }}
{{ tsvText }}
{{ jsonRecords }}
Comma separated values files are plain text tables that store rows and columns for simple data exchange, and quick conversion and inspection help you move work forward with fewer mistakes.
Paste data or drop a file, choose detection or set the delimiter, then review the live preview and the column profile to confirm structure and types, for example when you convert CSV to JSON Lines for a pipeline.
The tool reads your text, identifies the likely separator, checks for a header, and infers basic types so booleans, numbers, and dates are handled predictably, then it prepares clean outputs you can reuse.
A short sample such as name city score with a few rows will show a detected header, numeric scores, and ready to copy JSON, XML, HTML, Markdown, or a spreadsheet table in seconds.
Valid structure still needs human judgment, so watch the warnings and the profile counts, and set stable labels and keys for consistent exports across repeated runs.
Comma separated values (CSV) are row oriented text tables built from fields separated by a delimiter and optionally wrapped in quotes. The parser supports comma, tab, semicolon, pipe, or space separators, with either double or single quotes and repeat quote or backslash escapes. Header presence can be detected automatically or fixed by choice. JavaScript Object Notation (JSON) is emitted as records or arrays, JSON Lines as one object per line, Extensible Markup Language (XML) with customizable root and row tags, and Tab Separated Values (TSV) and HTML or Markdown tables are also generated.
Delimiter detection scores several candidates using the average number of fields per non empty line and a small penalty for inconsistency between lines. The highest score wins and then parsing proceeds with the chosen delimiter and quoting rules.
Column profiling reports the dominant kind in each column and counts non empty cells, nulls, empties, unique values, and a sample. Type inference recognizes booleans, numbers including scientific notation, the words null and undefined as null, and optionally ISO like dates that are normalized to an invariant form.
Results are comparable when headers and keys stay stable across runs, so set overrides when a header is missing or duplicated. Keep in mind this is a text parser tuned for pragmatic CSV conventions, and ambiguous inputs may need manual settings for best outcomes.
| Symbol | Meaning | Unit/Datatype | Source |
|---|---|---|---|
| d | Delimiter candidate | string | Derived |
| nᵢ | Fields counted in line i | integer | Derived |
| n̄ | Average fields across sample | real | Derived |
| V | Sum of absolute line to line differences | real | Derived |
| s(d) | Delimiter score | real | Derived |
| q | Quote character | " or ' or none | Input |
| e | Escape style | double or backslash | Input |
| H | Header detected | boolean | Derived |
name,city,score
Ada,London,98
Grace,New York,91
Comma wins, the first row is treated as a header, scores are parsed as numbers.
{"name":"Ada","city":"London","score":98}
<row index="1"><name>Ada</name><city>London</city><score>98</score></row>
| Field | Type | Min | Max | Step/Pattern | Error Text |
|---|---|---|---|---|---|
| Upload | .csv .tsv .txt; text/csv; text/tab-separated-values | — | — | accept attribute | — |
| Preview rows | number | 10 | 1000 | step 10 | — |
| Custom delimiter | text | 0 | 4 | max length 4 | — |
| XML root tag | text | 0 | 32 | sanitized, leading digit prefixed | — |
| XML row tag | text | 0 | 32 | sanitized, leading digit prefixed | — |
| Parser | stateful scan | — | — | quotes and escapes honored | Reached end of file while inside quotes. |
| Detector | heuristic | — | — | 5 candidates scored | Unable to resolve delimiter. |
| Sanity checks | row width | — | — | pad missing cells | Row N has M fields; Irregular row lengths detected. |
| Header keys | sanitized | — | — | deduplicated | Header duplicated or missing, keys adjusted. |
| Input | Accepted Families | Output | Encoding/Precision | Rounding |
|---|---|---|---|---|
| CSV text or file | .csv, .tsv, .txt; text/csv; text/tab-separated-values | CSV, TSV, XLSX, DOCX | UTF‑8 text, binary blobs for spreadsheets | none |
| — | — | JSON arrays and records, JSON Lines | Pretty printed JSON; one object per line for JSONL | n/a |
| — | — | XML | Escapes & < > " ' | n/a |
| — | — | HTML, Markdown | HTML entity escaping; Markdown pipes escaped | n/a |
Processing is browser based. A spreadsheet library is fetched from a public content network on first XLSX export; all parsing, profiling, and text conversions run locally thereafter.
Delimiter scoring examines up to 20 lines per candidate, and parsing is linear in the size of the input. Profiling uses bounded sets for uniqueness and simple counters per column.
With identical inputs and options the outputs are identical. Warnings are deduplicated, and summary badges reflect the three most common column kinds.
HTML and XML outputs escape special characters, JSON uses a safe serializer, and JSON keys and XML tags are sanitized and deduplicated. Clipboard writes and downloads occur only after explicit user actions.
Files are processed locally; nothing is uploaded. One optional script is fetched to enable spreadsheet export.
CSV conversion and profiling follow a short sequence to check structure and export clean formats.
Example: a three column grade sheet with five rows becomes JSON records with keys name city score and a spreadsheet you can open immediately.
When the preview matches expectations, your exports will mirror it.
No. Parsing, profiling, and conversions run locally. A single external script may be fetched to enable spreadsheets. Clipboard and downloads require clicks.
Avoid pasting secrets into shared devices.Record shaped JSON and JSON Lines need column names. Turn on header mode or add label overrides so keys exist before exporting.
It favors a candidate that yields many fields with low line to line variation. Ambiguous data may need a manual choice for reliable results.
CSV, TSV, spreadsheet and document tables, JSON arrays, JSON records, JSON Lines, XML, HTML, and Markdown tables are available.
Yes for text formats. Spreadsheet export needs one library fetched once. After that, conversions continue locally.
Paste data, confirm header and keys, open the XML tab, adjust root and row tags, then copy or download the result.
Only the first N rows show in the preview for speed. Exports always include all rows unless you remove them from the input.
Use is unrestricted here. Check the parent site for any broader licensing notes.