Skip to main content

Data

XML to TSV Converter

Convert XML records into tab-separated rows for spreadsheets and editors: one row per record, attributes and fields as columns.

Written by · Published · Last updated

Runs in your browserPrivate by designXML → TSV
XML→TSV

Press ⌘ Enter to run

5 lines · 194 chars

Ready; press Run or ⌘ Enter

How this tool handles files

Processing
In your browser, on-device
Storage
Nothing stored
Output
A file you download
Your responsibility
Review before official use
  • Runs in your browser. Your file is processed on your own device and, on this site, is not uploaded to our servers.
  • Nothing is stored. Your file and its output are gone the moment you close or reload the page.
  • Review sensitive files (bank, ID, medical) and check the output before sharing it.

Every tool on FormatOS runs in your browser. Read our Privacy Policy and File Handling Policy.

Common uses

  • Paste XML data into a spreadsheet
  • Quickly compare XML records

Limitations

  • Deeply nested records produce long path-named columns (address.city)

When tab-separated XML output is the right call

Tab-separated text is what a spreadsheet takes straight from the clipboard: paste it into a cell and every value lands in its own column, with no import dialog and no trouble from commas inside values. This converter turns XML records into exactly that, which makes it the quick route from an XML export or API response into Excel, Google Sheets or Numbers.

Because everything runs in your browser, it suits data you would rather not upload: internal exports, draft records, anything mid-pipeline. The document is parsed locally, and nothing persists once you close the tab.

How the conversion runs

Drop or open an .xml file, or paste the XML, then run it. The parser is strict: an unclosed tag, a stray & or text outside the root element stops the run with the line and column of the problem. There is no upload and no server round trip.

The element that repeats most often under the root becomes the row. Within each row, attributes become @-named columns, simple child elements become columns, and deeper fields are named by path. A field that repeats within one record gets a numbered column instead of being merged into another cell.

Values containing a tab, a quote or a line break are wrapped in quotes so columns stay aligned. The output is UTF-8 text with a header row.

Where the result can surprise you

Records with different fields give sparse columns, and very deep XML gives long path-named headers. Both keep every value; tidy them in the spreadsheet afterwards if you only need some fields.

Values arrive as text, but the spreadsheet you paste into may reformat numbers, dates and codes with leading zeros. Set those columns to plain text before pasting if the exact characters matter.

If nothing in the document repeats, it becomes a single row. That usually means the records sit one level deeper than the root's children; converting a smaller part of the XML that starts at the list will give one row per record.

Check the header row, then the rows

Confirm the header row lists the fields you expected, including attributes, and that the number of rows matches the number of records.

Look for numbered columns such as phone_2: they mark a field that repeated inside a record.

For anything official, financial or legal, treat the conversion as a draft and verify key fields against the original XML before using it.

Frequently asked questions

If your XML text contains commas, TSV avoids the quoting that CSV would need, and tab-separated text pastes straight into a spreadsheet as separate columns.

The element that repeats most often under the root is the record, and each one becomes a row. Nested fields become path-named columns such as address.city.

Yes. Record attributes become columns such as @id, and nested attributes are named by their path, such as price@currency.

No. The conversion runs in your browser; your text or file is processed on your own device and, on this site, is not uploaded to a server, and we do not intentionally store it.

Related data tools

Tool last reviewed: September 27, 2026 · Report a problem