Skip to content
Map Styles

Map Styles

A map style is a JSON document that defines the visual appearance of a Vector Tiles map: colors, fonts, layer visibility, and labels. Pass a style URL to a MapLibre-compatible library, and it fetches the style and the tiles it references automatically. No API key is required.

Standard Map Styles

The default styles show place labels in the local language of the area shown. When a place name uses a non-Latin script (for example Cyrillic, Arabic, or Chinese characters), the label gets a second line with a Latin-script name, if one is available.

The community service serves the standard Maptoolkit vector basemap in several styles. Pass any of these style URLs to a MapLibre-compatible library. No API key is required.

StyleStyle URL
Summer (default)https://styles.maptoolkit.org/summer.json
Winterhttps://styles.maptoolkit.org/winter.json
Streethttps://styles.maptoolkit.org/street.json
Lighthttps://styles.maptoolkit.org/light.json
Darkhttps://styles.maptoolkit.org/dark.json
Cyclinghttps://styles.maptoolkit.org/cycling.json
Hikinghttps://styles.maptoolkit.org/hiking.json

Language Versions

A language version shows labels in one specific language instead of the local language. If a place name has no translation into that language, the label falls back to the local name.

Language versions show a single label per place, either the translation or the local name. They do not add the Latin-script subtitle used by the default styles.

Build the URL by adding a language code to the style name:

https://styles.maptoolkit.org/<style>-<language>.json

For example:

https://styles.maptoolkit.org/summer-en.json
https://styles.maptoolkit.org/hiking-ja.json

Maptoolkit supports these 13 languages:

CodeLanguageCodeLanguage
arArabichuHungarian
csCzechitItalian
deGermanjaJapanese
enEnglishkoKorean
esSpanishplPolish
frFrenchzhChinese
hiHindi
Arabic is written right to left, and MapLibre GL JS does not support that on its own: labels appear with unconnected letters in the wrong order until you register the RTL text plugin. See Change the Map Language for the one line it takes. This also affects the default styles wherever they show Arabic names.

3D Styles

The 3D versions add terrain (elevation-based relief) to a style. Labels behave the same way as in the default styles: local language, with a Latin-script subtitle for non-Latin names.

Add -3d to the style name:

https://styles.maptoolkit.org/hiking-3d.json

Customize a Map Style

Use MapMaker to customize a map style in your browser. Pick a style from the Current Style switcher, then edit colors, labels, terrain, and more. Changes update live on the map.

MapMaker offers three editing modes:

  • Easy Mode — Sliders, color pickers, and switches for the most common changes: colors, label density, terrain, and feature groups like roads, water, buildings, and POIs. Safe defaults make this the best starting point.
  • Photo-to-Map — Upload a photo or logo, and MapMaker generates a color palette from it. Use this to match a map’s colors to a brand image or mood board.
  • Expert Mode — Direct access to the underlying MapLibre style.json, with live validation. Click a feature on the map to see which layer renders it and jump straight to that layer. Errors show inline and block saving until you fix them. Use the Maptoolkit Vector Tile Schema Reference and the MapLibre Style Spec to make beautiful styles.

When you are done, click “Export Style” to download the resolved style.json. This export is a static snapshot: unlike styles hosted on styles.maptoolkit.org, it does not receive future updates, and you are responsible for hosting it yourself.

Pass the URL to your custom style to MapLibre to use it:

const map = new maplibregl.Map({
  ...
  style: 'https://my-website.com/style.json', // 👈 Your downloaded style.json!
  ...
});

Minimum SDK Requirements

The styles require MapLibre GL JS 6.0.0 or newer, because they use the line-layer-opacity paint property, which does not exist in earlier versions. Individual features have their own, lower minimums:

SDK SupportMapLibre GL JSMapLibre Native AndroidMapLibre Native iOS
Basic functionality4.2.011.4.06.6.0
color-relief layer5.6.013.0.06.24.0
line-layer-opacity6.0.0--

Older clients typically ignore an unsupported layer type instead of throwing an error, so check your SDK version first if elevation shading doesn’t appear.

Using a client older than v6

line-layer-opacity sets the opacity of a line layer as a whole, so overlapping segments of the same line do not paint over each other. To run a style on an older client, rename every line-layer-opacity to line-opacity. The map then renders, but opacity applies per feature instead of per layer, so overlaps look darker where lines cross.