CSV to SSV Converter
Convert CSV (comma-separated) files to SSV (semicolon-separated) format online. Handles quoted fields, embedded commas, and newlines per RFC 4180.
About
Switching delimiters between CSV and SSV is not a find-and-replace operation. A naive substitution of commas with semicolons corrupts any field that itself contains a comma, a semicolon, or a quoted string. This tool implements a full RFC 4180-compliant finite-state parser that distinguishes structural delimiters from literal characters inside quoted fields. It correctly processes escaped double-quotes (""), embedded newlines within cells, and fields that mix commas with semicolons. The output re-quotes only those fields that require quoting under semicolon-delimited rules, producing minimal, clean SSV.
SSV is the default CSV dialect in many European locales where the comma serves as a decimal separator (e.g., 3,14 for Ο). Spreadsheet software such as Excel on German, French, or Italian systems expects semicolons. Feeding a comma-delimited file into such systems splits numeric values across columns. This converter eliminates that failure mode. Note: the tool assumes UTF-8 encoding. Binary or fixed-width files are outside its scope.
Formulas
The conversion follows a two-phase pipeline: parse, then serialize. The parser operates as a finite-state machine (FSM) with four states.
Where din = , (comma) and dout = ; (semicolon).
Parser FSM states:
Transition rules: In FIELD_START, a " transitions to QUOTED; any other character transitions to UNQUOTED. In QUOTED, a " transitions to QUOTE_ESCAPE; all other characters (including din and newlines) are appended literally. In QUOTE_ESCAPE, a second " appends a literal quote and returns to QUOTED; a din or newline finalizes the field.
Serialization quoting condition for each field f:
If needsQuote is TRUE, the field is wrapped in double-quotes and internal quotes are escaped as "".
Reference Data
| Format | Delimiter | Common Locale | Decimal Separator | RFC/Standard | MIME Type | Typical Extension |
|---|---|---|---|---|---|---|
| CSV (Comma) | , | US, UK, AU | . (dot) | RFC 4180 | text/csv | .csv |
| SSV (Semicolon) | ; | DE, FR, IT, BR, ES | , (comma) | No formal RFC | text/csv | .csv |
| TSV (Tab) | \t | Universal | . (dot) | IANA text/tab-separated-values | text/tab-separated-values | .tsv |
| PSV (Pipe) | | | Databases, Logs | . (dot) | No formal RFC | text/plain | .csv / .txt |
| Fixed Width | Column positions | Mainframes, COBOL | Varies | No formal RFC | text/plain | .txt / .dat |
| JSON Lines | Newline per object | Universal | . (dot) | jsonlines.org | application/x-ndjson | .jsonl |
| Excel XML | XML tags | Universal | Locale-dependent | ECMA-376 | application/xml | .xml |
| Parquet | Binary columnar | Big Data / Analytics | N/A | Apache Parquet | application/octet-stream | .parquet |
| ODS | XML-based cells | LibreOffice | Locale-dependent | ISO/IEC 26300 | application/vnd.oasis.opendocument.spreadsheet | .ods |
| ARFF | Comma (with header) | Weka / ML | . (dot) | Weka spec | text/plain | .arff |
| CSV (RFC 4180 Quoting Rules) | Fields containing delimiters, double-quotes, or newlines MUST be enclosed in double-quotes. A double-quote inside a quoted field is escaped as "". | |||||
| SSV Quoting Rules | Same quoting logic applies but triggered by semicolons instead of commas. Fields with ;, ", or newlines must be quoted. | |||||