Free · local XML tools

Convert XML to CSV

Choose XML and a row XPath, then map your CSV columns in the editor. Review values and warnings before downloading a separate CSV copy.

Step 1: Choose your XML

Original XML stays in your browser. Task inputs: up to 8 MiB combined.

Paste XML instead

Choose the row elements, then map ordered columns and namespace aliases in the editor.

Set row XPath (optional)
Resume editor
  1. Step 2: Configure and review output

    Your original XML opens once in the existing editor with Convert XML selected. Choose Review converted copy; CSV also needs explicit node selectors for each column.

  2. Step 3: Review and keep a copy

    Review warnings and the output preview, then download a separate JSON or CSV copy. The original XML is retained; edits or mapping changes require a new review.

Work with the original document

Continue in the shared XML workspace with source and element outline. Back to website keeps it mounted; Resume editor returns to it. Browser sessions are temporary, so download work you want to keep.

Explicit mapping and output limits

JSON keeps parsed node order and namespace-aware names. CSV may flatten markup and cannot distinguish missing and empty strings. Conversions are limited to 8 MiB decoded UTF-8 input/output, 10,000 CSV rows and a 40-second cancellable local worker. No external XML resources are loaded.

Frequently asked questions

How do rows and columns map?

A row XPath selects original XML elements. Each ordered column has a header and a relative node XPath, with text-value or serialized-XML extraction. Namespace aliases are explicit. Computed numeric values are refused so large identifiers are not silently coerced.

What happens to missing or repeated values?

Choose empty cells or reject missing nodes. Multiple matches are rejected unless you explicitly choose a join separator. All extracted values remain strings. CSV cannot distinguish missing nodes from empty text, and text extraction can flatten nested markup; the review reports those cases.

What are the conversion limits?

Input and output are each limited to 8 MiB decoded UTF-8, with at most 10,000 rows, 64 columns and 100 selected nodes per cell. A local worker has Cancel and a 40-second timeout. DTDs and external resources are refused. Optional formula-prefix protection changes recognized spreadsheet formula starters; disable it when an importer needs raw values.