Validate XML up to 1 GB against XSD, DTD, RelaxNG and Schematron
A streaming validator built for engineers. Your file is checked right in the browser without being uploaded, and every error comes with its exact line and column. E-invoices also get their business rules: EN 16931, Peppol, XRechnung and the national rules of France, Italy, Croatia, Romania and more.
- max file size
- 1 GB
- schema languages
- 4
- official schemas
- 177
- uploaded
- 0 bytes
- per GB
- ~10 s
Built for production-scale XML
Three things matter when validating real-world XML: file size, privacy and the quality of the error messages. We don't compromise on any of them.
Streaming, up to 1 GB
Documents are read in chunks and validated as the stream advances, so memory stays flat: about 20 MB whether the file is 1 KB or 1 GB.
Private by design
The validator runs inside your browser as WebAssembly. Files you open or paste are never uploaded. Useful when the XML holds payments, invoices or patient data.
Precise diagnostics
Every problem comes with its exact line and column, a severity level and the parser's explanation. All errors are counted, not just the first one.
Pick the schema you actually use
Most real projects mix at least two of these. XSD, DTD and RelaxNG run on libxml2, so results match what your backend sees; Schematron runs on Saxon, like the official e-invoice validators.
XML Schema
W3C XML Schema 1.0 with complex types, identity constraints and multi-file schemas resolved through imports and includes.
- Spec
- W3C XSD 1.0
- Files
- .xsd
- Imports
- xs:import, xs:include
Document Type Definition
Validate against an external DTD file or the DOCTYPE declared in the document. Still the norm for publishing and legacy formats.
- Spec
- XML 1.0 §2.8
- Files
- .dtd
- Source
- external or DOCTYPE
RelaxNG
Pattern-based schemas in the XML or the compact syntax, with XML Schema datatypes. Well suited to document-centric and mixed-content XML.
- Spec
- ISO/IEC 19757-2
- Files
- .rng, .rnc
- Datatypes
- XSD datatypes
Schematron
The business rules of EN 16931, Peppol, XRechnung and national e-invoicing formats, or your own .sch file, run after the schema check on documents up to 50 MB: totals that add up, code lists, mandatory fields. Each finding names its rule, such as BR-CO-15.
- Spec
- ISO/IEC 19757-3
- Rules
- catalog or your own
- Engine
- SaxonJS
Check invoices the way your country's platform will
The official schemas and business rules of each mandate, with every finding on its line and a page that explains the rule. The invoice never leaves your browser.
More XML tools, in your browser too
Format, query, transform and convert XML, write a schema from samples or read an e-invoice, without uploading anything. The generators check what they write with the validator's own engine.
XML formatter
Pretty-print or minify XML, keeping text, CDATA and comments as written.
XPath tester
Evaluate XPath 3.1 against a document and see each match with its line.
XSD generator
Infer an XML Schema from sample documents, checked against them.
XSLT transformer
Run XSLT 1.0, 2.0 or 3.0 on a document and see the result, the messages and the files it writes.
XML to JSON
Convert XML to JSON, with arrays where an element repeats or wherever its XSD allows.
E-invoice viewer
Read an XRechnung, ZUGFeRD, Factur-X or Peppol invoice as a document, and print it.
From file to diagnostics in three steps
-
01
Open your documents
Drop a file, paste XML or fetch it by URL, or open a folder or .zip of up to 1,000 documents. Files up to 50 MB without an account, up to 1 GB with a free one.
-
02
Pick a schema
Upload an XSD, DTD or RelaxNG schema with its includes, choose one of 177 official schemas from the catalog (e-invoice profiles add their Schematron business rules), or skip it to check that the document is well-formed.
-
03
Read the diagnostics
Progress updates as the file streams through. Click an error to jump to its line; the common ones link to an explanation of how to fix them.
Keep XML valid after it leaves your desk
The same engine also runs on our servers, for scripts, pipelines and documents that change on their own. Those validations run on our machines, so they count towards your plan.
The same checks in your pipeline
A REST API with an OpenAPI description and SDKs for PHP, Python and TypeScript, a command-line client and a GitHub Action that marks failing lines in pull requests. 100 API validations a month on Free, 10,000 to 100,000 on Pro.
CI and the command line →URL monitors
Validate a published feed, sitemap or partner export every hour or every day, and get an email and a webhook when it stops passing, and again when it recovers.
See Pro →Errors, explained
What 90 common validation messages mean (from a tag mismatch to “This element is not expected”), in libxml2's wording and as Java and .NET report them, why they happen and how to fix them, each with an example.
XML error messages →Plug it into the tools you already use
Workflows, scrapers, API clients, SDKs, AI assistants and CI all reach the same engine, with the same results as the validator.
n8n
Check invoices from email or files in no-code workflows
Apify
A list of URLs in, one row per document out
Postman
Every API request, with real responses
AI agents
Claude, Cursor and VS Code through MCP
GitHub Actions
Failing lines marked in pull requests
Command line
GitLab CI, pre-commit hooks and scripts
PHP, Laravel, Symfony
A validation rule, a constraint or a few lines
Python
A sync and an async client, fully typed
JavaScript, TypeScript
No dependencies: Node, Bun, Deno, Workers
Validate your first document
No account required. Your XML stays in your browser.