Compare and diff two XML documents. Fast, secure, and completely free. All processing happens in your browser — no data is sent to any server.
XML Compare parses two XML documents into their element trees and reports structural differences — added or removed elements, changed text content, and differing attribute values — while correctly distinguishing between an element's children and its attributes, which a plain text diff cannot do reliably. XML's flexibility (self-closing tags, attribute order that doesn't affect meaning, optional namespaces) means two documents that render identically can look very different as raw text; this tool compares what the XML actually represents rather than how it happens to be formatted.
XML configuration files, SOAP payloads, and data exports are frequently regenerated by different tools that format them slightly differently — one library self-closes empty elements, another writes them as open/close pairs; one preserves attribute order, another doesn't. A text-based diff turns all of that formatting noise into a wall of false-positive changes. A structural comparison filters that out so you can see the differences that actually matter: a changed attribute value, a missing child element, or altered text content.
No — both represent an identical empty element, and the comparison treats them as equal regardless of which self-closing style was used in the source.
Not by default — attribute order in XML has no semantic meaning, so the tool compares the set of attributes and their values rather than their sequence, unless you explicitly enable order-sensitive comparison.
Elements and attributes are compared including their namespace context, so a element in one namespace is correctly distinguished from an identically-named element in a different namespace.
Yes, the XML declaration itself (<?xml version=...?>) is metadata about the document rather than content, so differences there don't affect the structural comparison of the actual data.
No, insignificant whitespace used purely for indentation is ignored; only meaningful text content within elements is compared.