XML Reader
What is the XML Reader?
You get handed a vendor feed. It is 8,000 lines of XML with no documentation, and the sync job goes live in an hour. XML Reader takes raw XML and lays the content out as tables, with entities decoded and CDATA shown as plain text, so you can read what the data says without mentally parsing every angle bracket.
This page uses the same table engine as the XML Viewer and XML Parser; it is written for the "I need to read the values" job rather than for exploring structure. It handles whatever the browser's native DOMParser accepts under the W3C XML spec: namespaces, entities and CDATA. Comments and processing instructions are skipped.
Parsing and rendering happen in your browser, so the XML you paste is not uploaded. The exception is Share, which stores the XML on our server so the link works. Keep that in mind before sharing payloads with personal or regulated data.
How to Read XML with This Tool
Four steps. Each one lines up with a real button on the page.
Paste the XML you need to read
Drop XML into the left pane — an invoice from your ERP, a response from a partner API, a fragment from a .docx file (OOXML), a strings.xml from an Android project, or really any XML you've been handed and need to understand. Click Sample for a concrete example. The sample below is a customer invoice with two line items and notes — typical of what you'd get from an EDI or accounting export:
<invoice invoiceNumber="INV-2041" issuedOn="2026-03-12"><billTo><name>Northwind Traders</name><email>[email protected]</email></billTo><items><item><description>Annual support subscription</description><quantity>1</quantity><unitPrice>4800.00</unitPrice></item><item><description>Onboarding workshop (SKU-WS-101)</description><quantity>2</quantity><unitPrice>950.00</unitPrice></item></items><notes>Net 30. PO reference PO-7788 applies.</notes><total currency="USD">6700.00</total></invoice>If the XML is not well-formed, the right panel shows the parser's error instead of a table. A missing closing tag or a bare & are the usual culprits.
Read it as a table, not a text blob
The right panel lays the document out as tables. If the root element only wraps one repeated element, like <subscribers> around several <subscriber> entries, each entry becomes a row and its children become columns. Any other document is shown as a single row, so fields that sit next to a repeated element are never dropped; the repeated element shows up as a table inside its cell. Attributes are grouped in an @attributes cell, and text that sits next to attributes appears under #text. For the invoice above that means one row with @attributes (invoiceNumber, issuedOn), billTo, items, notes and total, where items holds a two-row table you can read in a few seconds. Main and Nested flip the orientation if the data reads better vertically.
Filter when the file is long
Real files have two hundred line items, not two. Each column has a filter box: type Net 30 to find those payment terms, or USD to narrow to dollar amounts. Filters ignore case and stack across columns, and they match text, not numeric ranges.
Keep reading in full-screen, share, or export
Maximize gives you a full-screen reading view, handy on a small laptop screen. Excel downloads the table as an .xls file. Share uploads the XML and creates a link (1 month up to 2 years, your choice) so a colleague sees the same view without the raw XML going into an email.
Who Actually Needs to Read XML?
Reading partner EDI and vendor feeds
B2B integrations still ship XML. Your retail partner sends you a daily inventory feed in some dialect of GS1 EDI, and you need to actually read the stock quantities to check if yesterday's sync dropped SKUs. Paste the feed, read the table, done. No grep hackery, no XSLT. Same story for insurance ACORD, healthcare HL7 v2/v3, banking ISO 20022 messages.
Reading OOXML and Office document internals
A .docx or .xlsx is really a zip full of XML. When a document renders wrong in Word, you unzip it, find document.xml or sheet1.xml, and need to read through the markup to see which run has the bad formatting. The reader makes that readable — especially useful because OOXML XML is verbose as hell (look up ECMA-376 if you haven't before).
Reading build logs, JUnit, and TestNG reports
CI systems emit XML test reports. When your CI goes red and the log is 2MB of <testcase> elements with nested <failure> messages, you need to read the actual error text, not eyeball raw XML. Paste the JUnit XML, filter the failure column, read the stack traces. Works for Checkstyle XML, SpotBugs reports, anything your CI pipeline generates.
Reading SAML, XML signatures, and security tokens
When SSO breaks, it's usually because a SAML assertion has the wrong AudienceRestriction or the NotOnOrAfter has ticked past. Reading a SAML response straight from the wire is miserable — base64, XML, nested <ds:Signature>. Decode the base64 elsewhere, paste the XML here, and you can read the claims, the conditions, and the signature algorithm in seconds.
FAQ
What sets this apart from the XML Viewer?
Under the hood it is the same tool with the same table. This page is written around reading values; the viewer page is written around exploring structure. Use whichever you landed on.
Does it handle character entities and CDATA?
Yes. &, < and numeric references like é are decoded by the parser, so you read "Johnson & Johnson". CDATA sections, often used to embed HTML or code, are shown as plain text. See the CDATA section rules in the XML spec.
Will it choke on SOAP envelopes or namespaced XML?
No. <soap:Envelope>, <soap:Body> and other namespaced elements keep their prefix in the column names, so you can still tell which payload came from which namespace.
Is there a size limit?
Yes, 5 MB. Bigger files are refused so the tab stays responsive. For huge feeds, pull out the slice you need with xmllint, XMLStarlet or Python's iterparse, then paste that here.
Is my XML sent anywhere?
Not while you read, filter or edit; that all happens in your browser tab. Clicking Share uploads the XML so the link can display it, and you choose how long it lives (1 month up to 2 years).
Can I blank out sensitive values before sharing?
Not with the table editor. Table edits change the table and the Excel download only. They are not written back to the XML in the editor, and Share sends the XML from the editor, not your edited table. To redact before sharing, change the values in the XML editor on the left.
Related XML Tools
The reader is for reading. When you need to modify, verify, or convert what you just read, reach for one of these: