Convert CSV to XML in the browser
Use the CSV to XML Converter to turn each CSV or TSV row into one XML row element. Choose the file encoding before loading your files, then configure the delimiter, names, column mapping, and output formatting.
Load files and review parser issues
Choose the File encoding first. Then drop one or more files into the drop zone or click browse files. You can select Auto-detect or set the Delimiter, Quote character, and Escape style. Use First row is a header when the first row contains column names.
Parser issues appear for the active file and include line numbers. The interface lists up to 50 issues and reports how many more were found. If a row has fewer cells than the header, missing cells receive empty values. Extra cells are ignored.
Configure XML names and column mapping
Set the Root element name and Row element name. If either name needs sanitizing, the changed name appears beside its input. For each column, choose Child element, Attribute on row, or Omit from output. You can also enter a custom element or attribute name.
The mapping report lists changes to column names only. Root and row name changes are shown beside their respective inputs. Each flat column maps to one element or attribute on its row; names such as address.city do not create nested XML automatically.
Control empty values and XML formatting
For Child element targets, choose how empty or missing values are written: an empty element, a self-closing element, xsi:nil="true", or omission. For Attribute on row targets, empty values are emitted as empty attributes unless Omit from output is selected; self-closing elements and xsi:nil do not apply to attributes.
Duplicate headers receive numeric suffixes such as name and name_2. Source row order is preserved. Use Indentation to select 2 spaces, 4 spaces, a tab, or minified output, and clear Include XML declaration when you do not want the declaration.
Preview, validate, and download the XML
Source data preview (first 20 rows) shows the beginning of the parsed table. Check the Generated XML preview as you change the controls. The tool can download a converted file, or use Download all as ZIP for several files.
Disallowed XML 1.0 control characters are preserved and trigger a preview warning. The output is not guaranteed to be valid XML when that warning appears, so validate it before using it.
Use multiple files carefully
The tool supports multiple files, but it keeps one shared column mapping based on the active file and applies that mapping to every file. Files with different headers or column layouts may therefore be mapped incorrectly. Review each file before downloading the batch. The page does not define a maximum file count.
Conversion limitations and local processing
Files are read with browser APIs and downloads are created as browser-generated Blobs. The converter does not send the loaded file to a server. The page does not specify maximum file size, row count, or file count, and it does not state browser compatibility requirements.
It converts flat rows to a flat one-level XML structure. It does not infer deeply nested XML from column names or validate unrelated XML documents. The page does not establish account requirements, usage limits, or broader privacy and security guarantees.
How to convert CSV to XML
- Choose File encoding before loading the files.
- Load one or more CSV or TSV files.
- Set Delimiter, Quote character, Escape style, and First row is a header, then review parser issues for the active file.
- Set Root element name and Row element name, then choose a mapping for each column.
- Set Empty / missing values and Indentation, then choose whether to Include XML declaration.
- Review the source and XML previews. Validate the output if a control-character warning appears.
- Download the result, or select Download all as ZIP for multiple files.
Frequently Asked Questions
Does converting CSV to XML upload my file anywhere?
Parsing the loaded CSV or TSV file and building the XML happen in your browser. The converter does not send the loaded file to a server.
Can this tool produce deeply nested XML from my flat rows?
No. Each row becomes one row element, and each column becomes one child element or attribute on it. The tool does not infer nested structures from flat column names.
What happens if a column name isn't valid XML?
Invalid characters are replaced, names that do not start with a letter or underscore are prefixed, and names starting with xml are prefixed. Column-name changes appear in the mapping report; sanitized root and row names appear beside their inputs.