Convert CSV to XML
Convert CSV to XML in your browser: load your CSV, choose XML as the target, and download the result. The converter reports exactly what it could not carry across, and nothing is uploaded to a server.
Convert CSV to XMLRuns in your browser. Nothing uploaded.
When you need this
Feeding a spreadsheet into a system that only accepts XML — an EDI interface, a schema-validated upload, an older import job. Usually the last step before a file goes somewhere that will reject it on a technicality.
How to convert CSV to XML
- Load your CSV
- Drag the .csv file in, or paste the rows. An export from Excel, Numbers or a database client works unchanged, including a quoted header row. Nothing leaves your browser at this or any later step.
- Choose the target format
- Press Ctrl+Shift+K (Cmd+Shift+K on a Mac) to open the conversion panel, then pick XML as the target. The source and the result sit side by side.
- Read the loss report
- The panel shows whether the conversion is lossless for your particular data, and lists every value it had to transform. Adjust indentation, key sorting and null handling if you need to.
- Take the XML
- Download the .xml file, copy it, or open it as a new tab to keep working on it in the XML views.
What survives the conversion
CSV to XML cannot be lossless, because the two formats express different things. Rows are wrapped in a generated element name; headers that are not valid names are rewritten.
- Rows are wrapped in a generated element name, because XML needs one root and each row needs an element. The names used appear in the warnings so you can compare them with the schema you are targeting.
- Headers that are not valid XML names are rewritten — a column called
2024 totalcannot become<2024 total>, so it is transformed and the change is reported. - Values are written as text with the five XML entities escaped. No types are asserted, because a CSV does not carry any.
A worked example
Rows wrapped, with an invalid header name rewritten:
2024 total,region
42,EU<root>
<row>
<_2024_total>42</_2024_total>
<region>EU</region>
</row>
</root>Privacy
The conversion runs in your browser — in a Web Worker for anything above a quarter of a megabyte, so the page stays responsive. Your data is not uploaded, not logged and not stored. There is no account, and the whole thing works offline.
Questions
Can I control the row and root element names?
The generated names are reported in the warnings so you always know what you got, and the output is plain text you can adjust before sending it on. If the receiving schema demands particular names, that final rename is a search and replace rather than a re-conversion.
Is converting CSV to XML lossless?
No, and no tool can make it so. Rows are wrapped in a generated element name; headers that are not valid names are rewritten. The converter lists every affected value rather than silently dropping it.
Is my CSV uploaded to a server?
No. The file is read and converted by your browser. Nothing about its contents is sent anywhere, which you can verify in your browser’s network panel or by using the tool with the network disconnected.