XML Tools
Read a document instead of scanning it: pretty-print it, check that it is well-formed, validate it against a DTD or an XSD, query it with XPath, diff two versions structurally, or flatten it into CSV or YAML. Every parser here is written against the XML specification and runs in the page, so confidential documents stay on your device and the tools work offline.
Most popular
- xmlXML Formatter● ready
Indent XML by 2, 4 or 8 spaces or tabs, wrap long start tags, and keep xml:space="preserve" subtrees exactly as they were. Free, and in your browser.
- xmlXML Validator● ready
Every XML error reported with its position and a plain-English reason: which element was left open, which closing tag was found. Free, in your browser.
- xmlXPath Tester● ready
Type a path, see the matches as you type, and get a readable error when the engine hits an axis or function it does not implement rather than an empty result.
- xmlXML → CSV● ready
Point it at the repeating element and get a table: one row per record, one column per leaf, attributes marked with @ — ready for a spreadsheet.
- xmlXSD Validator● ready
Element order, occurrence, required attributes, unknown attributes and built-in types with facets — reported against the node that broke the rule.
Format & Clean
- xmlXML Formatter● ready
Indent XML by 2, 4 or 8 spaces or tabs, wrap long start tags, and keep xml:space="preserve" subtrees exactly as they were. Free, and in your browser.
- xmlXML Minifier● ready
Shrink a document for transport or a log line, with a per-change report of exactly what was removed and how much it saved — and mixed content left intact.
- xmlXML Linter● ready
Catch what a validator cannot, because the document is still valid: mixed tabs and spaces, stale namespaces, a contradictory BOM. Free, in your browser.
- xmlComment Stripper● ready
Strip XML comments for a smaller payload or a cleaner diff, with a count of what was removed and CDATA text left intact. Free, and runs in your browser.
- xmlCDATA Encoder● ready
Put markup, SQL or HTML inside XML without escaping every angle bracket, and split the terminator correctly when the text contains one.
- xmlEntity Escape● ready
Escape or unescape XML entities both ways, with unknown entities reported instead of silently dropped. Free, private, and it runs in your browser.
- xmlEncoding Fixer● ready
Turn `café` back into `café`, drop the byte-order mark that breaks string comparison, and fix a declaration that says ISO-8859-1 while the bytes are UTF-8.
- xmlLine Numbers● ready
Line and column numbers for every row, so a message from a parser or a colleague ('line 214, column 9') points at the same place here.
Inspect & Query
- xmlXML Tree Viewer● ready
See the shape of an XML document instead of its syntax: expand and collapse elements, read attributes, and copy the XPath to the node you clicked. Free.
- xmlXPath Tester● ready
Type a path, see the matches as you type, and get a readable error when the engine hits an axis or function it does not implement rather than an empty result.
- xmlNamespace Resolver● ready
The mapping a document actually declares, prefix by prefix, with the scope where each applies and the elements that use it.
- xmlAttribute Extractor● ready
List every `id`, `sku` or `href` in a document as a flat column — with duplicates highlighted and a count, ready to paste into a spreadsheet or a check script.
- xmlElement Stats● ready
A quick profile of a document: how many of each element, how deep it nests, which names dominate, and where the bytes actually go.
Compare & Convert
- xmlXML Diff● ready
A diff that understands documents: inserted records read as additions rather than shifting every line below, and reformatting is not a rewrite. Free.
- xmlXML → CSV● ready
Point it at the repeating element and get a table: one row per record, one column per leaf, attributes marked with @ — ready for a spreadsheet.
- xmlXML → YAML● ready
A readable YAML rendering of a document, using the @attribute convention and text keys, with types coerced only when every value agrees.
- xmlXML Merge● ready
Concatenate XML exports into one document, reusing a wrapper or the first root, and record a source attribute on each part so origin is never a guess. Free.
- xmlXML Split● ready
Turn a batch export into one file per record, each still a valid document with its ancestors rebuilt around it and the file name taken from a key attribute.
- xmlXSLT Transformer● ready
Write or paste a stylesheet, watch the transform run as you type, and see the result rendered plus the exact serialized output.
Schemas & Validation
- xmlXML Validator● ready
Every XML error reported with its position and a plain-English reason: which element was left open, which closing tag was found. Free, in your browser.
- xmlXSD Validator● ready
Element order, occurrence, required attributes, unknown attributes and built-in types with facets — reported against the node that broke the rule.
- xmlSchema Generator● ready
Generate a starting-point XSD from one or two real documents: types from the values, minOccurs and maxOccurs from what repeats, required attributes. Free.
- xmlDTD Validator● ready
Content models, attribute types, required and fixed values, ID uniqueness and IDREF resolution — validated against the DTD as a real parser would.
- xmlFeed Validator● ready
Catch the mistakes that make a feed fail silently in readers: a missing channel link, duplicate GUIDs, an Atom date in an RSS pubDate. Free, in your browser.
- xmlXXE Risk Checker● ready
See what a document asks a parser to do: external and parameter entities, external DTD, XInclude and billion-laughs patterns. Free, in your browser.
- xmlSOAP Builder● ready
Build a request skeleton with header and body parameters, correct namespace prefixes, escaped values and the right transport header line for your SOAP version.
All tools
- xmlXML Formatter● ready
Indent XML by 2, 4 or 8 spaces or tabs, wrap long start tags, and keep xml:space="preserve" subtrees exactly as they were. Free, and in your browser.
- xmlXML Validator● ready
Every XML error reported with its position and a plain-English reason: which element was left open, which closing tag was found. Free, in your browser.
- xmlXML Minifier● ready
Shrink a document for transport or a log line, with a per-change report of exactly what was removed and how much it saved — and mixed content left intact.
- xmlXML Linter● ready
Catch what a validator cannot, because the document is still valid: mixed tabs and spaces, stale namespaces, a contradictory BOM. Free, in your browser.
- xmlComment Stripper● ready
Strip XML comments for a smaller payload or a cleaner diff, with a count of what was removed and CDATA text left intact. Free, and runs in your browser.
- xmlCDATA Encoder● ready
Put markup, SQL or HTML inside XML without escaping every angle bracket, and split the terminator correctly when the text contains one.
- xmlEntity Escape● ready
Escape or unescape XML entities both ways, with unknown entities reported instead of silently dropped. Free, private, and it runs in your browser.
- xmlEncoding Fixer● ready
Turn `café` back into `café`, drop the byte-order mark that breaks string comparison, and fix a declaration that says ISO-8859-1 while the bytes are UTF-8.
- xmlLine Numbers● ready
Line and column numbers for every row, so a message from a parser or a colleague ('line 214, column 9') points at the same place here.
- xmlXML Tree Viewer● ready
See the shape of an XML document instead of its syntax: expand and collapse elements, read attributes, and copy the XPath to the node you clicked. Free.
- xmlXPath Tester● ready
Type a path, see the matches as you type, and get a readable error when the engine hits an axis or function it does not implement rather than an empty result.
- xmlNamespace Resolver● ready
The mapping a document actually declares, prefix by prefix, with the scope where each applies and the elements that use it.
- xmlAttribute Extractor● ready
List every `id`, `sku` or `href` in a document as a flat column — with duplicates highlighted and a count, ready to paste into a spreadsheet or a check script.
- xmlElement Stats● ready
A quick profile of a document: how many of each element, how deep it nests, which names dominate, and where the bytes actually go.
- xmlXML Diff● ready
A diff that understands documents: inserted records read as additions rather than shifting every line below, and reformatting is not a rewrite. Free.
- xmlXML → CSV● ready
Point it at the repeating element and get a table: one row per record, one column per leaf, attributes marked with @ — ready for a spreadsheet.
- xmlXML → YAML● ready
A readable YAML rendering of a document, using the @attribute convention and text keys, with types coerced only when every value agrees.
- xmlXML Merge● ready
Concatenate XML exports into one document, reusing a wrapper or the first root, and record a source attribute on each part so origin is never a guess. Free.
- xmlXML Split● ready
Turn a batch export into one file per record, each still a valid document with its ancestors rebuilt around it and the file name taken from a key attribute.
- xmlXSLT Transformer● ready
Write or paste a stylesheet, watch the transform run as you type, and see the result rendered plus the exact serialized output.
- xmlXSD Validator● ready
Element order, occurrence, required attributes, unknown attributes and built-in types with facets — reported against the node that broke the rule.
- xmlSchema Generator● ready
Generate a starting-point XSD from one or two real documents: types from the values, minOccurs and maxOccurs from what repeats, required attributes. Free.
- xmlDTD Validator● ready
Content models, attribute types, required and fixed values, ID uniqueness and IDREF resolution — validated against the DTD as a real parser would.
- xmlFeed Validator● ready
Catch the mistakes that make a feed fail silently in readers: a missing channel link, duplicate GUIDs, an Atom date in an RSS pubDate. Free, in your browser.
- xmlXXE Risk Checker● ready
See what a document asks a parser to do: external and parameter entities, external DTD, XInclude and billion-laughs patterns. Free, in your browser.
- xmlSOAP Builder● ready
Build a request skeleton with header and body parameters, correct namespace prefixes, escaped values and the right transport header line for your SOAP version.
About XML Tools
XML rewards precision and punishes guessing. Whitespace between elements is insignificant — until it is inside mixed content; an unprefixed attribute has no namespace; a DOCTYPE is not inert if your parser resolves entities; and a feed with duplicate GUIDs looks fine and silently fails in readers. These tools make each of those facts visible. The parser, the XPath 1.0 engine, the DTD and XSD validators, the structural diff and the encoding repair are all written from the specifications and run locally, so a result comes with the reason behind it rather than a bare pass or fail. The schema tools state which constructs they implement and which they do not, the XXE checker reports what a document asks a parser to do without ever doing it, and the converters preserve the element/attribute distinction instead of flattening it away.
Related categories
- JSON Tools
Validate, format, and convert JSON instantly in your browser.
- YAML Tools
Validate, format, and convert YAML config files in your browser.
- CSV Tools
Fast, private browser-based tools for working with CSV files.
- Code Formatter Tools
Format, minify and inspect HTML, CSS, SQL, JavaScript and more — right in your browser.
Frequently asked questions
Is my XML uploaded anywhere?
No. Parsing, validation, querying, formatting and conversion all run in your browser — the pages never make a request with your document, and they keep working with the network switched off. That also means no external DTD, schema or stylesheet is ever fetched, which is why the DTD and XSD tools ask you to paste the content instead of pointing at a URL.
How complete are the DTD and XSD validators?
They are honest subsets. DTD content models, attribute types, ID uniqueness and IDREF resolution are implemented; conditional sections and parameter-entity substitution are not. For XSD, element and attribute declarations, sequence/choice/all, occurrence, simple types with facets and simpleContent extensions are implemented; include/import, substitution groups, identity constraints and XSD 1.1 assertions are not. Each page lists what it covers so a pass is a signal rather than a false assurance.
Why does formatting sometimes leave part of the document alone?
Because whitespace is content in mixed content. In `<p>Hello <b>world</b></p>` the space before `<b>` is part of the text, so re-indenting the markup would change what a consumer sees. The formatter indents element-only content and leaves mixed content and xml:space="preserve" subtrees exactly as they were.
Can I convert between XML and JSON here?
Those two directions already live in the JSON category, alongside YAML↔XML and CSV→XML, and are not duplicated here — this category is everything XML needs around them: formatting, validation, querying, diffing, splitting and merging, plus conversion to CSV and YAML.
What should I use to check security-sensitive XML?
The XXE Risk Checker, before the document reaches your parser. It reports external and parameter entities, an external DTD subset and XInclude without resolving or executing anything, and lists the parser settings that remove the exposure. Treat any pass as specific to the document you pasted, not as a statement about your application.