Saxonica: Saxon-JS product information


On this page:

See also:

Saxon-JS is a high-performance XSLT 3.0 processor that runs either in the browser, or on Node.js. It conforms with the latest W3C specifications (notably XSLT 3.0 and XPath 3.1), together with extensions designed to meet the needs of modern web applications. The latest version, Saxon-JS 2, is a major upgrade: some of the new features are listed below.

Saxon-JS works with JSON as well as XML, and is ideally suited for applications that need to handle both.

And by offering both client-side and server-side capability, Saxon-JS allows you to reuse code between the two environments and deploy it in a flexible way for maximum performance.


Download the latest Saxon-JS releases from the JavaScript platform download page.

Latest XML technologies

If you've used XSLT 1.0 and XPath 1.0 in the past, you'll find that the latest versions of the standards open up a new world. They now offer much richer data manipulation (grouping, regular expressions, date-and-time handling, URI manipulation), modern programming constructs such as higher order functions, and support for data formats other than XML, most notably JSON, plain text files, and HTML5. Saxon-JS further extends this capability with support for asynchronous HTTP requests and handling of user interaction.

Invocation and serialization

Saxon-JS can be invoked either from the Node.js command line, or from JavaScript code running either client-side or server-side. As well as allowing XSLT transformations to be scheduled, the API allows direct invocation of XPath expressions against DOM Nodes, allowing it to be used as a replacement for the aging XPath 1.0 engine bundled with the JavaScript DOM. It also provides a standalone serializer allowing the results of queries (whether coded in XPath or JavaScript) to be output as XML, HTML5, or JSON.

Return to top of page

What's new in Saxon-JS 2?

Saxon-JS 2 is a major upgrade.

The most noticeable differences are:

There are many other enhancements. Some of the most important are:

Although Saxon-JS now has its own XSLT compiler and XPath parser, it is still possible to use it with code generated by the optimizing compiler in the Saxon-EE product.

Return to top of page


Saxon-JS 2.3 released 20 August 2021, bug fixing maintenance release for web browsers and Node.js.

Saxon-JS 2.2 released 11 May 2021, bug fixing maintenance release for web browsers and Node.js.

Saxon-JS 2.1 released 2 March 2021, bug fixing maintenance release for web browsers and Node.js.

Saxon-JS 2.0 released 12 June 2020, for web browsers and Node.js.

For Saxon-JS 2, there are two XSLT-to-SEF (stylesheet export file) compilers available: the XJ compiler in Saxon-EE 10, and the XX compiler integrated into Saxon-JS 2 for Node.js. XJ-compiled SEFs for Saxon-JS 2 must be produced using Saxon-EE 10, SEFs produced by earlier versions of Saxon-EE will not work with Saxon-JS 2.

For information on earlier releases, go to Saxon-JS 1 releases.

Release Notes

For detailed information on all Saxon-JS releases, see the Release Notes.

Return to top of page


Full documentation is available for Saxon-JS 2, containing information about the capabilities of the product, the different product components for Node.js and browsers, instructions for installing the product and writing applications, details of the API and how to run from the Node command line, and sample applications:

Return to top of page


Saxon-JS is free of charge but not open source. Details of the license can be found in the Licensing section of the documentation.

For enterprise users who want additional support, Saxonica will be providing a subscription service for an annual fee. As well as traditional support, this will provide access to source code, add-on development and debugging tools, and (in due course) additional product functionality. Details of this service are provided in the Saxon-JS Enterprise Services Product Definition and Licensing Terms (PDF). Please contact us by email to if you would like more information.

Return to top of page


Saxon-JS for the browser is issued in the form of compressed JavaScript code that is mounted on your web server to be fetched and executed from HTML pages running in a web browser. The software is issued as a zip file that you will first need to unzip into your chosen location (the relevant section of your web server filestore). See the Installing and running client-side page of the documentation for more details.

Run npm install saxon-js to install Saxon-JS for Node.js, and npm install xslt3 to install the command line interface. For further details see Installing and running in Node.js in the documentation.

Return to top of page


Please use the help forums and bug trackers in the Saxon-JS project at the Saxonica community site if you need help or advice.

For more specialized advice, Saxonica may be able to offer consultancy.

Return to top of page

Saxon-EE Compatibility

The following table gives an overview of the compatibility between Saxon-JS releases and the Saxon-EE version used to generate SEFs.

In particular, note that from Saxon 10, SEFs generated for use with Saxon-JS are in JSON format, and require Saxon-JS 2. Saxon 9.9 and earlier produce SEFs in XML format, which will not work with Saxon-JS 2.

Saxon-EE Saxon-JS
1.0.0 1.0.1 1.0.2 1.1.0 1.2.0 2.0+








= all features of the Saxon-JS release are available for SEFs generated by this version of Saxon-EE.

* = Saxon-JS can run SEFs generated by this Saxon-EE version, but not all of its features will be available.

Otherwise, there is no guarantee that SEFs will work correctly with the Saxon-JS release.

Return to top of page

20 August 2021