XML to TSV Converter
This XML to TSV converter reads a document, treats the root element as the container, and turns the repeated child elements inside it into tab-separated rows. Attributes are kept rather than discarded — each becomes its own column prefixed with @_ — and deeply nested elements are expanded into dot and index columns so no value is lost. Tab-separated output is what spreadsheet applications accept directly from the clipboard, so you can paste the result into a sheet and have the columns land correctly without running an import wizard. You can paste XML or upload a file, and the conversion happens entirely in your browser.
How it works
The root element is the container and the repeated child elements inside it become rows, separated by tabs rather than commas. Attributes are kept as columns prefixed with @_, so nothing in the document is dropped.
Tab-separated output pastes straight into a spreadsheet with the columns already split, which is the usual reason to pick it over CSV.
The conversion runs entirely in your browser — nothing you paste or upload is sent to a server.
How to convert XML to TSV
- Paste your XML into the input on the left, or upload an
.xmlfile. - The tab-separated rows appear on the right with a header taken from the element names.
- Copy them and paste straight into a spreadsheet — the columns land in the right cells.
Which elements become rows
A document has exactly one root element, and that root is a container rather than a record. The repeated elements
directly inside it are the data, so <employee> elements inside an
<employees> root produce one row each.
Attributes are data too
An id written as an attribute is just as much part of the record as one written as a child element,
so attributes are kept rather than dropped. Each becomes its own column prefixed with @_, which keeps
it distinguishable from a child element that happens to share the name.
Nested elements
Deeper structure is expanded rather than discarded. A nested <address> produces
address.city and address.postcode columns, and repeated nested elements become
tags[0], tags[1] and so on. Turn expansion off to keep each nested value in a single
cell as compact JSON instead.
Why TSV for spreadsheets
Spreadsheet applications treat tab-separated clipboard text as columns automatically. Pasting CSV usually drops the entire row into one cell until you run the text-to-columns wizard, so TSV saves a step every time.
Common use cases
- Getting an XML export into a spreadsheet for review.
- Turning a SOAP response into a table you can scan.
- Comparing two XML feeds by pasting both into adjacent sheets.
Frequently asked questions
How do I convert XML to TSV?
Paste your XML into the left panel or upload an .xml file. The tab-separated rows appear on the right, ready to copy straight into a spreadsheet.
How does it decide what becomes a row?
XML has exactly one root element, which acts as a container rather than data. The repeated elements directly inside it become the rows, so employee elements inside an employees root produce one row per employee.
Why TSV rather than CSV for spreadsheets?
Spreadsheet applications treat tab-separated clipboard text as columns automatically. Pasting CSV usually drops the whole row into one cell until you run the text-to-columns wizard.
Are attributes included?
Yes. Each attribute becomes its own column prefixed with @_ to keep it distinct from a child element of the same name.
What about deeply nested elements?
They are expanded into dot-separated columns, and repeated nested elements into indexed columns, so every value keeps a column of its own.
Is my XML file uploaded?
No. Files are read directly in your browser and parsed locally.
Related tools
XML to CSV Converter
This XML to CSV converter turns repeated elements into spreadsheet rows, attributes included.
TSV to XML Converter
This TSV to XML converter turns each tab-separated line into an element, headers becoming tags.
XML to JSON Converter
This XML to JSON converter parses XML into JSON online, preserving attributes and repeated tags as arrays.