MapLibre Tile Specification¶
Note
This is a live specification that evolves continuously. Features marked as are under active development and may change in future versions. Stable features are those without experimental tags.
MLT (MapLibre Tile) is a vector tile format for map data. It stores the same content as an MVT tile, layers of features with geometries and properties, in a column-oriented layout.
MLT is natively supported by MapLibre GL JS and MapLibre Native, and tiles can be served using the Martin tile server.
Why MLT¶
MLT is mainly inspired by MVT, but has been redesigned from the ground up to improve the following areas:
- Improved compression ratio - up to 6x on large tiles, based on a column oriented layout with (custom) lightweight encodings
- 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 an in-memory format that can be processed efficiently on the CPU and GPU and loaded directly into GPU buffers partially (like polygons in WebGL) or completely (in case of WebGPU compute shader usage) without additional processing
The last three are not yet implemented. They are planned for MLT v2.
Documentation¶
| Page | Contents |
|---|---|
| Overview | The data model: tiles, extents, layers, features, columns and streams. |
| Specification v1 | The stable wire format. |
| Specification v2 | The next wire format, under development. |
| Encoding Algorithms | The compression schemes used by both versions. |
| Implementation Status | Tools, libraries and datasets that support MLT. |