Excel to XML Converter — Free, Browser-Based | SmallStudyTools
100% Free · No Signup · Browser-Based

Excel to XML Converter

Upload an .xlsx file and get well-formed, escaped XML, right in your browser — nothing is uploaded to a server. Pro Mode adds multi-sheet export, custom element names, attributes-vs-elements mode, pretty-print, row indexes, and CDATA.

● Pro Version is Free for now
✓ Bulk convert multiple files at once ·
✓ Multi-sheet export, element names & pretty-print ·
✓ Row index attribute & CDATA wrapping
Day Night
📄 Upload Your Excel File
Drag & drop your .xlsx file here
or click to browse — only .xlsx files are accepted
Browse Files
🎉 Your XML Output
📑 Sheet Handling PRO

Off = only the first sheet is converted. On = every sheet is nested as its own <sheet> element.

Combine all sheets
Off by default · on = one <sheet name="…"> per sheet
🏷️ Element Names PRO
Will be used as: <rows>
Will be used as: <row>
🧬 Value Format PRO
📐 Pretty Print PRO
Indent & line breaks
On by default · off = compact single-line XML
#️⃣ Row Index Attribute PRO

Adds a sequential id="1", id="2"... attribute to every row element.

Add row index attribute
Off by default · works with either Value Format
📦 Wrap Values in CDATA PRO

Preserves raw cell text unescaped inside <![CDATA[ ]]> instead of entity-escaping it.

Wrap values in CDATA
Off by default · requires Child Elements format

How to Use the Excel to XML Converter

From an .xlsx upload to well-formed, escaped XML in seconds. No signup, and your workbook never leaves your browser.

1
Upload Your .xlsx File
Drag and drop your Excel file, or click to browse. Files stay under 30MB and are checked by their real zip content, not just the file extension.
2
XML Document Builds Instantly
Your first sheet's rows and columns become well-formed, escaped XML right in the browser, with column headers auto-sanitized into valid element names.
3
Switch to Pro Mode
Unlock multi-sheet export nested as <sheet> elements, custom root & row element names, Attributes vs Child Elements format, pretty-print control, a row index attribute, and CDATA wrapping — plus bulk conversion for up to 20 files at once.
4
Preview & Check Row Counts
Each result shows the sheet, row, and column counts plus file size, and a live preview of the actual XML, so you can confirm it's correct before downloading.
5
Download .xml, or Zip
Download a single .xml file, or convert a whole batch of workbooks in Pro Mode and grab every result at once in a .zip.

Everything above runs entirely in your browser. Your Excel file is never uploaded to a server, so its contents stay completely private from start to finish.

Specifications
Price Free
Signup Not Required
Data Processing Local only, in your browser
Input Format Real .xlsx (Excel 2007+)
Output Format Well-formed XML (.xml)
File Size Limit 30MB per .xlsx · up to 20 files in Pro
Element Names Auto-sanitized & de-duplicated · customizable in Pro
Pro Mode Options Sheet Handling, Element Names, Value Format, Pretty Print, Row Index Attribute, Wrap Values in CDATA
Found a bug or something not working right? Let us know and we'll fix it, every report helps make this tool better.
Report an Issue

Excel to XML Converter: Turn a Workbook Into Well-Formed, Escaped XML

Quick answer: Upload your .xlsx file above and this tool builds well-formed, escaped XML, free and entirely in your browser. Pro Mode adds multi-sheet export, custom element names, attributes-vs-elements mode, pretty-print control, a row index attribute, and CDATA wrapping.

An Excel workbook is built for people: cells, formatting, formulas, and possibly several sheets living side by side. XML is built for machines — a self-describing, nestable markup format with a formal specification for what counts as well-formed. Many integrations, legacy import tools, and enterprise systems specifically expect XML rather than a binary spreadsheet file, which makes converting between the two a common, practical step for anyone whose data starts life in Excel but needs to end up somewhere stricter.

Every converter on SmallStudyTools is tested with real files before it ships. This tool checks that an uploaded file is genuinely an .xlsx workbook — not just named that way — by reading its real zip magic bytes and confirming the workbook actually parses, so a mislabeled or corrupted file is rejected with a clear message instead of silently producing broken XML.

1How This Excel to XML Converter Works

The tool reads your workbook's first sheet (or every sheet, in Pro Mode) and builds an XML document by hand rather than relying on a generic library, which keeps every part of the output predictable and correct. Column headers become element or attribute names, run through a sanitizer that guarantees every name is spec-valid — starting with a letter or underscore, containing only letters, digits, periods, hyphens, and underscores — with duplicate names after sanitization automatically de-duplicated. Every cell value is properly escaped for its position in the document, or CDATA-wrapped in Pro Mode, so the resulting XML is always well-formed and parses cleanly in any standards-compliant XML parser, whether the value came from a formula, a date cell, or plain text.

2Simple vs Pro Mode

FeatureSimplePro
Convert one Excel sheet into well-formed XML✓✓
Auto-sanitized, de-duplicated element names✓✓
Copy, preview, or download the result✓✓
Export every sheet, nested as <sheet> elements—✓
Custom root and row element names—✓
Value format — Child Elements or Attributes—✓
Pretty print — indented or compact single-line—✓
Row Index attribute, sequential id="1", id="2"...—✓
Wrap Values in CDATA—✓
Convert up to 20 Excel files at once, download as ZIP—✓

Simple Mode covers the everyday case: upload one .xlsx file and get back clean, indented, well-formed XML from its first sheet, with sensible default element names, no decisions required. Pro Mode, currently free to use, hands over the structural details that matter for real integrations — every sheet at once, custom element names, attributes vs. child elements, a row index, CDATA — plus bulk conversion for anyone turning a whole folder of workbooks into XML at once.

3Multi-Sheet Workbooks: How Combining Sheets Works

A real spreadsheet is rarely just one flat table — it's common for a workbook to hold several related sheets, one per month, region, or category. Simple Mode only ever reads the first sheet, since that covers the majority of quick one-off conversions. Turning on Combine All Sheets in Pro Mode changes that: every sheet in the workbook is converted and nested inside the document as its own <sheet name="..."> element, with that sheet's rows inside it, so a single XML file still ends up holding your entire workbook rather than losing everything after the first tab. Each sheet's column headers are sanitized and de-duplicated independently of the others, since two different sheets are free to reuse the same header text for different columns, and if the Row Index Attribute is also turned on, it restarts at 1 within each sheet rather than counting continuously through the whole document — matching how a person would naturally expect row numbers to reset per sheet.

4Row Index and CDATA: Two Pro Options for Stricter XML

Two Pro options exist specifically for XML that needs to slot into a more demanding downstream system. Row Index Attribute adds a sequential id="1", id="2"... attribute to every row element, whether you're using Child Elements or Attributes format — useful when a receiving system needs a stable positional reference for each record, or when you want to preserve the original spreadsheet row order explicitly rather than trusting document order alone. It works the same way whether you're converting one sheet or several: with Combine All Sheets on, the count restarts at the top of every sheet, so the numbering always reflects that sheet's own row position rather than a running total across the file.

Wrap Values in CDATA switches from entity-escaping — turning & into &amp;, for example — to wrapping each cell's text in a <![CDATA[ ]]> section instead, which keeps the visual source text closer to what was actually typed into the spreadsheet cell. This only applies in Child Elements format, since CDATA sections aren't valid inside an XML attribute, so the option is automatically disabled the moment you switch to Attributes format, with the sidebar hint updating to explain why. The one edge case CDATA itself can't represent literally — a value that happens to contain the exact sequence ]]> — is handled by automatically splitting it into two adjacent CDATA sections around that sequence, the standard, spec-compliant way to escape it, so even that unusual case still round-trips correctly and the document stays well-formed.

5Common Reasons People Convert Excel to XML

🔗
Feeding a Legacy Import or ERP System
🏢
Meeting an Enterprise System's XML Requirement
📊
Turning a Multi-Sheet Report Into One XML File
🧪
Preparing Test Fixtures for an XML-Based API
🗂️
Archiving Spreadsheet Data in a Self-Describing Format
🔀
Bridging a Spreadsheet Export and an XML Pipeline

XML remains the format of record for a lot of enterprise software, government data interchange standards, and older integration platforms that predate JSON's popularity — an Excel export, however convenient for a human to build, often simply isn't accepted where XML is specifically required. Converting once turns a workbook's raw data into a document that's genuinely self-describing (each value carries its own tag name, not just a column position) and that can be validated against a schema if one exists, rather than a binary spreadsheet file a receiving system has no direct way to parse. This matters even more with a multi-sheet workbook, where a single Combine All Sheets pass can replace what would otherwise be a manual, sheet-by-sheet export process.

6Child Elements vs. Attributes: Which Should You Pick?

These are the two conventional ways to represent tabular data in XML, and the right choice depends on where the file is headed. Child Elements — the default here — wraps each value in its own named tag, which is more verbose but generally considered more readable, and handles long or complex cell text more comfortably since element content has fewer restrictions than attribute values. It's also the only format that supports CDATA wrapping. Attributes mode packs every value directly onto the row tag as a name="value" pair, producing a noticeably smaller file for the same data, and matches what a number of legacy XML-based import tools and older enterprise systems specifically expect. If you're not sure which a receiving system wants, Child Elements is the safer general-purpose default; Attributes is worth switching to if you already know the target format, you're optimizing for file size on a very large export, or the system you're feeding simply doesn't support nested child tags for row data.

Privacy Note

Every Excel file you convert here is processed entirely inside your own browser tab using JavaScript running on your device. Nothing is uploaded, stored, or transmitted to a server at any point, whether you're in Simple Mode or Pro Mode, and that includes when Combine All Sheets pulls data out of every tab in your workbook.

7Frequently Asked Questions

Is there a free way to convert an Excel file to XML?
Yes. Upload your .xlsx file above and it becomes well-formed, escaped XML right in your browser within a couple of seconds. There's no account to create and no limit on how many times you can use it, since the whole conversion happens on your own device.
What happens if a column header isn't valid as an XML element name?
It's automatically sanitized. XML element and attribute names can only start with a letter or underscore and contain letters, digits, periods, hyphens, and underscores — so a header like "Order #" or "2024 Total" gets its invalid characters replaced and, if needed, a leading underscore added, producing a name like "Order__" or "_2024_Total". Duplicate names after sanitization are also automatically de-duplicated with a numeric suffix, so the output is always well-formed no matter what your spreadsheet's headers look like.
Can I export every sheet in my workbook, not just the first?
Yes, in Pro Mode. Turning on Combine All Sheets nests each sheet as its own <sheet name="..."> element inside the root element, with that sheet's rows inside it. Each sheet gets its own independent column-name sanitization and de-duplication, and a Row Index attribute, if enabled, restarts at 1 within every sheet rather than continuing across the whole document.
Should I use Child Elements or Attributes for my values?
Child Elements, the default, wraps each value in its own <name>value</name> tag and is the more common, more readable choice, especially for values that might be long or contain complex text. Attributes mode packs every value onto the row tag itself as <row name="value"/>, which produces noticeably smaller files and is the conventional format many legacy import tools and older XML-based systems specifically expect.
Can I preserve raw text with CDATA instead of escaping it?
Yes, in Pro Mode, when using Child Elements format. Turning on Wrap Values in CDATA wraps each cell's text in <![CDATA[ ]]> instead of entity-escaping characters like & and <, which keeps the original text visually intact in the source. CDATA isn't valid inside an XML attribute, so this option is only available in Child Elements format and is automatically disabled if you switch to Attributes.
Can I add a sequential row index to each record?
Yes, in Pro Mode. Turning on the Row Index Attribute adds a sequential id="1", id="2"... attribute to every row element, in either Child Elements or Attributes format. It's useful when a receiving system needs a stable positional reference for each record, or when you want to preserve the original spreadsheet row order explicitly rather than relying on document order alone.

Built on open standards. The output follows the W3C XML 1.0 (Fifth Edition) specification, and the source workbook format follows ECMA-376, the Office Open XML file formats standard that defines .xlsx.

Lilly
Here to help you find a tool
Search tools Search blogs
Try me to find a tool! 👋