About BeautifyXML

BeautifyXML is a careful XML formatting, inspection and comparison workspace. Its promise is readable XML with explicit preservation rules: element-only structure is indented, while text, mixed content and xml:space="preserve" regions are copied exactly and marked. Every formatted result is re-parsed and compared with the source before you can apply it.

Profile and limits

  • Parser: bxml-cst 1.0.0, written for this site. XML 1.0 + Namespaces 1.0. XML 1.1 documents are parsed with 1.0 rules and flagged.
  • No external DTD or entity is ever fetched; internal entities are recorded but not expanded; the five predefined entities and character references are decoded only for comparison.
  • Positions: lines and columns start at 1; columns count UTF-16 code units in the decoded text (BOM removed).
  • Limits: 12 MB editing input, nesting depth 1,000, 500,000 nodes, 40,000 tree-view nodes, syntax colouring up to 300,000 characters. Hitting a limit gives a partial status, never a silent truncation.
  • XPath: XPath 1.0 only, via the browser engine on the page thread. XSD/DTD validation: not available (shown as unknown).
  • Storage: drafts and recipes in this browser’s IndexedDB. That is not a backup — export what you need to keep.

Feature status

Statuses map to the product requirement IDs. LOCAL means deterministic code running in your browser; NATIVE means a browser built-in; UNSUPPORTED means not available yet or excluded. See also the privacy note.

IDCapabilityStatusLabelNotes
BXML-001Open/paste XML (R1)DoneLOCALPaste, file picker, drag-and-drop. BOM and declaration sniffed; conflicts require a decision; original bytes kept for download.
BXML-002Well-formedness parser (R1)DoneLOCALOwn error-recovering XML 1.0 + Namespaces parser with exact spans (line/column in UTF-16 code units). Invalid source stays editable.
BXML-003Source/tree/split view (R1)DoneLOCALSource editor + tree (elements, attributes, text, CDATA, comments, PIs, DOCTYPE) with keyboard navigation and search.
BXML-004Namespace inspector (R1)DoneLOCALBindings, uses, rebinding, unused, prefix vs expanded names, same-local-name collisions; unbound prefixes diagnosed.
BXML-005Safe indentation (R1)DoneLOCALOnly element-only regions with line-break whitespace are re-indented; output re-parsed and compared before it is offered.
BXML-006xml:space handling (R1)DoneLOCALInherited preserve/default computed per element; preserve subtrees copied verbatim (nested default regions are conservatively left as written).
BXML-007Attribute layout choices (R1)DoneLOCALKeep / one line / wrap / aligned / one per line; quote normalisation with escaping; explicit sort by expanded name.
BXML-008Empty-element style (R1)DoneLOCALKeep, <a/> or <a></a>; count reported.
BXML-009Comment/PI retention (R1)DoneLOCALPosition and order retained; invariant check includes comments and PIs.
BXML-010CDATA controls (R1)PartialLOCALCDATA boundaries always retained by the formatter; diff can treat CDATA as text. No CDATA↔text normalisation command yet.
BXML-011Entity safety (R1)DoneLOCALNo external DTD/entity fetch anywhere; internal entities never expanded; recursion and expansion bombs reported as bounded errors. XPath strips the DOCTYPE before DOMParser.
BXML-012Format preview/diff (R1)DoneLOCALPreview, line diff and content check before Apply; Apply disabled until the result matches the current revision.
BXML-013Minify with preservation (R1)DoneLOCALRemoves only formatting whitespace in element-only regions; comment removal is opt-in and reported.
BXML-014Unicode/encoding export (R1)DoneLOCALUTF-8 (±BOM), UTF-16LE/BE, ISO-8859-1, US-ASCII. Unrepresentable characters block or convert to verified character references; declaration must match.
BXML-015Structural/source compare (R1)DoneLOCALSeparate lexical (Myers line diff) and structural (parsed node stream) results with a visible equality policy.
BXML-016Signature warning (R1)DoneLOCALds:Signature detected by expanded name; warning in preview, findings, export and batch. No validity claims.
BXML-017Download/copy original or output (R1)DoneLOCALExport review: output, current source, extracted element or original bytes, with findings and revision shown.
BXML-018Undo/recovery (R1)DoneLOCALTransaction undo/redo (30 steps); IndexedDB draft autosave on the home workspace with restore banner; private mode.
BXML-019Safe selection formatting (R2)Not doneUNSUPPORTEDRoadmap. Whole-document formatting only; subtree extraction is available.
BXML-020Batch/ZIP (R2)DoneLOCALFiles or ZIP (stored/deflate); path, count and expanded-size validation; per-file results; ZIP output.
BXML-021Local XPath profile (R2)DoneNATIVEBrowser XPath 1.0 via document.evaluate on the main thread with limits; 2.0+ syntax flagged unsupported; typed results; zero matches distinct from failure.
BXML-022Local XSD validation (R2)Not doneUNSUPPORTEDNo qualified engine. Status is shown as “unknown — not checked”, never valid.
BXML-023XML↔JSON mapping (R2)DoneLOCALOrdered (round-trip) and compact profiles; compact always lossy with an itemised loss report; JSON→XML rules.
BXML-024SOAP/request inspection (R2)PartialLOCALSOAP 1.1/1.2 envelope summary (header blocks, payload, fault) in Findings; no separate envelope source views. Nothing is ever sent.
BXML-025Namespace rename (R2)Not doneUNSUPPORTEDRoadmap.
BXML-026Extract elements/attributes/text (R2)PartialLOCALElement extraction with ancestor namespace context (and inherited xml:space), or blocked when unresolved. Attribute/text extraction via XPath export.
BXML-027XML escape/unescape (R2)DoneLOCALText, attribute (both quotes) and CDATA contexts; single-pass unescape into a text box only.
BXML-028Rule-based lint (R2)PartialLOCALSix style rules shown separately from syntax and schema status; rules are not configurable yet.
BXML-029Presets/recipes (R2)DoneLOCALVersioned JSON recipes (beautifyxml.recipe/1), strict validation, IndexedDB storage, import/export.
BXML-030Qualified canonicalization (R3)Not doneUNSUPPORTEDNot offered. Formatting is not canonicalization.
BXML-031Large-file source mode (R3)PartialLOCALBounded: 12 MB editing limit, depth 1000, 500k nodes, 40k tree nodes, highlighting off above 300k chars; partial status shown, never silent truncation.
BXML-032Arbitrary XSLT/remote resolution (X)Not doneUNSUPPORTEDExcluded by design.
BXML-101Protected-region explanation (R2)DoneLOCALHatched marks in the preview with reasons, “next region” navigation, list in Findings.
BXML-102Attribute alignment presets (R2)DoneLOCALAligned/wrapped/one-line layouts; duplicate expanded names rejected by the parser and the invariant check.
BXML-103XML declaration editor (R2)PartialLOCALEncoding pseudo-attribute is synchronised on export when chosen; no general version/standalone editor.
BXML-104Entity notation inspector (R2)DoneLOCALReferences listed as written vs resolved character content with status (predefined, char, internal-unexpanded, external-blocked, undeclared).
BXML-105Namespace dependency report (R2)PartialLOCALShown for element extraction (added bindings, heuristic QName values); no move operation.
BXML-106XPath result export (R2)DoneNATIVEJSON/CSV export with declared result type, expression and namespace map.
BXML-107Schema error source mapping (R2)Not doneUNSUPPORTEDDepends on BXML-022.
BXML-108Safe pretty-print recipes (R2)DoneLOCALRecipes pin formatter version, options and policy; data only.
BXML-109Document statistics (R2)DoneLOCALCounts with complete/partial status.
BXML-110Format version comparison (R3)Not doneUNSUPPORTEDSingle formatter version so far.
BXML-111Comment removal transformation (R3)PartialLOCALAvailable in the minifier as an explicit, reported option; Undo restores.
BXML-112PI handling controls (R3)PartialLOCALPIs preserved as inert data; no removal/reorder controls.
BXML-113Secure SVG source mode (R3)PartialLOCALSVG is edited as source/tree only and never rendered; no isolated preview.
BXML-114Canonicalization conformance report (R3)Not doneUNSUPPORTED—
BXML-115XML test fixture bundle (R3)Not doneUNSUPPORTEDThe PRD acceptance fixtures exist as unit tests in the source repository.

Sample documents

All sample XML and JSON on this site is synthetic and self-authored (version 1, October 2026). It contains no real customer, account or signature data; the signature sample’s values are placeholders.