[{"data":1,"prerenderedAt":1205},["ShallowReactive",2],{"page-\u002Fguides\u002Fmlt":3},{"id":4,"title":5,"body":6,"description":1198,"extension":1199,"meta":1200,"navigation":321,"path":1201,"seo":1202,"stem":1203,"__hash__":1204},"content\u002F4.guides\u002F8.mlt.md","MLT (MapLibre Tiles)",{"type":7,"value":8,"toc":1165},"minimark",[9,13,18,27,118,122,125,130,133,152,156,166,170,173,188,192,196,199,289,293,296,335,339,343,351,374,378,384,387,409,414,418,421,524,530,574,578,581,620,624,670,674,677,695,743,747,763,781,785,792,838,842,849,889,893,896,955,959,997,1001,1025,1031,1035,1039,1045,1069,1095,1099,1102,1132,1135,1139,1161],[10,11,12],"p",{},"This guide covers MLT (MapLibre Tiles) support in tileserver-rs, including serving MLT tiles directly, on-the-fly transcoding between MLT and MVT formats, and configuration options.",[14,15,17],"h2",{"id":16},"what-is-mlt","What is MLT?",[10,19,20,26],{},[21,22,5],"a",{"href":23,"rel":24},"https:\u002F\u002Fmaplibre.org\u002Fmaplibre-tile-spec\u002F",[25],"nofollow"," is a next-generation vector tile format from the MapLibre project. It is designed as a more efficient alternative to MVT (Mapbox Vector Tiles \u002F Protobuf), offering improved compression and performance characteristics.",[28,29,30,46],"table",{},[31,32,33],"thead",{},[34,35,36,40,43],"tr",{},[37,38,39],"th",{},"Feature",[37,41,42],{},"MLT",[37,44,45],{},"MVT",[47,48,49,61,72,83,103],"tbody",{},[34,50,51,55,58],{},[52,53,54],"td",{},"Encoding",[52,56,57],{},"Column-oriented binary",[52,59,60],{},"Protobuf",[34,62,63,66,69],{},[52,64,65],{},"Compression",[52,67,68],{},"Built-in, per-column",[52,70,71],{},"External (gzip)",[34,73,74,77,80],{},[52,75,76],{},"Specification",[52,78,79],{},"MapLibre Tile Spec",[52,81,82],{},"Mapbox Vector Tile v2.1",[34,84,85,88,94],{},[52,86,87],{},"File extension",[52,89,90],{},[91,92,93],"code",{},".mlt",[52,95,96,99,100],{},[91,97,98],{},".pbf"," \u002F ",[91,101,102],{},".mvt",[34,104,105,108,113],{},[52,106,107],{},"Content-Type",[52,109,110],{},[91,111,112],{},"application\u002Fvnd.maplibre-vector-tile",[52,114,115],{},[91,116,117],{},"application\u002Fx-protobuf",[14,119,121],{"id":120},"mlt-support-capabilities","MLT support capabilities",[10,123,124],{},"tileserver-rs implements MLT support in three phases:",[126,127,129],"h3",{"id":128},"direct-mlt-passthrough-always-enabled","Direct MLT passthrough (always enabled)",[10,131,132],{},"Serve MLT tiles directly from PMTiles or MBTiles sources without any conversion. This works out of the box with no feature flags required.",[134,135,136,140,145],"ul",{},[137,138,139],"li",{},"MLT tiles are auto-detected from tile data using the MLT magic bytes",[137,141,142,143],{},"PMTiles and MBTiles sources containing MLT tiles are served with the correct ",[91,144,107],{},[137,146,147,148,151],{},"TileJSON metadata includes ",[91,149,150],{},"encoding: \"mlt\""," for MLT sources",[126,153,155],{"id":154},"mvt-to-mlt-transcoding-enabled-by-default","MVT-to-MLT transcoding (enabled by default)",[10,157,158,159,161,162,165],{},"Convert existing MVT\u002FPBF sources to MLT format on-the-fly. Request any MVT source as ",[91,160,93],{}," and tileserver-rs encodes it using ",[91,163,164],{},"mlt-core","'s encoding API. This is included in the default build — no extra feature flags needed.",[126,167,169],{"id":168},"mlt-to-mvt-transcoding-enabled-by-default","MLT-to-MVT transcoding (enabled by default)",[10,171,172],{},"Convert MLT tiles to MVT\u002FPBF format on-the-fly for backward compatibility with clients that don't yet support MLT. This is also included in the default build.",[174,175,177],"callout",{"type":176},"info",[10,178,179,180,183,184,187],{},"Since v2.11.1, the ",[91,181,182],{},"mlt"," feature is enabled by default. You no longer need to pass ",[91,185,186],{},"--features mlt"," when building from source — MLT transcoding is always available in standard builds.",[14,189,191],{"id":190},"configuration","Configuration",[126,193,195],{"id":194},"basic-mlt-source","Basic MLT Source",[10,197,198],{},"If you have MLT tiles in a PMTiles or MBTiles archive, configure the source normally — tileserver-rs auto-detects the tile format:",[200,201,206],"pre",{"className":202,"code":203,"language":204,"meta":205,"style":205},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[[sources]]\nid = \"my-mlt-source\"\ntype = \"pmtiles\"\npath = \"\u002Fdata\u002Ftiles.pmtiles\"\nname = \"MLT Vector Tiles\"\n","toml","",[91,207,208,224,244,259,274],{"__ignoreMap":205},[209,210,213,217,221],"span",{"class":211,"line":212},"line",1,[209,214,216],{"class":215},"sMK4o","[[",[209,218,220],{"class":219},"sBMFI","sources",[209,222,223],{"class":215},"]]\n",[209,225,227,231,234,237,241],{"class":211,"line":226},2,[209,228,230],{"class":229},"sTEyZ","id ",[209,232,233],{"class":215},"=",[209,235,236],{"class":215}," \"",[209,238,240],{"class":239},"sfazB","my-mlt-source",[209,242,243],{"class":215},"\"\n",[209,245,247,250,252,254,257],{"class":211,"line":246},3,[209,248,249],{"class":229},"type ",[209,251,233],{"class":215},[209,253,236],{"class":215},[209,255,256],{"class":239},"pmtiles",[209,258,243],{"class":215},[209,260,262,265,267,269,272],{"class":211,"line":261},4,[209,263,264],{"class":229},"path ",[209,266,233],{"class":215},[209,268,236],{"class":215},[209,270,271],{"class":239},"\u002Fdata\u002Ftiles.pmtiles",[209,273,243],{"class":215},[209,275,277,280,282,284,287],{"class":211,"line":276},5,[209,278,279],{"class":229},"name ",[209,281,233],{"class":215},[209,283,236],{"class":215},[209,285,286],{"class":239},"MLT Vector Tiles",[209,288,243],{"class":215},[126,290,292],{"id":291},"requesting-different-formats","Requesting Different Formats",[10,294,295],{},"Clients can request tiles in either format regardless of the source format:",[200,297,301],{"className":298,"code":299,"language":300,"meta":205,"style":205},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Request MLT tile (native format if source is MLT)\ncurl http:\u002F\u002Flocalhost:8080\u002Fdata\u002Fmy-mlt-source\u002F14\u002F8192\u002F5461.mlt\n\n# Request MVT tile (transcoded on-the-fly if source is MLT)\ncurl http:\u002F\u002Flocalhost:8080\u002Fdata\u002Fmy-mlt-source\u002F14\u002F8192\u002F5461.pbf\n","bash",[91,302,303,309,317,323,328],{"__ignoreMap":205},[209,304,305],{"class":211,"line":212},[209,306,308],{"class":307},"sHwdD","# Request MLT tile (native format if source is MLT)\n",[209,310,311,314],{"class":211,"line":226},[209,312,313],{"class":219},"curl",[209,315,316],{"class":239}," http:\u002F\u002Flocalhost:8080\u002Fdata\u002Fmy-mlt-source\u002F14\u002F8192\u002F5461.mlt\n",[209,318,319],{"class":211,"line":246},[209,320,322],{"emptyLinePlaceholder":321},true,"\n",[209,324,325],{"class":211,"line":261},[209,326,327],{"class":307},"# Request MVT tile (transcoded on-the-fly if source is MLT)\n",[209,329,330,332],{"class":211,"line":276},[209,331,313],{"class":219},[209,333,334],{"class":239}," http:\u002F\u002Flocalhost:8080\u002Fdata\u002Fmy-mlt-source\u002F14\u002F8192\u002F5461.pbf\n",[14,336,338],{"id":337},"tile-endpoints","Tile Endpoints",[126,340,342],{"id":341},"get-an-mlt-tile","Get an MLT Tile",[200,344,349],{"className":345,"code":347,"language":348},[346],"language-text","GET \u002Fdata\u002F{source}\u002F{z}\u002F{x}\u002F{y}.mlt\n","text",[91,350,347],{"__ignoreMap":205},[200,352,354],{"className":298,"code":353,"language":300,"meta":205,"style":205},"curl http:\u002F\u002Flocalhost:8080\u002Fdata\u002Ftiles\u002F10\u002F544\u002F373.mlt -o tile.mlt\n# Content-Type: application\u002Fvnd.maplibre-vector-tile\n",[91,355,356,369],{"__ignoreMap":205},[209,357,358,360,363,366],{"class":211,"line":212},[209,359,313],{"class":219},[209,361,362],{"class":239}," http:\u002F\u002Flocalhost:8080\u002Fdata\u002Ftiles\u002F10\u002F544\u002F373.mlt",[209,364,365],{"class":239}," -o",[209,367,368],{"class":239}," tile.mlt\n",[209,370,371],{"class":211,"line":226},[209,372,373],{"class":307},"# Content-Type: application\u002Fvnd.maplibre-vector-tile\n",[126,375,377],{"id":376},"get-an-mvt-tile-transcoded-from-mlt","Get an MVT Tile (Transcoded from MLT)",[200,379,382],{"className":380,"code":381,"language":348},[346],"GET \u002Fdata\u002F{source}\u002F{z}\u002F{x}\u002F{y}.pbf\n",[91,383,381],{"__ignoreMap":205},[10,385,386],{},"If the source contains MLT tiles, tileserver-rs automatically transcodes to MVT:",[200,388,390],{"className":298,"code":389,"language":300,"meta":205,"style":205},"curl http:\u002F\u002Flocalhost:8080\u002Fdata\u002Ftiles\u002F10\u002F544\u002F373.pbf -o tile.pbf\n# Content-Type: application\u002Fx-protobuf\n",[91,391,392,404],{"__ignoreMap":205},[209,393,394,396,399,401],{"class":211,"line":212},[209,395,313],{"class":219},[209,397,398],{"class":239}," http:\u002F\u002Flocalhost:8080\u002Fdata\u002Ftiles\u002F10\u002F544\u002F373.pbf",[209,400,365],{"class":239},[209,402,403],{"class":239}," tile.pbf\n",[209,405,406],{"class":211,"line":226},[209,407,408],{"class":307},"# Content-Type: application\u002Fx-protobuf\n",[174,410,411],{"type":176},[10,412,413],{},"If transcoding fails for any reason, the original tile is served as-is with a warning logged. This ensures tile serving remains reliable even if specific tiles have encoding issues.",[14,415,417],{"id":416},"tilejson-metadata","TileJSON Metadata",[10,419,420],{},"MLT sources include additional metadata in their TileJSON response:",[200,422,426],{"className":423,"code":424,"language":425,"meta":205,"style":205},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"tilejson\": \"3.0.0\",\n  \"tiles\": [\"http:\u002F\u002Flocalhost:8080\u002Fdata\u002Ftiles\u002F{z}\u002F{x}\u002F{y}.mlt\"],\n  \"encoding\": \"mlt\",\n  \"format\": \"mlt\"\n}\n","json",[91,427,428,433,458,482,501,518],{"__ignoreMap":205},[209,429,430],{"class":211,"line":212},[209,431,432],{"class":215},"{\n",[209,434,435,438,442,445,448,450,453,455],{"class":211,"line":226},[209,436,437],{"class":215},"  \"",[209,439,441],{"class":440},"spNyl","tilejson",[209,443,444],{"class":215},"\"",[209,446,447],{"class":215},":",[209,449,236],{"class":215},[209,451,452],{"class":239},"3.0.0",[209,454,444],{"class":215},[209,456,457],{"class":215},",\n",[209,459,460,462,465,467,469,472,474,477,479],{"class":211,"line":246},[209,461,437],{"class":215},[209,463,464],{"class":440},"tiles",[209,466,444],{"class":215},[209,468,447],{"class":215},[209,470,471],{"class":215}," [",[209,473,444],{"class":215},[209,475,476],{"class":239},"http:\u002F\u002Flocalhost:8080\u002Fdata\u002Ftiles\u002F{z}\u002F{x}\u002F{y}.mlt",[209,478,444],{"class":215},[209,480,481],{"class":215},"],\n",[209,483,484,486,489,491,493,495,497,499],{"class":211,"line":261},[209,485,437],{"class":215},[209,487,488],{"class":440},"encoding",[209,490,444],{"class":215},[209,492,447],{"class":215},[209,494,236],{"class":215},[209,496,182],{"class":239},[209,498,444],{"class":215},[209,500,457],{"class":215},[209,502,503,505,508,510,512,514,516],{"class":211,"line":276},[209,504,437],{"class":215},[209,506,507],{"class":440},"format",[209,509,444],{"class":215},[209,511,447],{"class":215},[209,513,236],{"class":215},[209,515,182],{"class":239},[209,517,243],{"class":215},[209,519,521],{"class":211,"line":520},6,[209,522,523],{"class":215},"}\n",[10,525,526,527,529],{},"The ",[91,528,488],{}," field tells MapLibre GL JS and other clients that the tiles use MLT encoding.",[174,531,532],{"type":176},[10,533,534,538,539,542,543,545,546,549,550,553,554,557,558,560,561,564,565,567,568,570,571,573],{},[535,536,537],"strong",{},"Browser rendering compatibility."," MapLibre GL JS bundles its own MLT decoder (",[91,540,541],{},"@maplibre\u002Fmlt",", shipped since maplibre-gl-js v5.12), but it does not yet implement the geometry encodings that ",[91,544,164],{}," emits — it rejects them with ",[91,547,548],{},"\"the specified geometry type is currently not supported\"",", leaving MLT styles blank. Because no ",[91,551,552],{},"EncoderConfig"," option avoids this, tileserver-rs rewrites MLT sources in the served ",[91,555,556],{},"style.json"," to point at the ",[91,559,98],{}," transcode endpoint (",[91,562,563],{},"\u002Fdata\u002F{id}\u002F{z}\u002F{x}\u002F{y}.pbf",") instead of the ",[91,566,93],{}," tiles their TileJSON advertises. The viewer receives standard MVT it can render, while the raw ",[91,569,93],{}," endpoint stays available to direct API clients at full compression. Once the browser decoder matures, the style can serve ",[91,572,93],{}," directly.",[14,575,577],{"id":576},"how-transcoding-works","How Transcoding Works",[10,579,580],{},"When a client requests a tile in a format different from the source:",[582,583,584,593,596,603,609,615],"ol",{},[137,585,526,586,589,590,592],{},[91,587,588],{},"get_tile"," handler detects the format mismatch (e.g., ",[91,591,98],{}," requested from MLT source)",[137,594,595],{},"The tile data is decompressed if gzip-encoded",[137,597,598,599,602],{},"MLT tile bytes are parsed using ",[91,600,601],{},"mlt-core::parse_layers()"," and decoded",[137,604,605,606],{},"Decoded layers are converted to an intermediate ",[91,607,608],{},"FeatureCollection",[137,610,611,612],{},"The collection is re-encoded as an MVT protobuf tile using ",[91,613,614],{},"prost",[137,616,617,618],{},"The transcoded tile is returned with the correct ",[91,619,107],{},[126,621,623],{"id":622},"supported-conversions","Supported Conversions",[28,625,626,639],{},[31,627,628],{},[34,629,630,633,636],{},[37,631,632],{},"From",[37,634,635],{},"To",[37,637,638],{},"Status",[47,640,641,651,660],{},[34,642,643,645,648],{},[52,644,42],{},[52,646,647],{},"MVT\u002FPBF",[52,649,650],{},"✅ Supported (MLT-to-MVT transcoding)",[34,652,653,655,657],{},[52,654,647],{},[52,656,42],{},[52,658,659],{},"✅ Supported (MVT-to-MLT transcoding)",[34,661,662,665,667],{},[52,663,664],{},"Same format",[52,666,664],{},[52,668,669],{},"✅ Passthrough (no conversion)",[14,671,673],{"id":672},"building-from-source","Building from Source",[10,675,676],{},"MLT transcoding is enabled by default since v2.11.1. The feature adds the following dependencies:",[134,678,679,684,689],{},[137,680,681,683],{},[91,682,164],{}," — MLT tile parsing, decoding, and encoding",[137,685,686,688],{},[91,687,614],{}," — Protobuf encoding for MVT generation",[137,690,691,694],{},[91,692,693],{},"geo-types"," — Geometry types used by mlt-core",[200,696,698],{"className":298,"code":697,"language":300,"meta":205,"style":205},"# Default build includes MLT transcoding\ncargo build --release\n\n# To explicitly disable MLT transcoding\ncargo build --release --no-default-features --features postgres,raster\n",[91,699,700,705,716,720,725],{"__ignoreMap":205},[209,701,702],{"class":211,"line":212},[209,703,704],{"class":307},"# Default build includes MLT transcoding\n",[209,706,707,710,713],{"class":211,"line":226},[209,708,709],{"class":219},"cargo",[209,711,712],{"class":239}," build",[209,714,715],{"class":239}," --release\n",[209,717,718],{"class":211,"line":246},[209,719,322],{"emptyLinePlaceholder":321},[209,721,722],{"class":211,"line":261},[209,723,724],{"class":307},"# To explicitly disable MLT transcoding\n",[209,726,727,729,731,734,737,740],{"class":211,"line":276},[209,728,709],{"class":219},[209,730,712],{"class":239},[209,732,733],{"class":239}," --release",[209,735,736],{"class":239}," --no-default-features",[209,738,739],{"class":239}," --features",[209,741,742],{"class":239}," postgres,raster\n",[14,744,746],{"id":745},"performance-benchmarks","Performance & Benchmarks",[10,748,749,750,753,754,759,760,762],{},"Benchmarks use ",[535,751,752],{},"real OpenMapTiles fixtures"," from the ",[21,755,758],{"href":756,"rel":757},"https:\u002F\u002Fgithub.com\u002Fmaplibre\u002Fmaplibre-tile-spec",[25],"maplibre-tile-spec"," repository — the same data used by ",[91,761,164],{},"'s own Criterion benchmarks. Run them with:",[200,764,766],{"className":298,"code":765,"language":300,"meta":205,"style":205},"cargo bench --bench mlt\n",[91,767,768],{"__ignoreMap":205},[209,769,770,772,775,778],{"class":211,"line":212},[209,771,709],{"class":219},[209,773,774],{"class":239}," bench",[209,776,777],{"class":239}," --bench",[209,779,780],{"class":239}," mlt\n",[126,782,784],{"id":783},"mlt-parse-throughput","MLT Parse Throughput",[10,786,787,788,791],{},"Header parsing via ",[91,789,790],{},"mlt_core::parse_layers()"," (no geometry decode):",[28,793,794,804],{},[31,795,796],{},[34,797,798,801],{},[37,799,800],{},"Zoom",[37,802,803],{},"Throughput",[47,805,806,814,822,830],{},[34,807,808,811],{},[52,809,810],{},"z0",[52,812,813],{},"~4.1 GiB\u002Fs",[34,815,816,819],{},[52,817,818],{},"z4",[52,820,821],{},"~6.2 GiB\u002Fs",[34,823,824,827],{},[52,825,826],{},"z7",[52,828,829],{},"~12.3 GiB\u002Fs",[34,831,832,835],{},[52,833,834],{},"z13",[52,836,837],{},"~3.3 GiB\u002Fs",[126,839,841],{"id":840},"mlt-full-decode-throughput","MLT Full Decode Throughput",[10,843,844,845,848],{},"Parse + ",[91,846,847],{},"decode_all()"," per layer (geometry + properties):",[28,850,851,859],{},[31,852,853],{},[34,854,855,857],{},[37,856,800],{},[37,858,803],{},[47,860,861,868,875,882],{},[34,862,863,865],{},[52,864,810],{},[52,866,867],{},"~108 MiB\u002Fs",[34,869,870,872],{},[52,871,818],{},[52,873,874],{},"~132 MiB\u002Fs",[34,876,877,879],{},[52,878,826],{},[52,880,881],{},"~87 MiB\u002Fs",[34,883,884,886],{},[52,885,834],{},[52,887,888],{},"~385 MiB\u002Fs",[126,890,892],{"id":891},"mlt-to-mvt-transcoding","MLT to MVT Transcoding",[10,894,895],{},"Full pipeline: parse, decode, FeatureCollection, MVT protobuf encode:",[28,897,898,909],{},[31,899,900],{},[34,901,902,904,906],{},[37,903,800],{},[37,905,803],{},[37,907,908],{},"Time per tile set",[47,910,911,922,933,944],{},[34,912,913,916,919],{},[52,914,915],{},"z0 (1 tile, 81 KB)",[52,917,918],{},"~27 MiB\u002Fs",[52,920,921],{},"~2.9 ms",[34,923,924,927,930],{},[52,925,926],{},"z4 (2 tiles, 738 KB)",[52,928,929],{},"~14.7 MiB\u002Fs",[52,931,932],{},"~48 ms",[34,934,935,938,941],{},[52,936,937],{},"z7 (3 tiles, 710 KB)",[52,939,940],{},"~11.6 MiB\u002Fs",[52,942,943],{},"~60 ms",[34,945,946,949,952],{},[52,947,948],{},"z13 (3 tiles, 442 KB)",[52,950,951],{},"~66 MiB\u002Fs",[52,953,954],{},"~6.4 ms",[126,956,958],{"id":957},"format-detection","Format Detection",[28,960,961,971],{},[31,962,963],{},[34,964,965,968],{},[37,966,967],{},"Input",[37,969,970],{},"Time",[47,972,973,981,989],{},[34,974,975,978],{},[52,976,977],{},"MLT tile",[52,979,980],{},"~9.8 ns",[34,982,983,986],{},[52,984,985],{},"MVT tile",[52,987,988],{},"~2.0 ns",[34,990,991,994],{},[52,992,993],{},"Same-format passthrough",[52,995,996],{},"~7.7 ns",[126,998,1000],{"id":999},"comparison-with-martin-and-mlt-core","Comparison with Martin and mlt-core",[134,1002,1003,1016],{},[137,1004,1005,1007,1008,1011,1012,1015],{},[535,1006,164],{},": Our ",[91,1009,1010],{},"mlt_parse"," and ",[91,1013,1014],{},"mlt_decode_all"," benchmarks use the identical fixtures and methodology as mlt-core's own Criterion benchmarks, so throughput numbers are directly comparable.",[137,1017,1018,1021,1022,1024],{},[535,1019,1020],{},"Martin",": Has no MLT-specific benchmarks. Martin only does passthrough (format detection + correct ",[91,1023,107],{},"). Our MLT to MVT transcoding capability is unique to tileserver-rs.",[174,1026,1028],{"type":1027},"tip",[10,1029,1030],{},"For production use with heavy transcoding load, consider pre-converting your tiles to the target format using offline tools.",[14,1032,1034],{"id":1033},"troubleshooting","Troubleshooting",[126,1036,1038],{"id":1037},"transcoding-returns-original-tile","Transcoding Returns Original Tile",[10,1040,1041,1042,1044],{},"If you request ",[91,1043,98],{}," from an MLT source but get back MLT data, check:",[582,1046,1047,1053,1063],{},[137,1048,1049,1052],{},[535,1050,1051],{},"Feature flag",": Ensure tileserver-rs was built with MLT support (enabled by default since v2.11.1)",[137,1054,1055,1058,1059,1062],{},[535,1056,1057],{},"Server logs",": Look for transcoding warnings (",[91,1060,1061],{},"WARN"," level)",[137,1064,1065,1068],{},[535,1066,1067],{},"Tile format",": Verify the source actually contains MLT tiles via TileJSON",[200,1070,1072],{"className":298,"code":1071,"language":300,"meta":205,"style":205},"# Check if MLT support is compiled in (look for \"mlt\" in features)\ncurl http:\u002F\u002Flocalhost:8080\u002Fping | jq .\n",[91,1073,1074,1079],{"__ignoreMap":205},[209,1075,1076],{"class":211,"line":212},[209,1077,1078],{"class":307},"# Check if MLT support is compiled in (look for \"mlt\" in features)\n",[209,1080,1081,1083,1086,1089,1092],{"class":211,"line":226},[209,1082,313],{"class":219},[209,1084,1085],{"class":239}," http:\u002F\u002Flocalhost:8080\u002Fping",[209,1087,1088],{"class":215}," |",[209,1090,1091],{"class":219}," jq",[209,1093,1094],{"class":239}," .\n",[126,1096,1098],{"id":1097},"transcodeunsupported-error","\"TranscodeUnsupported\" Error",[10,1100,1101],{},"If you see a transcoding error, verify the tile format is correct:",[200,1103,1105],{"className":298,"code":1104,"language":300,"meta":205,"style":205},"# Check TileJSON to see the source format\ncurl http:\u002F\u002Flocalhost:8080\u002Fdata\u002Fmy-source.json | jq '.encoding'\n",[91,1106,1107,1112],{"__ignoreMap":205},[209,1108,1109],{"class":211,"line":212},[209,1110,1111],{"class":307},"# Check TileJSON to see the source format\n",[209,1113,1114,1116,1119,1121,1123,1126,1129],{"class":211,"line":226},[209,1115,313],{"class":219},[209,1117,1118],{"class":239}," http:\u002F\u002Flocalhost:8080\u002Fdata\u002Fmy-source.json",[209,1120,1088],{"class":215},[209,1122,1091],{"class":219},[209,1124,1125],{"class":215}," '",[209,1127,1128],{"class":239},".encoding",[209,1130,1131],{"class":215},"'\n",[10,1133,1134],{},"Both MLT→MVT and MVT→MLT conversions are supported as of v2.14.0.",[14,1136,1138],{"id":1137},"next-steps","Next Steps",[134,1140,1141,1148,1155],{},[137,1142,1143,1147],{},[21,1144,1146],{"href":1145},"\u002Fguides\u002Fvector-tiles","Serving Vector Tiles"," — General vector tile serving guide",[137,1149,1150,1154],{},[21,1151,1153],{"href":1152},"\u002Fgetting-started\u002Fconfig","Configuration Reference"," — All config options",[137,1156,1157,1160],{},[21,1158,79],{"href":23,"rel":1159},[25]," — MLT format specification",[1162,1163,1164],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":205,"searchDepth":226,"depth":226,"links":1166},[1167,1168,1173,1177,1181,1182,1185,1186,1193,1197],{"id":16,"depth":226,"text":17},{"id":120,"depth":226,"text":121,"children":1169},[1170,1171,1172],{"id":128,"depth":246,"text":129},{"id":154,"depth":246,"text":155},{"id":168,"depth":246,"text":169},{"id":190,"depth":226,"text":191,"children":1174},[1175,1176],{"id":194,"depth":246,"text":195},{"id":291,"depth":246,"text":292},{"id":337,"depth":226,"text":338,"children":1178},[1179,1180],{"id":341,"depth":246,"text":342},{"id":376,"depth":246,"text":377},{"id":416,"depth":226,"text":417},{"id":576,"depth":226,"text":577,"children":1183},[1184],{"id":622,"depth":246,"text":623},{"id":672,"depth":226,"text":673},{"id":745,"depth":226,"text":746,"children":1187},[1188,1189,1190,1191,1192],{"id":783,"depth":246,"text":784},{"id":840,"depth":246,"text":841},{"id":891,"depth":246,"text":892},{"id":957,"depth":246,"text":958},{"id":999,"depth":246,"text":1000},{"id":1033,"depth":226,"text":1034,"children":1194},[1195,1196],{"id":1037,"depth":246,"text":1038},{"id":1097,"depth":246,"text":1098},{"id":1137,"depth":226,"text":1138},"Guide to serving and transcoding MLT tiles with tileserver-rs","md",{},"\u002Fguides\u002Fmlt",{"title":5,"description":1198},"4.guides\u002F8.mlt","CDwFqN0XHfMPw404cn-_SqUg6fStBKlgNJDsW-95js8",1794150613978]