eXist-db is an open-source, embeddable database engine built around the XML data model, with a full-stack runtime for deploying XQuery-powered web applications directly from within the database.
What is eXist-db?
eXist-db is a native XML database — meaning XML is not an afterthought mapped onto relational rows, but the actual storage and query model. Documents live as trees, XQuery is the first-class query language, and the entire application layer (REST endpoints, HTML templating, authentication) runs inside the same process. Think of it as PostgreSQL and a Node.js web server collapsed into a single open-source runtime, but oriented entirely around hierarchical, document-centric data.
The project has been active for over two decades and remains the go-to choice in digital humanities, archival systems, scholarly publishing, and any domain where XML is not a transport format but the canonical data representation.
What does eXist-db do best?
eXist-db excels at storing, indexing, and querying large corpora of structured XML documents with zero impedance mismatch. Where SQLite or PostgreSQL require you to shred your XML into rows and reassemble it on the way out, eXist-db keeps documents intact and lets XPath and XQuery operate on them natively.
- Full XQuery 3.1 support — higher-order functions, maps, arrays, and the FLWOR expressions that make complex document transformations concise.
- Built-in HTTP server — deploy REST APIs, RESTXQ endpoints, and full web apps as XAR packages stored inside the database itself.
- Range and full-text indexes — Lucene integration means you can run fuzzy keyword search across gigabytes of TEI-encoded text in milliseconds.
- XSLT 2.0 / 3.0 via Saxon — transformation pipelines run server-side without a separate process.
- Versioning and journaling — document-level revision history out of the box, which relational databases require add-ons to approximate.
I've used it on a project that ingests several thousand TEI-XML encoded manuscripts. The ability to write a single XQuery that traverses nested hierarchies, aggregates metadata, and returns paginated JSON — without an ORM layer or a schema migration — is genuinely liberating.
Is eXist-db free?
Yes — eXist-db is free to download, use, and self-host under the GNU LGPL license. There is no commercial tier, no usage cap, and no vendor lock-in. The Mac distribution is available as a native installer (which the Homebrew Cask wraps), so brew install --cask exist-db gets you a running instance in under a minute on Apple Silicon or Intel hardware.
Who should use eXist-db?
eXist-db is the right tool for developers, researchers, and archivists whose data is intrinsically hierarchical and document-centric. If your team is building a scholarly edition platform, a legal-document archive, a publishing pipeline ingesting JATS XML, or any system where XML is the interchange format and you are tired of shredding it into tables, eXist-db removes an entire translation layer.
It is emphatically not the right tool if your data is tabular, relational, or if your team has no XQuery familiarity and no appetite to learn it. In those cases, a JSON document store like MongoDB or a relational database with JSONB (PostgreSQL) will serve you better. eXist-db has a steep on-ramp — the admin dashboard, called eXide, is functional but sparse compared to modern developer tooling — and the ecosystem of third-party libraries is narrower than, say, the Node.js or Python ecosystems.
How does eXist-db compare to BaseX?
BaseX is the other leading native XML database and is probably eXist-db's closest peer. BaseX generally wins on raw XQuery benchmark performance and has a cleaner, more modern codebase. eXist-db wins on the application-server story: its built-in HTTP layer, XAR packaging format, and two-decade body of community XAR applications (Tamboti, Monex, TEI Publisher) make it more batteries-included for deploying complete web applications without an external server. If you need maximum query throughput and are comfortable rolling your own HTTP layer, try BaseX. If you want to ship a document-centric web app with minimal infrastructure, eXist-db is ahead.
For developers coming from the relational world, neither eXist-db nor BaseX will feel like PostgreSQL, and that is the point — you are trading SQL familiarity for genuine native XML semantics.
What are the best eXist-db alternatives?
The honest answer depends on why you are reaching for a native XML store in the first place:
- BaseX — fastest native XML/XQuery engine; ideal for batch analytics and larger-than-RAM corpora.
- MarkLogic — enterprise, multi-model (XML + JSON + RDF), horizontally scalable; priced accordingly.
- PostgreSQL with XML columns — if you need XML support alongside relational data and want a familiar ecosystem.
- Sedna — lightweight; largely unmaintained now.