What is this XML to JSON converter?
A free, browser-based tool that converts XML to JSON as you type. Paste your XML and the JSON appears instantly, ready to copy or download. All processing happens locally in your browser, so your data is never uploaded.
Turning XML feeds into JSON your scripts can consume
XML is still what many upstream sources hand you: sitemaps, RSS and Atom feeds, SOAP responses, exports from systems that predate JSON. Meanwhile everything downstream, jq one-liners, Python notebooks, quick Node scripts, is built around JSON. Pasting a payload here shows its structure as JSON immediately, which is often the fastest way to understand an unfamiliar feed before writing a single line of parsing code.
That is also the honest scope of this direction: inspection and one-off transforms. A recurring production ingest deserves a proper XML parser in the pipeline; a file you need converted once, or a response you are trying to decode, does not.
Where the XML tree bends on its way into JSON
Element hierarchies map cleanly, with three things to watch. Cardinality: an element that occurs once arrives as a single value while one that occurs twice arrives as an array, so a one-item feed has a different shape than a ten-item one and downstream code should tolerate both. Namespaces: prefixes such as media: or dc: stay part of the key names, unresolved. Mixed content: when text is interleaved with child elements, as in rich description fields, the child elements carry over but the interleaved text does not, so treat marked-up bodies with care. Every value, numeric-looking or not, comes out as a string.
How to use it
- Paste your XML into the left panel, or upload a XML file.
- The JSON output appears instantly on the right as you type.
- Copy the result or download it as a file.
How the data is mapped
- XML attributes become "@name" keys (e.g. id="1001" → "@id": "1001").
- Repeated sibling elements with the same tag become a JSON array.
- Text-only elements become plain strings; an element with both attributes and text keeps its text under "#text".
Example
Input (XML)
<order id="1001">
<customer>Alice</customer>
<item>
<sku>A-1</sku>
<qty>3</qty>
</item>
<item>
<sku>B-2</sku>
<qty>5</qty>
</item>
</order>Output (JSON)
{
"order": {
"@id": "1001",
"customer": "Alice",
"item": [
{ "sku": "A-1", "qty": "3" },
{ "sku": "B-2", "qty": "5" }
]
}
}XML vs JSON at a glance
| Format | Type | Structure | Best for |
|---|---|---|---|
| XML | Plain text markup | Nested named elements plus attributes | System integrations, feeds, legacy APIs |
| JSON | Plain text | Objects, arrays, strings, and numbers | Modern APIs and programming |



