CELLSMITH / CSV TOOLS
CSV to XML Converter
Open a CSV and download it as XML. Every value is written exactly as it is.
Files are kept for up to 30 minutes after your last activity. Unsaved edits cannot be recovered after a server restart.
Each row becomes a row element with one child element per column, named after the header. Values are text only - XML carries no types, only element order - and leading zeros, spaces, accents and line breaks inside values are kept. Files up to 32 MiB work in the web version.
How it works
- Open a UTF-8 CSV, TSV or TXT file with the button above, or drop it into the workbench. Check the detected delimiter and the row count in the file passport before exporting.
- Choose Prepare XML file in the Convert and export panel. The report shows how many rows and columns will be written; every cell becomes the text of its element.
- Download the .xml file. Your original CSV is not touched: the export is a new file and there is nothing to undo.
What stays exactly the same
Every cell value is written as XML text exactly as it is in the CSV: 00123 stays 00123, long numbers are not shortened, accents and emoji stay, and nothing becomes a date or a number. XML has no types to guess with - the file carries element order and text.
Only the characters XML itself requires are escaped: ampersand, less-than and greater-than, plus the carriage return inside a value, which is written as a character reference so every XML reader gives it back. Line breaks inside values are kept inside the element. A character XML cannot carry - most control characters other than tab, newline and carriage return - refuses the whole export with the data row and column named; it is never silently dropped or replaced.
Element names come from the header row: each character XML does not allow in a name is replaced by an underscore. A header that cannot start an element name (for example one starting with a digit) or an empty header refuses the export naming the column, and two headers that become the same name are both named in a refusal - columns are never renamed or dropped silently. With no header row the elements are col1, col2 and so on.
A row with fewer cells than the header gets empty elements for the missing trailing cells; an empty cell becomes an empty element. Cells beyond the header width were not kept when the file was opened, as with every cellsmith export.
The export is one-way: your original CSV stays byte for byte as it was, and nothing is written back to it. Your file is uploaded to the cellsmith.app server, held in memory and deleted after the retention period.
Limits
Files are uploaded to the cellsmith.app server and held in memory, not kept only in your browser. The web version accepts UTF-8 text files up to 32 MiB each. Files expire 30 minutes after the last activity; opening another file or restarting the server also clears the current document and unsaved work.
Questions about this tool
How do I convert a CSV to XML?
Open the CSV, choose Prepare XML file in the Convert and export panel and download the .xml file. Each row becomes a row element with one child element per column, and every value keeps the exact text it has in the CSV.
How are the XML element names chosen?
From the header row: each character XML does not allow in a name is replaced by an underscore. A header that cannot start an element name, such as one starting with a digit, or an empty header, refuses the export naming the column. Two headers that become the same name are both named in a refusal. With no header row the elements are col1, col2 and so on.
Will my values change?
No. Values are written as exact text: 00123 stays 00123, long numbers are not shortened and nothing becomes a date. XML has no types, so nothing is guessed - the file carries element order and text, nothing else.
What happens to special characters and line breaks?
Ampersand, less-than and greater-than are escaped, quotes stay literal, and line breaks inside a value are kept inside its element. A carriage return is written as a character reference so it survives every XML reader. A character XML cannot carry - most control characters other than tab, newline and carriage return - refuses the export with the data row and column named, never silently changed.
What if some rows have fewer cells than the header?
Missing trailing cells become empty elements, and an empty cell becomes an empty element, so every row has the same shape. Cells beyond the header width were not kept when the file was opened, as with every cellsmith export.
Can it convert XML back to CSV?
No. The export is one-way and cellsmith does not open XML files. Your CSV stays the source of truth and is not written back.
Is my file uploaded?
In the web version, yes: the file is sent to the cellsmith.app server to build the export, kept in memory and deleted after the retention period.