Skip to content
XSLT Checker
XSLT Checker / XSLT tester

XSLT tester

Edit the stylesheet, run it, read the output. Parse errors come with a line and a column so you can fix the right character.

Last updated: · What changed: Added an accuracy table, coverage statement and Chrome 158 sourcing, and a new operator section on the About page.

    A quick loop for stylesheet work

    Start with the RSS sample or paste your own pair. Change a select expression, press Convert to HTML, and the preview updates. The HTML source tab shows exactly what the stylesheet wrote, which is where a missing namespace or a wrong path usually shows up as an empty section.

    What it can and cannot test

    • XSLT 1.0 and the EXSLT functions that libxslt provides.
    • Output as HTML, plain text or XML. Text and XML results are shown as text in the preview.
    • Not XSLT 2.0 or 3.0 functions such as format-date(), and not xsl:message output.

    If the stylesheet runs here but your site still shows raw XML after Nov 17, 2026, the browser is no longer running it for you. Use the converter output as a static page, or see how to migrate.

    Questions

    How do I test an XSLT stylesheet online?

    Paste the XML and the stylesheet into the two boxes and press Convert to HTML. The result appears in a preview and as source. Errors are listed above the result with their line and column.

    Why is my output empty?

    Usually no template matches the root of your XML. Check the namespace: a sitemap needs the sitemaps.org namespace declared in the stylesheet and used in every path, such as sm:urlset/sm:url.

    Does it support XSLT 2.0 or 3.0?

    No. The engine is libxslt, which implements XSLT 1.0 and the EXSLT extensions. A stylesheet with version="2.0" or "3.0" that uses newer functions needs a different engine such as Saxon-JS, or a rewrite.

    Which XSLT engine does the converter use?

    The converter loads the open-source XSLT polyfill from this site: libxslt compiled to WebAssembly, BSD-3-Clause licensed. It does not call the browser's own XSLT, so it works the same after browsers remove it.

    Is this the same as the XSLT in my browser?

    It uses the same kind of engine, libxslt, but through WebAssembly and not the browser's built-in copy. Results match for standard XSLT 1.0; very rare differences are possible with browser-specific extensions.