# Plugins

## User Interface Plugins

- 💙 [maplibre-gl-compare](<https://github.com/maplibre/maplibre-gl-compare>) - Enables users to compare two maps by swiping left and right.
- [Gauge Legend](<https://github.com/AbelVM/gauge_legend>) - Dynamic gauge legend for MapLibre GL JS
- [mapbox-gl-controls](<https://github.com/bravecow/mapbox-gl-controls>) - Adds controls for a ruler, style inspector, localization, and style switcher.
- [mapbox-gl-draw](<https://github.com/mapbox/mapbox-gl-draw>) - Adds support for drawing and editing features on maps.
- [mapbox-gl-elevation](<https://github.com/watergis/mapbox-gl-elevation>) - Adds a control to retrieve altitude from terrain RGB tilesets.
- [mapbox-gl-infobox](<https://github.com/el/infobox-control>) - Adds a control to display an infobox or a gradient.
- [mapbox-gl-legend](<https://github.com/watergis/mapbox-gl-legend>) - Adds a control that shows a legend generated from the map style.
- [mapbox-gl-valhalla](<https://github.com/watergis/mapbox-gl-valhalla>) - Adds a control to provide isochrone features from valhalla server.
- [mapboxgl-minimap](<https://github.com/aesqe/mapboxgl-minimap>) - Adds a control to show a miniature overview of the current map.
- [maplibre-compass-pro](<https://github.com/jedluk/maplibre-compass-pro>) - old fashioned compass (with compass rose) for Maplibre GL. [demo](<https://codesandbox.io/p/sandbox/peaceful-mirzakhani-tv38ck>)
- [map-gl-style-switcher](<https://github.com/muimsd/map-gl-style-switcher>) - A customizable style switcher control for MapLibre GL JS, also has a `react-map-gl` wrapper.
- [maplibre-geoman](<https://github.com/geoman-io/maplibre-geoman>) - Plugin for drawing and editing geometry layers. [demo](<https://geoman.io/demo/maplibre>)
- [maplibre-preload](<https://github.com/AbelVM/maplibre-preload>) - A tiny zero-configuration plugin for preloading tiles and smoothen the experience when using targeted movements in MapLibre GL JS.
- [maplibre-gl-basemaps](<https://github.com/ka7eh/maplibre-gl-basemaps>) - A plugin for switching between raster basemaps.
- [maplibre-gl-export](<https://github.com/watergis/maplibre-gl-export>) - Adds a control that exports the map as a PDF or images such as PNG, JPEG and SVG.
- [maplibre-gl-map-to-image](<https://github.com/Willjfield/maplibre-gl-map-to-image>) - Creates static image data from a map and sets it as the src of a target html image element. Similar to maplibre-gl-export but intended for use cases where you are embedding the image in a document rather than printing full page.
- [maplibre-gl-measures](<https://github.com/jdsantos/maplibre-gl-measures>) - A plugin for taking measures on the map.
- [maplibre-gl-opacity](<https://github.com/mug-jp/maplibre-gl-opacity>) - A plugin to switch layer like Leaflet.control.layers, and update opacities. [demo](<https://mug-jp.github.io/maplibre-gl-opacity/>)
- [maplibre-gl-panoramax](<https://github.com/clement-igonet/maplibre-gl-panoramax>) - Browse and fix [Panoramax](<https://panoramax.fr>) street-level imagery on any MapLibre map: federated catalog client, coverage layers with filters, sequence navigation, and orientation corrections written back to the source instance via the official API. [demo](<https://clement-igonet.github.io/maplibre-gl-panoramax/docs/npm-check.html>)
- [maplibre-gl-photosphere](<https://github.com/clement-igonet/maplibre-gl-photosphere>) - A plugin to enter an immersive 360° photosphere anchored at a geographic point, look around (mouse, touch or keyboard), and exit back to the map. Supports Street-View-style navigation between panoramas. [demo](<https://clement-igonet.github.io/maplibre-gl-photosphere/>)
- [maplibre-gl-temporal-control](<https://github.com/mug-jp/maplibre-gl-temporal-control>) - A plugin to easily animate temporal data. [demo](<https://mug-jp.github.io/maplibre-gl-temporal-control/raster.html>)
- [route-snapper](<https://github.com/dabreegster/route_snapper>) - Draw routes and areas snapped to roads.
- [Terra Draw](<https://www.github.com/JamesLMilner/terra-draw>) - The library has a MapLibre GL JS adapter to provide drawing and geometry editing functionality to the map
- [maplibre-gl-multiple-color-draw](<https://github.com/kashishgadhiya/maplibre-gl-multiple-color-draw>) - Draw lines, polygons, and freehand shapes with individual colors per feature. Includes React hook, TypeScript support, and GeoJSON export. [npm](<https://www.npmjs.com/package/maplibre-gl-multiple-color-draw>) · [demo](<https://maplibre-gl-multiple-color-draw-dem.vercel.app/>)
- [maplibregl-minimap](<https://github.com/JabSYsEmb/maplibregl-minimap>) - Customizable minimap Control for maplibregl.
- [maplibre-gl-style-flipper](<https://github.com/geoglify/maplibre-gl-style-flipper>) - A custom control to switch between different map styles in MapLibre GL JS.
- [maplibre-pegman](<https://github.com/rezw4n/maplibre-pegman>) - Plugin that integrates Google Street View into any MapLibre map.
- [maplibre-transition](<https://github.com/popkinj/maplibre-transition>) - A plugin for smooth transitions between map styles. [demo](<https://popkinj.github.io/maplibre-transition/>)
- [maplibre-gl-layers-control](<https://github.com/mvt-proj/maplibre-gl-layers-control>) - It allows to show/hide layers, opacity control and integration with legends.
- [maplibre-label-callout](<https://github.com/leoneljdias/maplibre-label-callout>) - Labels with connector lines for MapLibre GL JS. [demo](<https://leoneljdias.github.io/maplibre-label-callout/demo/>) · [npm](<https://www.npmjs.com/package/@leoneljdias/maplibre-label-callout>)
- [maplibre-ui-translations](<https://github.com/spwoodcock/maplibre-ui-translations>) - Community translations for the default MapLibre UI.

## Geocoding &amp; Search Plugins

- [mapbox.photon](<https://github.com/watergis/mapbox.photon>) - Adds a control to provide a geocoding feature from Photon API.
- 💙 [maplibre-gl-geocoder](<https://github.com/maplibre/maplibre-gl-geocoder>) - Adds a geocoder control.
- [maplibre-search-box](<https://github.com/stadiamaps/maplibre-search-box>) - Adds a control for searching for places using Stadia Maps.
- [maptiler-geocoding-control](<https://github.com/maptiler/maptiler-geocoding-control>) - Adds a geocoding control for searching for places using MapTiler API. [docs](<https://docs.maptiler.com/sdk-js/modules/geocoding/>)

## Map Rendering Plugins

- 💙 [MapLibre GL Leaflet](<https://github.com/maplibre/maplibre-gl-leaflet>) - A plugin for rendering MapLibre styles in [Leaflet](<https://leafletjs.com>).
- [Americana Shield Renderer](<https://www.npmjs.com/package/@americana/maplibre-shield-generator>) – Renders route markers for highway systems around the world.
- [deck.gl](<https://github.com/visgl/deck.gl>) - Adds advanced WebGL visualization layers.
- [Diplomat](<https://github.com/osm-americana/diplomat/>) – Automatically localizes the map into the user’s language.
- [flowmap.blue](<https://github.com/ilyabo/flowmap.blue>) - Render a geographic flow map visualization from a spreadsheet published on Google Sheets.
- [H3J / H3T](<https://github.com/INSPIDE/h3j-h3t>) - Light [H3](<https://h3geo.org/>) data formats for client side geometry generation and rendering using MapLibre GL JS
- [L7-maplibre-gl](<https://github.com/antvis/l7>) - Adds large-scale WebGL-powered geospatial data visualization framework to maplibre-gl.[demo](<https://l7.antv.antgroup.com/examples/map/map/#maplibre>)
- [mapbox-gl-language](<https://github.com/mapbox/mapbox-gl-language/>) - Automatically localizes the map into the user’s language.
- [mapbox-gl-rtl-text](<https://github.com/mapbox/mapbox-gl-rtl-text>) - Adds right-to-left text support.
- [maplibre-gl-complex-text](<https://github.com/wipfli/maplibre-gl-complex-text>) - Adds support for some complex scripts including Khmer and Devanagari.
- [mapbox-gl-traffic](<https://github.com/mapbox/mapbox-gl-traffic>) - Hide and show traffic layers on your map with an optional toggle button.
- [maplibre-adiff-viewer](<https://github.com/OSMCha/maplibre-adiff-viewer/>) – Visualizes OpenStreetMap augmented diffs.
- [maplibre-contour](<https://github.com/onthegomap/maplibre-contour>) - Renders contour lines from raster DEM tiles in MapLibre GL JS.
- [maplibre-gl-dates](<https://github.com/OpenHistoricalMap/maplibre-gl-dates/>) – Filters a time-enabled map by date. Optimized for OpenHistoricalMap vector tiles.
- [maplibre-gl-vector-text-protocol](<https://github.com/jimmyrocks/maplibre-gl-vector-text-protocol>) - Supports `CSV`, `TSV`, `Topojson`, `KML`, `GPX`, and `TCX` formats using the addProtocol feature.
- [geogrid-maplibre-gl](<https://github.com/falseinput/geogrid-maplibre-gl>) - Renders customizable graticule (geographic grid).
- [maplibre-gleo](<https://gitlab.com/IvanSanchez/maplibre-gleo>) - Adds symbols using the "gleo" WebGL map rendering library.
- [maplibre-image-plugins](<https://github.com/lucaswoj/maplibre-image-plugins>) - Animated icons from GIF, animated WebP, APNG, or AVIF files, plus a pulsing location dot, rendered on the GPU via `StyleImageWebGLData`. [demo](<https://lucaswoj.github.io/maplibre-image-plugins/>)
- [maplibre-contourmap](<https://github.com/AbelVM/maplibre-contourmap>) - Renders contour lines from vector sources in MapLibre GL JS. [demo](<https://abelvm.github.io/maplibre-contourmap/example/>)
- [maplibre-three-plugin](<https://github.com/dvt3d/maplibre-three-plugin>) - A bridge plugin that cleverly connects MapLibre GL JS with Three.js, enabling developers to implement 3D rendering and animation on maps.
- [maplibre-gl-teritorio-cluster](<https://github.com/teritorio/maplibre-gl-teritorio-cluster>) - Clustering plugin implementing a MapLibre GL Layer with configurable HTML clustering renderer and support of events.
- [maplibre-glass-css](<https://github.com/corb555/maplibre-glass-css>) - A glass UI theme for standard MapLibre controls.
- [maplibre-merge-protocol](<https://github.com/indus/maplibre-merge-protocol>) - A custom protocol for merging geometry with attributes from multiple tilesets in MapLibre. [demo](<https://maplibre-merge-protocol.js.org/>)
- [backproj/maplibre-proj](<https://github.com/willcohen/backproj>) - Display MapLibre maps in any CRS supported by [PROJ](<https://proj.org/>), using [proj-wasm](<https://github.com/willcohen/clj-proj>) (PROJ transpiled to WebAssembly). [demo](<https://willcohen.github.io/backproj/>)
- [maplibre-gl-mask-plugin](<https://codeberg.org/mguihal/maplibre-gl-mask-plugin>) - Renders a mask around a geojson feature in MapLibre GL JS. [demo](<https://mguihal.codeberg.page/maplibre-gl-mask-plugin>)
- [maplibre-gl-lanes](<https://github.com/c0nsumer/maplibre-gl-lanes>) - Draws routes that share paths as ordered parallel lanes, the transit-map look, with crossing minimization, smooth junctions, and constant pixel spacing at every zoom. [demo](<https://c0nsumer.github.io/maplibre-gl-lanes/>)

## Layer Types Plugins

- [Allmaps Maplibre](<https://github.com/allmaps/allmaps/tree/main/packages/maplibre>) - A package for displaying georeferenced [IIIF](<https://iiif.io/>) images by loading [Georeference Annotations](<https://preview.iiif.io/api/georef/extension/georef/>) and using WebGL to transform and overlay the images on their correct geographical position.
- [mapbox-exif-layer](<https://github.com/zwang-geog/mapbox-exif-layer>) - Custom layers for wind particles from JPEG or GeoTIFF, smooth non-blocky weather display, and small whole-file GeoTIFF preview; MapLibre globe supported. [demo](<https://www.mapbox-exif-layer.com/maplibre-gl-js-globe-projection-demo/index.html>)
- [mapbox-gl-arcgis-featureserver](<https://github.com/rowanwins/mapbox-gl-arcgis-featureserver>) - A library for retrieving features from an ArcGIS FeatureServer or MapServer. This library makes tiled requests rather than simply requesting every feature.
- [mapbox-gl-esri-sources](<https://github.com/frontiersi/mapbox-gl-esri-sources>) - A library for making it easier to use Esri services in MapLibre GL JS. Supports Esri Map Services (dynamic &amp; tiled), Esri Vector Tile Services &amp; Esri Vector Basemap Styles.
- [esri-gl](<https://github.com/muimsd/esri-gl>) - A module for making it easier to use Esri services in MapLibre GL JS, alternative to esri-leaflet for WebGL.
- [mapbox-gl-flatgeobuf](<https://github.com/rowanwins/mapbox-gl-flatgeobuf>) - A library for retrieving features from FlatGeobuf file using a tiled approach. Compatible with MapLibre GL JS and Mapbox GL JS.
- [mapbox-gl-ogc-feature-collection](<https://github.com/mkeller3/mapbox-gl-ogc-feature-collection>) - A small package for requesting geojson from an OGC Feature API endpoint to serve tiles in MapBox/MapLibre.
- [maplibre-cog-protocol](<https://github.com/geomatico/maplibre-cog-protocol>) - Custom protocol to load Cloud Optimized GeoTIFFs (COG) in Maplibre GL JS.
- [maplibre-gl-lidar](<https://github.com/opengeos/maplibre-gl-lidar>) - A MapLibre GL JS plugin for rendering LIDAR point cloud data.
- [maplibre-landmarks](<https://github.com/am2222/maplibre-landmarks>) - 3D [Open Landmarks](<https://open-landmarks.benmaps.fr>) models, real roof shapes, trees, volumetric fog and clouds, rain, snow, animated water and power lines, rendered with [three.js](<https://threejs.org>) as custom layers. [demo](<https://am2222.github.io/maplibre-landmarks/demo/>)
- [maplibre-google-maps](<https://github.com/traccar/maplibre-google-maps>) - A library for integrating Google Maps as raster layers into MapLibre GL JS. It uses the new Google Map Tiles API.
- [ol-maplibre-layer](<https://github.com/geoblocks/ol-maplibre-layer>) - Render a MapLibre GL JS map as an [OpenLayers](<https://openlayers.org/>) layer.
- [PMTiles for MapLibre](<https://github.com/protomaps/PMTiles/tree/main/js>) - A library that uses addProtocol to read PMTIles. a single-file format for hosting tilesets without a server or API, just S3 or other storage providers.
- [s57-parser](<https://github.com/devladpopov/s57-parser/tree/master/packages/maplibre>) - Parses S-57 and S-101 nautical charts (ENC `.000` files) in the browser and adds them to the map as GeoJSON layers or as an S-52 styled canvas layer. [demo](<https://devladpopov.github.io/s57-parser/maplibre.html>)
- [@naivemap/maplibre-gl-image-layer](<https://www.naivemap.com/map-gl-layers/api/maplibre-gl-image-layer/>) - A versatile layer for displaying georeferenced images with various projections (using proj4js) on the map.
- [veritiles](<https://github.com/guillaumemichel/veritiles>) - Verified [PMTiles](<https://github.com/protomaps/PMTiles>) from untrusted static hosting [demo](<https://guillaumemichel.github.io/ipfs-pmtiles-demo/>)

## Utility Libraries

- [@honua/sdk-js](<https://github.com/honua-io/honua-sdk-js>) - Typed multi-protocol data client for MapLibre: query ArcGIS/Esri GeoServices, OGC API, WFS, WMS, OData, and GeoParquet services and mount results as MapLibre sources, plus an ArcGIS-to-MapLibre migration codemod. [demo](<https://honua-io.github.io/honua-sdk-js/guides/quickstart.html>)
- [expression-jamsession](<https://github.com/mapbox/expression-jamsession/>) - Converts [Mapbox Studio formulas](<https://www.mapbox.com/help/studio-manual-styles/#use-a-formula>) into [expressions](<https://maplibre.org/maplibre-style-spec/expressions/>).
- [mapbox-choropleth](<https://github.com/stevage/mapbox-choropleth>) - Create a choropleth layer from a CSV source and a geometry source.
- [mapbox-gl-layer-groups](<https://github.com/mapbox/mapbox-gl-layer-groups>) - Manages layer groups.
- [mapbox-gl-sync-move](<https://github.com/mapbox/mapbox-gl-sync-move>) - Syncs movement between multiple maps.
- [mapbox-gl-utils](<https://github.com/stevage/map-gl-utils>) - Manage layers, sources, and properties with syntactic sugar and convenience functions.
- [Styl](<https://github.com/navidnabavi/styl>) - A fast, opinionated linter, validator, and formatter for Mapbox GL and MapLibre GL style JSON files, written in Rust
- [map-gl-offline](<https://github.com/muimsd/map-gl-offline>) - A TypeScript-compatible npm package for MapLibre GL JS that enables comprehensive offline storage and usage of vector/raster tiles.
- [maplibregl-mapbox-request-transformer](<https://github.com/rowanwins/maplibregl-mapbox-request-transformer>) - This library provides a request transforming function enabling the consumption of MapboxGL Styles in MapLibreGL.
- [maplibregl-theme](<https://github.com/lhapaipai/maplibre-theme>) - Custom themes for your MapLibre GL Web app. [Theme customizer](<https://maplibre-theme.pentatrion.com/>)
- [simplespec-to-gl-style](<https://github.com/mapbox/simplespec-to-gl-style>) - Converts GeoJSON styles with [simplestyle-spec](<https://github.com/mapbox/simplestyle-spec/>) to a MapLibre GL Style.
- [turf](<https://turfjs.org/>) - provides advanced geospatial analysis tools.
- [Maperture](<https://github.com/stamen/maperture>) - A web application for comparing webmap styles.
- [geojson-map-fit-mercator](<https://github.com/tjdavey/geojson-map-fit-mercator>) - Finds the optimal bearing, zoom and center point for fitting a set of GeoJSON features in a Mapbox GL or MapLibre GL viewport. [demo](<https://tjdavey.github.io/geojson-map-fit-mercator/#preview>)
- [maplibre-legend](<https://github.com/mvt-proj/maplibre-legend>) - Legends generator from a style.json developed in Rust. [crate](<https://crates.io/crates/maplibre-legend>)
- [maplibre-gl-video-export](<https://github.com/bjperson/maplibre-gl-video-export>) - Export map animations to videos (WebM VP9, MP4 H.264) with preset animations, waypoints, and geographic constraints.
- [mapbox-expr-lang](<https://github.com/amine-a11/mapbox-expr-lang>) - A small language that compiles readable code into Mapbox/MapLibre expressions. [playground](<https://amine-a11.github.io/mapbox-expr-lang/playground>)
- [Stipple](<https://github.com/francoisbl/stipple>) - A library with an [interactive playground](<https://stipple.pages.dev/>) for generating hatches, dots, grids, crosshatches, text and custom SVG fill patterns for MapLibre GL JS.

## Development Tools Plugins

- [mapbox-gl-framerate](<https://github.com/mapbox/mapbox-gl-framerate>) - A frame rate control to evaluate map rendering performance.
- [mapbox-gl-fps](<https://github.com/MazeMap/mapbox-gl-fps>) - A frames-per-seconds GUI control and measurer with statistic report output.
- [mapgrab](<https://mapgrab.github.io/>) - A tool for creating end-to-end (e2e) map tests using popular testing frameworks like Playwright, Cypress, and Selenium.
- [maplibre-gl-inspect](<https://github.com/acalcutt/maplibre-gl-inspect>) - Adds an inspect control to view vector source features and properties.

## Framework Integrations

#### [Angular](<https://angular.dev/>)

- 💙 [ngx-maplibre-gl](<https://github.com/maplibre/ngx-maplibre-gl>) - Angular binding with hosted demos at [maplibre.org/ngx-maplibre-gl/demo](<https://maplibre.org/ngx-maplibre-gl/demo/>)

#### [Astro](<https://astro.build>)

- [maps-withastro](<https://github.com/roblabs/maps-withastro>) - Bring Leaflet &amp; MapLibre maps directly into Astro.

#### [Echarts](<https://echarts.apache.org/en/index.html>)

- [echartslayer](<https://github.com/lzxue/echartLayer>) - Provides an echarts integration.
- [@naivemap/maplibre-gl-echarts-layer](<https://www.naivemap.com/map-gl-layers/api/maplibre-gl-echarts-layer/>) - Integrate Apache ECharts' Lines and Scatter charts.

#### [Elm](<https://elm-lang.org>)

- [elm-mapbox](<https://package.elm-lang.org/packages/gampleman/elm-mapbox/latest/>) - Provides an Elm integration.

#### [Ember](<https://emberjs.com>)

- [ember-mapbox-gl](<https://github.com/kturney/ember-mapbox-gl>) - Provides an Ember integration.

#### [Jekyll](<https://jekyllrb.com/>)

- [jekyll-maplibre](<https://github.com/rriemann/jekyll-maplibre>) - Provides a Jekyll integration (plug-in).

#### [React](<https://react.dev/>)

- [react-map-gl](<https://visgl.github.io/react-map-gl/docs/get-started#using-with-a-compatible-fork>) - A suite of React components for mapbox-gl, maplibre-gl or compatible libraries
- [react-map-components-maplibre](<https://github.com/mapcomponents/react-map-components-maplibre>) - A React component framework for declarative GIS application development with demos in their [showcase](<https://catalogue.mapcomponents.org/>) and [docs](<https://mapcomponents.github.io/react-map-components-maplibre>)
- [maplibre-react-components](<https://maplibre-react-components.pentatrion.com/>) - Lightweight MapLibre only binding for React.
- [react-mapbox-gl](<https://github.com/alex3165/react-mapbox-gl>) - Provides a React integration.

#### [Svelte](<https://svelte.dev>)

- [sveltekit-maplibre-boilerplate](<https://github.com/watergis/sveltekit-maplibre-boilerplate>) - A preconfigured template repository develop a MapLibre application in svelte/sveltekit.
- [svelte-maplibre](<https://github.com/dimfeld/svelte-maplibre>) - Provides a Svelte integration.
- [svelte-maplibre-components](<https://github.com/watergis/svelte-maplibre-components>) - A set of maplibre plugins to integrate with svelte/sveltekit. The repository consists of various useful plugins such as export plugin, legend plugin, measure plugin, attribute table plugin, tour plugin, etc.
- [svelte-maplibre-gl](<https://github.com/MIERUNE/svelte-maplibre-gl>) - Svelte (v5) component wrapping MapLibre GL JS to provide declarative handling of GL JS through familiar API.

#### [VueJS](<https://vuejs.org/>)

- [@indoorequal/vue-maplibre-gl](<https://github.com/indoorequal/vue-maplibre-gl>) - Vue 3 plugin for maplibre-gl-js
- [LibreGL](<https://github.com/themustafaomar/libregl>) - A powerful Vue library for Maplibre with an intuitive API, and a collection of highly customizable components.

#### [Webtoolkit](<https://www.webtoolkit.eu/wt>)

- [wtMapbox](<https://github.com/yvanvds/wtMapbox>) - Provides a Webtoolkit integration.

#### Vanilla JS

- [plotly.js](<https://plotly.com/javascript/maps/>) - Create analytical geospatial figures with MapLibre GL JS in javascript.
