Loading editor…
Output initialises when this pane is visible.
XML Studio
Format, explore, validate, and transform XML — tree view, XPath Studio, XSD checks, and XSLT, in one workspace.
100% in your browsernothing is uploadedLoading editor…
Output initialises when this pane is visible.
Step-by-step guides for every mode — scroll down or jump here from the Help menu.
Everything runs 100% in your browser — nothing is uploaded.
Browse your XML as a collapsible tree. Click any node to select it — its path appears in the breadcrumb above the tree.
Ctrl/⌘ + T
The formatted view appears on the right with consistent indentation. Toggle Minify to collapse whitespace between tags into a single line.
Ctrl/⌘ + S · minify: Ctrl/⌘ + Shift + M
Diff mode shows your input XML on side A (left) and a comparison document on side B (right). Monaco highlights added (green), removed (red), and changed lines so you can see what differs between two versions of a file.
Both sides are editable. Changes on A flow back to the main input; changes on B are saved in your session for the next time you open Diff.
These change how that side is shown in the diff. Your source text is kept separately; toggling options re-renders the view without losing the original unless you edit the pane itself.
| Button | Turn on when… | Turn off when… |
|---|---|---|
| Sort | Same elements, different sibling order (record lists, config items, repeated tags). | Order is meaningful (workflow steps, log lines, playlist tracks). |
| Ignore WS | One file minified, one pretty-printed; extra spaces/newlines inside text nodes. | Whitespace inside <title>, <description>, etc. must match
exactly. |
| Format | You want indented XML on that side for readability. | Use Minify for a single-line view instead. |
| Minify | Compact view; often pairs with Ignore WS when comparing exports. | Use Format when scanning nested structure visually. |
Typical with database exports or merged configs: identical <book> entries, shuffled.
Side A
<catalog>
<book id="bk101"><title>Guide</title></book>
<book id="bk102"><title>Rain</title></book>
</catalog>
Side B (reversed)
<catalog>
<book id="bk102"><title>Rain</title></book>
<book id="bk101"><title>Guide</title></book>
</catalog>
Side A (minified)
<root><item>OK</item></root>
Side B (formatted)
<root>
<item>OK</item>
</root>
<!-- A -->
<note>Hello world</note>
<!-- B -->
<note>Hello world</note>
B adds a book and changes a price. Sort only reorders siblings; new tags and changed values still highlight.
<!-- A -->
<catalog>
<book id="bk101"><price>44.95</price></book>
<book id="bk102"><price>5.95</price></book>
</catalog>
<!-- B -->
<catalog>
<book id="bk101"><price>39.99</price></book>
<book id="bk102"><price>5.95</price></book>
<book id="bk103"><price>12.00</price></book>
</catalog>
Expect highlights on 39.99 and the new bk103 block regardless of Sort.
Processing pipelines where step sequence is significant:
<pipeline>
<step>validate</step>
<step>transform</step>
<step>export</step>
</pipeline>
If B swaps transform and export, keep Sort OFF — you should see
that reordering as a difference.
Limitations: With Sort or Ignore WS enabled, XML is parsed in the
browser. Comments and <?xml …?> may not appear in the diff pane. For comment-sensitive
reviews, turn both Sort and Ignore WS off on that side; Format/Minify still work on raw
text.
Ctrl/⌘ + D — open Diff mode
Checks that your input is well-formed XML. Errors appear in the status bar, as red markers in the editor, and in the validate pane when that mode is open.
Ctrl/⌘ + E
Run XPath 1.0 expressions against your input. Matching nodes can be highlighted in the tree when you return to Tree mode.
/catalog/book/title) and run it.Ctrl/⌘ + Shift + X
Convert the current input to another format. Choose the target from the dropdown and click Convert.
Ctrl/⌘ + Shift + R
Edit an XSLT stylesheet and run it against your input XML using the browser’s
XSLTProcessor. Output type (XML, HTML, or text) is detected from the stylesheet.
Ctrl/⌘ + Shift + L
Search the input editor and tree from the top bar. Use the arrow buttons or Enter / Shift+Enter to step through matches.
Ctrl/⌘ + F
.xml file or drag it onto the editor.| Ctrl/⌘ + T | Tree mode |
| Ctrl/⌘ + S | Format mode |
| Ctrl/⌘ + Shift + M | Toggle minify |
| Ctrl/⌘ + D | Diff mode |
| Ctrl/⌘ + E | Validate mode |
| Ctrl/⌘ + Shift + X | XPath mode |
| Ctrl/⌘ + Shift + R | Transform mode |
| Ctrl/⌘ + Shift + L | XSLT mode |
| Ctrl/⌘ + F | Search |
Everything XML Editor Pro offers — processed locally in your browser.
Explore XML visually with expand/collapse, inline edits, and path breadcrumbs. Changes sync to the code editor instantly.
Pretty-print with 2-space indentation or minify to a single line. Output is editable; apply it back to the input or download as a file.
Compare two documents side by side with per-side Sort, Ignore WS, Format, and Minify. Ideal for configs, feeds, and exports that differ only in element order or whitespace.
Well-formedness checks with line-accurate errors, optional auto-fix, and XML Schema validation when you load an XSD.
Query your document and inspect matches. Highlights can carry over to the tree view.
Export to JSON, YAML, CSV, Markdown, or HTML; or run XSLT 1.0 stylesheets in a live playground with copyable output.
All parsing, diffing, XPath, transforms, and XSLT run in your browser. Nothing is uploaded. After the first load, no network is required except “Load from URL”.
Open .xml files, drag-and-drop, fetch via URL, or paste from the clipboard. Your last session
is restored from localStorage on return.
Common questions about XML Editor Pro.
Yes. Parsing, formatting, diffing, validation, XPath, transforms, and XSLT all run inside your browser.
Data is not sent to a server. The only local storage is your session in localStorage, which
you can clear in browser settings.
After the first visit (when Monaco and assets are cached), you can edit, format, diff, and transform without a network connection. “Load from URL” still needs network access and a CORS-friendly server.
Yes. Open Diff mode (Ctrl/⌘+D), paste the second file on side B, and keep Sort enabled on both sides. Sibling elements are reordered using a stable canonical ordering so equivalent documents align. Turn Sort off when sequence matters (e.g. ordered event lists).
Quick try: load the sample catalog, open Diff, paste the same XML on B but swap the two
<book> blocks. With Sort on, the diff should be empty; with Sort off, you will see the
blocks highlighted as changed lines.
Those options rebuild the view from your source text: Sort reorders elements; Ignore WS normalises whitespace in text nodes and tells the diff engine to ignore leading/trailing spaces on each line. Your stored source is kept separately so toggling options updates the display without losing the original unless you edit the diff pane itself.
When Sort or Ignore WS is on, the file is parsed with
DOMParser and comments are not preserved in the diff view. For comment-sensitive compares,
turn both off on that side — Format/Minify still work on the raw text.
XPath 1.0 (browser document.evaluate). Unprefixed names match local element names; the
sample catalog avoids a default namespace so paths like /catalog/book/title work as
expected.
JSON, YAML, CSV, Markdown, and HTML table. Pick a target in Transform mode and click Convert. Conversion uses the browser DOM — very large documents may take a moment.