Skip to content
CertoflowCertoflow
Developer Tools

XML Formatter — Beautify XML Online

Beautify XML markup.

Last updated: August 2026

Quick reference

What this calculator does
Beautify and indent XML documents for readability — click Format XML to add consistent two-space indentation.
How it works
Paste minified or messy XML, click Format XML, and receive indented markup with normalized tag boundaries.
Example
<root><item>Hello</item></root> becomes nested lines with increasing indent per depth level.
When to use it
Reading API responses, debugging SOAP payloads, preparing XML for code review, or cleaning single-line exports.

Guide

Introduction

XML still powers enterprise integrations, Android resources, RSS feeds, and legacy SOAP APIs. Log aggregators dump single-line XML responses impossible to read; pretty-printing reveals mismatched closing tags and namespace issues faster than squinting. Command-line xmllint --format requires installation; browser paste suits quick inspection during incident response.

Certoflow's XML Formatter normalizes whitespace between tags, splits on tag boundaries, and indents with two spaces per nesting level. Click Format XML to process — not live on every keystroke. Local only. Not a validator — malformed XML may format oddly. Pair with HTML Formatter for markup cousins, Strip HTML Tags when extracting text after structure review, and JSON Formatter when APIs offer JSON alternative.

What this tool does

FeatureBehavior
InputRaw XML string (default sample included)
Format buttonTriggers indentation pass
Indent2 spaces per depth level
OutputFormatted XML in read-only textarea
CopyCopy formatted result

Self-closing tags and closing tags decrease indent before printing; opening tags increase indent after printing when pattern matches ^<\w[^>]*[^/]>$.

How it works

xml.replace(/>\s*</g, "><").split(/(?=<)/).forEach((node) => {
  if (node.match(/^<\/\w/)) pad = Math.max(0, pad - 1);
  formatted += "  ".repeat(pad) + node.trim() + "\n";
  if (node.match(/^<\w[^>]*[^/]>$/)) pad += 1;
});

Whitespace between tags collapses before split. Regex-based — not a DOM parser — unusual namespaces, processing instructions, or comments may indent imperfectly.

Real-world examples

SOAP fault debugging

Paste SOAP envelope from proxy logs, format, locate faultstring nested under Body without horizontal scrolling.

Android strings.xml review

Format resource XML before PR review — spot duplicate name attributes visually.

SAML metadata inspection

IdP metadata blobs are large single lines — format for certificate X509Certificate block location.

RSS feed validation prep

Format feed XML before schema validation external tools — combine with Line Number Generator for error references.

Contrasting with JSON APIs

When endpoint offers XML legacy mode, format here; compare structure complexity with JSON Formatter pretty output for migration business cases.

Common mistakes

Expecting schema validation. Formatter does not check XSD or well-formedness — invalid XML may still "format."

CDATA and comments edge cases. Regex indent may not match dedicated XML parsers — verify critical docs with xmllint.

Formatting then assuming semantic change. Whitespace between tags is normalized — text node spacing inside elements may alter display significance in rare cases.

Huge documents in browser. Multi-megabyte XML may hang tab — use CLI for bulk.

Self-closing tag detection limits. Tags with attributes and /> handled differently than ></tag> empty pairs.

Encoding declarations. Tool does not convert encodings — UTF-8 input assumed.

Use cases

Integration developers reading SOAP and XML-RPC responses.

Mobile developers reviewing Android XML resources.

DevOps engineers inspecting config dumps.

QA testers preparing readable attachments for bug reports.

Technical writers formatting XML examples in docs.

Students learning XML nesting structure visually.

FAQ

Live formatting?

No. Click Format XML button.

Validates XML?

No. Indentation only.

Default sample?

<root><item>Hello</item></root>.

Indent size?

2 spaces per level.

HTML input?

May work similarly — HTML Formatter tailored for HTML.

Malformed XML?

Output may be misleading — use validator separately.

Copy formatted output?

Yes, via Copy button.

Offline?

Yes.

Namespaces?

Best-effort indent — complex NS may need dedicated tools.

Related?

Strip HTML Tags, JSON Formatter.

When to format versus validate

Formatting improves human readability; validation proves well-formedness against XML 1.0 rules. Certoflow indentation does not report mismatched tags — you might receive indented output that still fails xmllint --noout. Use formatted output as a first pass when logs arrive minified, then escalate to schema validators (XSD, RELAX NG) for contract testing. Namespaces (xmlns) affect real parsers but may indent oddly here because regex splitting treats namespace colons as part of tag names without QName semantics. Processing instructions <?xml version="1.0"?> typically remain on their own indented lines. For HTML-specific void elements (<br>, <img>), HTML Formatter may produce more predictable results. After formatting large responses during API debugging, cite line ranges in tickets using Line Number Generator on the formatted output so reviewers open files already structured for quick navigation to failing XPath locations discussed in integration standups.

Performance and size guidance

Browser-based formatting loads entire XML strings into memory and runs regex passes — acceptable for kilobyte-scale API responses, slow for multi-megabyte exports. For huge files, stream through xmllint or IDE formatters. Pretty-printed XML is larger on disk than minified transport encoding — re-minify before production wire transfer if bandwidth matters. Attribute order is preserved as in source because the formatter does not reorder attributes alphabetically — diff-friendly for reviews comparing before and after manual edits to the same semantic document.

Frequently Asked Questions

Is data uploaded?
No. All processing runs locally in your browser.
Does this work offline?
Yes, after the page loads.

Related tools that complement this workflow.