Note
The specification is deemed stable as of October 2025. However, as a living standard, experimental features may continue to evolve. Implementations and integrations are being developed, refer to the implementation status page for the current status.
The MapLibre Tile specification is mainly inspired by the Mapbox Vector Tile (MVT) specification, but has been redesigned from the ground up to address the challenges of rapidly growing geospatial data volumes and complex next-generation geospatial source formats as well as to leverage the capabilities of modern hardware and APIs. MLT is specifically designed for modern and next generation graphics APIs to enable high-performance processing and rendering of large (planet-scale) 2D and 2.5 basemaps. In particular, MLT offers the following features:
- Improved compression ratio: up to 6x on large encoded tiles, based on a column oriented layout with recursively applied (custom) lightweight encodings. This leads to reduced latency, storage, and egress costs and, in particular, improved cache utilization
- Better decoding performance: fast lightweight encodings which can be used in combination with SIMD/vectorization instructions
- Support for linear referencing and m-values to efficiently support the upcoming next generation source formats such as Overture Maps (GeoParquet)
- Support 3D coordinates, i.e. elevation
- Support complex types, including nested properties, lists and maps
- Improved processing performance, based on storage and in-memory formats that are specifically designed for modern GL APIs, allowing for efficient processing on both CPU and GPU. The formats are designed to be loaded into GPU buffers with little or no additional processing
📝 For a more in-depth exploration of MLT have a look at the following slides, watch this talk or read this paper by MLT inventor Markus Tremmel.
/specMLT specification and related documentation/testTest MVT tiles and the expected MLT conversion results/javaJava encoder for converting MVT to MLT, as well as a decoder parsing MLT to an in-memory representation./jsJavascript decoder/rustRust decoder
Join the #maplibre-tile-format Slack channel at OSM US: get an invite at https://slack.openstreetmap.us/
- This project is easier to develop with just, a modern alternative to
make. - To get a list of available commands, run
just. - To run tests, use
just test.
- All project documentation and specification content is licensed under CC0 1.0 Universal - Public Domain Dedication.
- All code is dual licensed under Apache License v2.0 and MIT license, at your option.
- Tile test data in the
/testdirectory has different licenses depending on the source of that data.
Unless you explicitly state otherwise, any code contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. Similarly, any documentation or specification contributions shall be licensed under CC0 1.0 Universal.
If you use MapLibre Tile in your research, please cite our paper:
@inproceedings{tremmel2025maplibretile,
title = {MapLibre Tile: A Next Generation Vector Tile Format},
author = {Tremmel, Markus and Zink, Roland},
booktitle = {Proceedings of the 33rd ACM International Conference on Advances in Geographic Information Systems},
series = {SIGSPATIAL '25},
year = {2025},
pages = {1118--1121},
doi = {10.1145/3748636.3763208},
url = {https://doi.org/10.1145/3748636.3763208}
}