User Rating 0.0 β˜…β˜…β˜…β˜…β˜…
Total Usage 0 times
Supports RFC 4180: quoted fields, embedded commas, newlines.
Is this tool helpful?

Your feedback helps us improve.

β˜… β˜… β˜… β˜… β˜…

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.

csv to ssv comma to semicolon csv converter ssv converter delimiter converter csv parser data format converter

Formulas

The conversion follows a two-phase pipeline: parse, then serialize. The parser operates as a finite-state machine (FSM) with four states.

Parse(input, din) β†’ rows[][] β†’ Serialize(rows, dout) β†’ output

Where din = , (comma) and dout = ; (semicolon).

Parser FSM states:

S ∈ {FIELD_START, UNQUOTED, QUOTED, QUOTE_ESCAPE}

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:

needsQuote(f) = f contains dout ∨ f contains " ∨ f contains \n

If needsQuote is TRUE, the field is wrapped in double-quotes and internal quotes are escaped as "".

Reference Data

FormatDelimiterCommon LocaleDecimal SeparatorRFC/StandardMIME TypeTypical Extension
CSV (Comma),US, UK, AU. (dot)RFC 4180text/csv.csv
SSV (Semicolon);DE, FR, IT, BR, ES, (comma)No formal RFCtext/csv.csv
TSV (Tab)\tUniversal. (dot)IANA text/tab-separated-valuestext/tab-separated-values.tsv
PSV (Pipe)|Databases, Logs. (dot)No formal RFCtext/plain.csv / .txt
Fixed WidthColumn positionsMainframes, COBOLVariesNo formal RFCtext/plain.txt / .dat
JSON LinesNewline per objectUniversal. (dot)jsonlines.orgapplication/x-ndjson.jsonl
Excel XMLXML tagsUniversalLocale-dependentECMA-376application/xml.xml
ParquetBinary columnarBig Data / AnalyticsN/AApache Parquetapplication/octet-stream.parquet
ODSXML-based cellsLibreOfficeLocale-dependentISO/IEC 26300application/vnd.oasis.opendocument.spreadsheet.ods
ARFFComma (with header)Weka / ML. (dot)Weka spectext/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 RulesSame quoting logic applies but triggered by semicolons instead of commas. Fields with ;, ", or newlines must be quoted.

Frequently Asked Questions

A naive find-and-replace destroys data integrity. Consider the field "Smith, John" - the comma is part of the value, not a delimiter. Replacing it produces "Smith; John", which corrupts the name. An RFC 4180-compliant parser distinguishes structural commas from literal ones by tracking quoted-field boundaries. This converter uses a finite-state machine to make that distinction correctly.
During serialization to SSV, any field containing a semicolon is automatically enclosed in double-quotes. For example, the CSV field value1 becomes the SSV field "value;1" if it contains a semicolon. This prevents the semicolon from being misinterpreted as a delimiter when the SSV file is opened.
RFC 4180 permits newline characters (CRLF or LF) inside quoted fields. The parser's QUOTED state treats newlines as literal content rather than row terminators. The output preserves these embedded newlines and quotes the field in the SSV result. If your CSV uses unquoted fields with newlines, the parser interprets each newline as a new row - this matches standard behavior.
Yes. The parser normalizes all line endings. It detects \r\n (Windows CRLF), \n (Unix LF), and \r (legacy Mac CR) as row terminators outside quoted fields. The output uses \n (LF) consistently. If your downstream system requires CRLF, open the downloaded file in a text editor that can convert line endings.
The converter processes files in-browser using JavaScript string operations. Files up to approximately 50 MB convert in under a few seconds on modern hardware. Beyond that, browser memory limits may cause slowdowns. For files exceeding 100 MB, consider a command-line tool like sed or awk with proper quoting logic, or a Python script using the csv module.
The FileReader API reads uploaded files as UTF-8 text by default. If your CSV uses a different encoding (e.g., ISO-8859-1 or Windows-1252), characters outside the ASCII range may display incorrectly. For best results, ensure your source file is saved as UTF-8. The converter does not modify, trim, or transform cell contents - it only changes the structural delimiter.