pugixml

Light-weight, simple and fast XML parser for C++ with XPath support

Repository: Downloads: Documentation: Support:

News


16 June 2026 pugixml 1.16 release

pugixml-1.16 is out. This is an anniversary release: pugixml turns 20 this year!

In early 2006, I was evaluating existing XML parsers to parse large COLLADA files quickly and nothing fit the bill; existing DOM parsers were very slow and often cumbersome to use, existing SAX parsers required a tricky parsing flow for documents with many internal references with unspecified order. The most promising existing parser was pugxml (no i), which had a nice API and an interesting parsing approach - but still left a lot of performance on the table so I thought I could quickly patch it up and call it a day. The project was named pugixml (where i stands for improved) in late May 2006.

The first version was assigned a number 0.1 in July, and was used in a few internal projects. It was tiny: 1800 lines of code (plus 700 line header), no tree modification, no Unicode support, no XPath, no compact mode, slower parser. But it was quite useful and so the first version 0.2 was released to the public in November. Originally pugixml was developed in Subversion, until eventually migrating to Git on github.com. Over the following years it quickly gained important features that were missing in the original release; code got faster through continuous tuning; some APIs were adjusted or removed. The library started gaining wider adoption.

In 2010, v1.0 came out. This represented a major stability point: it was the last release to remove or break any APIs, and since then pugixml has remained API-stable and also maintained binary compatibility. Since then, other important improvements have been introduced; for example, in 2015 a major new compilation mode, PUGIXML_COMPACT, allowed to significantly reduce the DOM memory consumption at a small performance cost with no change in API/ABI.

Development continues to this day, 20 years later; in some sense, pugixml is “complete” - the library has worked great for the last decade and all critical functionality is there. But it still requires continued maintenance, as new compilers and language features introduce new problems, some latent bugs are occasionally found, and occasional new minor features are being added. What started as a quick excursion turned into a life-long project - here’s to the next decade!

Highlights for this release (read the changelog for details) include:

You can download the source package or get the new version from GitHub using the latest tag (https://github.com/zeux/pugixml).


10 January 2025 pugixml 1.15 release

pugixml-1.15 is out. This is a maintenance release that adds support for std::string_view along with compatibility improvements (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from GitHub using the latest tag (https://github.com/zeux/pugixml).


01 October 2023 pugixml 1.14 release

pugixml-1.14 is out. This is a maintenance release that adds several minor features (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from GitHub using the latest tag (https://github.com/zeux/pugixml).


02 November 2022 pugixml 1.13 release

pugixml-1.13 is out. This is a maintenance release that fixes several issues (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from GitHub using the latest tag (https://github.com/zeux/pugixml).


09 February 2022 pugixml 1.12 release

pugixml-1.12 is out. This is a maintenance release that fixes some compatibility issues and other minor bugs (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from GitHub using the latest tag (https://github.com/zeux/pugixml).


26 November 2020 pugixml 1.11 release

pugixml-1.11 is out. This is a maintenance release that fixes some compatibility issues and introduces several new APIs (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from GitHub using the latest tag (https://github.com/zeux/pugixml).


15 September 2019 pugixml 1.10 release

pugixml-1.10 is out. This is a maintenance release that fixes some compatibility issues and introduces several formatting features (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from GitHub using the latest tag (https://github.com/zeux/pugixml).


04 April 2018 pugixml 1.9 release

pugixml-1.9 is out. This is a maintenance release that fixes some compatibility issues and introduces several features (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from GitHub using the latest tag (http://github.com/zeux/pugixml).


24 November 2016 pugixml 1.8 release

pugixml-1.8 is out. This is a maintenance release that fixes some compatibility issues and introduces several features (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from GitHub using the latest tag (http://github.com/zeux/pugixml).


19 October 2015 pugixml 1.7 release

pugixml-1.7 is out. This is a major release that focuses on performance and memory improvements along with several bug fixes (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from GitHub using the latest tag (http://github.com/zeux/pugixml).


10 April 2015 pugixml 1.6 release

pugixml-1.6 is out. This is a maintenance release that fixes several bugs (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from GitHub using the latest tag (http://github.com/zeux/pugixml).


27 November 2014 pugixml 1.5 release

pugixml-1.5 is out. This is a major release focused on performance improvements that also has some new features and compatibility improvements (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from GitHub using the latest tag (http://github.com/zeux/pugixml).


26 October 2014 pugixml moves to GitHub

pugixml project used to be hosted on Google Code since time immemorial. About a year ago the active development switched to Git but the Subversion repository on Google Code was still maintained via svn-git and the primary way to report issues was via Issue Tracker on Google Code.

Since Google disabled the downloads feature on Google Code, pugixml releases are hosted on github anyway; also git-svn makes some git workflows more complicated. As of this day, pugixml moves to GitHub and Google Code project is no longer maintained.

You can use GitHub’s issue tracker, submit pull requests, use pugixml as Git submodules, etc.

Note that you can still use Subversion to access pugixml repository on github as follows:

svn checkout https://github.com/zeux/pugixml/tags/latest

Please let me know if you find any issues with GitHub’s Subversion access.


28 February 2014 pugixml 1.4 release

pugixml-1.4 is finally out. This is a major release with several new features and compatibility improvements (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from Subversion using the latest tag (http://pugixml.googlecode.com/svn/tags/latest).


01 May 2012 pugixml 1.2 release

pugixml-1.2 is finally out. This is a major release with lots of new features and compatibility improvements (read the changelog for details).

Highlights for this release include:

You can download the source package or get the new version from Subversion using the latest tag (http://pugixml.googlecode.com/svn/tags/latest).


31 October 2010 pugixml 1.0 release

pugixml-1.0 is out. This is a major release with lots of fixes/improvements (read the changelog for details).

The most important changes are:

You can download the source package or get the new version from Subversion using the latest tag (http://pugixml.googlecode.com/svn/tags/latest).


14 October 2010 New project site

pugixml now has a new home, pugixml.org. This site acts as a frontend for all pugixml-related stuff (downloads, documentation, support and other information). Additionally, there is a news feed, which you can subscribe to via RSS.

All downloads, documentation, Subversion repository and issue tracker are still hosted at Google Code; the existing links still work, and this is not going to change.


11 July 2010 pugixml 0.9 release

pugixml-0.9 is out. This is a major release with lots of fixes/improvements (read the changelog for the details). The most important changes are:

Also there are a lot of other changes, including performance and memory consumption improvements.