
An XML diff checker compares two XML documents and reports what changed as a set of structural differences: which elements were added or removed, which attributes changed value, and where the text content differs. Instead of a line-by-line text diff that turns red the moment you reformat or reorder something, it parses both documents into node trees and compares them as data. You paste the original XML on the left, the new XML on the right, and get a list of differences, each pinned to the exact node path where it occurred, such as /catalog/book[1]/@category.
The reason a structural comparison matters is that XML carries the same meaning across many different byte layouts. Two documents can be identical in structure yet differ in indentation, attribute order, line endings, or whether an empty element is written as a self-closing tag. A plain text diff flags all of those as changes; a structural diff ignores them and reports only what would actually change how a parser reads the document. This tool pairs child elements of the same tag name by their order of appearance, so the second book element is compared to the second book element even if unrelated siblings shifted around it.
Everything runs in your browser with a tolerant parser that handles attributes in single or double quotes, self-closing tags, CDATA sections, comments, processing instructions, and standard entity references. The documents never leave your device, are never uploaded, and are never logged, which matters because the XML people compare is often a configuration file, an API payload, a sitemap, or an SVG. Malformed input is reported with a clear message rather than a silent wrong answer, and the tool keeps working with your network disconnected once the page has loaded.
Put the original XML in the first field and the changed XML in the second. Load the sample if you want to see how added elements, removed attributes, and changed text are reported.
Leave "ignore whitespace" on so reformatting does not count as a change, and optionally ignore attributes or compare names and values case-insensitively.
Press Compare. The tool parses both trees and lists every difference by node path, grouped into added, removed, and changed, with the old and new values shown side by side.
Filter by change type, inspect each element, attribute, or text difference at its path, then copy or download the full report to paste into a pull request or ticket.
Documents are parsed into node trees and compared as data, so reindenting, reordering attributes, or rewrapping lines does not register as a change. Only real structural differences are reported.
Every difference is labelled with the exact path where it occurred, such as /catalog/book[2]/price/text(), so you can find and fix the change without scanning the whole file.
The diff separates added and removed elements from changed attribute values and altered text content, so you can see at a glance which kind of change happened where.
Repeated elements of the same tag are paired by their order of appearance, so the third item is compared to the third item and unrelated siblings do not shift the whole diff.
Compare two CSV files and see which rows were added, removed, or changed, down to the exact cell. Match rows by a key column or by position. 100% client-side.
Compare two JSON documents structurally and see added, removed, and changed keys with exact paths
Compare two lists to find common items, items unique to each list, and duplicates within a list. Case-insensitive matching, any delimiter, instant set operations. 100% client-side.
Format, beautify, minify, and validate XML online - preserves comments, CDATA, and attribute order, with clear error reporting
0 comments
No comments yet. Be the first to share your thoughts!