Fast, Flexible and Portable Structured Generation
XGrammar is an open-source library for efficient, flexible, and portable structured generation.
It leverages constrained decoding to ensure 100% structural correctness of the output. It supports general context-free grammar to enable a broad range of structures, including JSON, regex, custom context-free grammar, etc.
XGrammar uses careful optimizations to achieve extremely low overhead in structured generation. It has achieved near-zero overhead in JSON generation, making it one of the fastest structured generation engines available.
XGrammar features universal deployment. It supports:
XGrammar is very easy to integrate with LLM inference engines. It is the default structured generation backend for most LLM inference engines, including vLLM, SGLang, TensorRT-LLM, and MLC-LLM, as well as many other companies. You can also try out their structured generation modes!
Install XGrammar:
pip install xgrammarFor use with MPS on Apple Silicon, install with:
pip install "xgrammar[metal]"Import XGrammar:
import xgrammar as xgrPlease visit our documentation to get started with XGrammar.
We welcome contributions of code, tests, documentation, bug reports, and reviews. See CONTRIBUTING.md to get started. All participants are expected to follow our Code of Conduct.
GOVERNANCE.md describes the current maintainers, technical decision process, and maintainer role changes. CODEOWNERS lists the reviewers responsible for specific parts of the repository.
XGrammar publishes versioned releases on GitHub Releases and Python packages on PyPI. Releases are made as needed when features, bug fixes, or compatibility updates are ready, without a fixed calendar schedule. Prereleases are identified separately from stable releases.
For each release, a maintainer selects a reviewed commit from main and coordinates the following:
The Python package version is generated from Git tags by setuptools-scm; no
manual version update in pyproject.toml is needed. For example, v0.2.7 builds
as 0.2.7, and commits after a release get development versions. Builds from Git
need full history and tags; published source distributions retain their version
without Git. To publish manually, run the package workflow on a release tag;
manual branch runs only build artifacts.
XGrammar has been widely adopted in industry, open-source projects, and academia. Our collaborators include:
If you find XGrammar useful in your research, please consider citing our papers:
…No open issues yet, or sync has not completed.