ToolLineup

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.

XML input
Paste XML with repeated elements…
TSV output

How to convert XML to TSV

  1. Paste your XML into the input on the left, or upload an .xml file.
  2. The tab-separated rows appear on the right with a header taken from the element names.
  3. 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