An Open-Source JavaScript Library for Mobile-Friendly Interactive Maps

Notable Leaflet Plugins

While Leaflet is meant to be as lightweight as possible, and focuses on a core set of features, an easy way to extend its functionality is to use third-party plugins. Thanks to the awesome community behind Leaflet, there are lots of nice plugins to choose from.

Layers and Overlays

Plugin Description Maintainer
Leaflet.FreeDraw Zoopla inspired freehand polygon creation using Leaflet.js and D3. Wildhoney
Leaflet.ellipse Leaflet.ellipse place ellipses on map by specifying center point, semi-major axis, semi-minor axis, and tilt degrees from west. JD Fergason
Leaflet.plotter leaflet-plotter allows you to create routes using a leaflet powered map. You can click on the mid-points to create a new, draggable point. Nathan Mahdavi
Leaflet.markercluster Beautiful, sophisticated, high performance marker clustering solution with smooth animations and lots of great features. Recommended! Dave Leaver
Leaflet.label Adds text labels to map markers and vector layers. Jacob Toye
RaphaelLayer Allows you to use Raphael as a layer on a Leaflet map for advanced animations and visualizations. Dynamic Methods
Overlapping Marker Spiderfier Deals with overlapping markers in a Google Earth-inspired way by gracefully springing them apart on click. George MacKerron
TileLayer.BoundaryCanvas Allows you to draw tile layers with arbitrary polygonal boundary. HTML5 Canvas is used for rendering. Alexander Parshin
MaskCanvas Canvas layer that can be used to visualize coverage. Dominik Moritz
HeatCanvas Simple heatmap api based on HTML5 canvas. Sun Ning
heatmap.js JavaScript Library for HTML5 canvas based heatmaps. Its Leaflet layer implementation supports large datasets because it is tile based and uses a quadtree index to store the data. Patrick Wied
Leaflet divHeatmap Lightweight and versatile heatmap layer based on CSS3 and divIcons Daniele Piccone
WebGL Heatmap High performance Javascript heatmap plugin using WebGL. Benjamin J DeLong
Leaflet.MultiTileLayer Allows to compose a TileLayer from several tile sources. Each source is active only on a defined set of zoomlevels. Mattias Bengtsson
Leaflet.AnimatedMarker Animate a marker along a polyline. Aaron Ogle
Leaflet-semicircle Adds functionality to L.Circle to draw semicircles. Jieter
Leaflet.FunctionalTileLayer Allows you to define tile layer URLs using a function, with support for jQuery deferreds. Ishmael Smyrnow
Leaflet.geoCSV Leaflet plugin for loading a CSV file as geoJSON layer. Iván Eixarch
Leaflet.PolylineDecorator Allows you to draw patterns (like dashes, arrows or evenly spaced Markers) along Polylines or coordinate paths. Benjamin Becquet
Leaflet.Sprite Use sprite based icons in your markers. Calvin Metcalf
Leaflet.BounceMarker Make a marker bounce when you add it to a map. Maxime Hadjinlian
Leaflet.SmoothMarkerBouncing Smooth animation of marker bouncing for Leaflet. Alexei KLENIN
Leaflet.TextPath Allows you to draw text along Polylines. Mathieu Leplatre
Leaflet.Awesome-Markers Colorful, iconic & retina-proof markers based on the Font Awesome icons/Twitter Bootstrap icons Lennard Voogdt
Leaflet Data Visualization Framework New markers, layers, and utility classes for easy thematic mapping and data visualization. Scott Fairgrieve
TileLayer.Grayscale A regular TileLayer with grayscale makeover. Ilya Zverev
TileLayer.GeoJSON A TileLayer for GeoJSON tiles. Glen Robertson
TileLayer.Zoomify A TileLayer for Zoomify images. Bjørn Sandvik
TileLayer.DeepZoom A TileLayer for DeepZoom images. Al Farisi, Indokreatif Teknologi
TileLayer.Gigapan A TileLayer for Gigapan images. Dan Sherman
TileLayer.Cordova For use with Cordova/Phonegap, adds tile caching onto local device storage, switching between offline and online mode. Greg Allensworth
TileLayer.PouchDBCached Allows all Leaflet TileLayers to cache into PouchDB for offline use. Iván Sánchez Ortega, MazeMap
Leaflet.Graticule Draws a grid of latitude and longitude lines. Bjørn Sandvik
Leaflet.SimpleGraticule Draws a grid lines for L.CRS.Simple coordinate system. Andrew Blakey
leaflet-usermarker Plugin for plotting a marker representing a user - or multiple users - on a map, with support for drawing an accuraccy circle. Can be seen in action on Longitude.me. Jonatan Heyman
Leaflet.EdgeMarker Plugin to indicate the existence of Features outside of the current view. Gerald Pape
Leaflet.Shapefile Put a shapefile onto your map as a layer. Calvin Metcalf
Leaflet.FileGDB Put an ESRI File GeoDatabase onto your map as a layer. Calvin Metcalf
Leaflet.Terminator Overlay day and night regions on a map. Jörg Dietrich
Leaflet.FeatureSelect Use a configurable centerpoint marker to select any geometry type from a GeoJSON layer. Aaron Ogle
Leaflet.MakiMarkers Create markers using Maki Icons from MapBox. James Seppi
Leaflet.Editable.Polyline Editable polylines: move existing points, add new points and split polylines. Tomo Krajina
leaflet.TileLayer.WMTS Add WMTS (IGN) layering for leaflet. Alexandre Melard
leaflet-omnivore Loads & converts CSV, KML, GPX, TopoJSON, WKT formats for Leaflet. Mapbox
Leaflet.TileLayer.IIP Add support for IIPImage layers in Leaflet. Emmanuel Bertin
Leaflet.ImageTransform Add support of image overlays with arbitrary perspective transformation. Alexander Parshin, Sergey Alekseev
PruneCluster Fast and realtime marker clustering library. Antoine Pultier
Leaflet.Indoor Create indoor maps. Christopher Baines
Leaflet.Geodesic Draw geodesic (poly)lines. A geodesic line is the shortest path between two given positions on the earth surface. and You can also calculate the exact distance between two given points on the map. Henry Thasler
Leaflet.LineExtremities Show symbols at the extremities of polylines, using SVG markers. Frédéric Bonifas
Leaflet.VectorMarkers Vector SVG markers for Leaflet, with an option for Font Awesome/Twitter Bootstrap icons. Mathias Schneider
Leaflet.MovingMarker Allow to move markers along a polyline with custom durations. Ewoken
Leaflet Realtime Put realtime data on a Leaflet map: live tracking GPS units, sensor data or just about anything. Per Liedman
Leaflet-IIIF A IIIF (International Image Interoperability Framework) viewer for Leaflet. See the demo. Jack Reed
Leaflet.D3SvgOverlay SVG overlay class for using with D3 library. Supports zoom animation and scaling without need to redraw the layer. Kirill Zhuravlev
Leaflet.TransitionedIcon Transition in/out markers with CSS3 transitions. It supports jitter for staggering markers into view to prevent visual overload. See the demo. Brian Reavis
Leaflet Layer Overpass Easily include data from the overpass api. kartenkarsten
Leaflet.pattern Add support for pattern fills on Paths. Tyler Eastman

Services, Providers and Formats

Plugin Description Maintainer
Spectrum4Leaflet Tools for using Spectrum Spatial Server services with leaflet. This plugin supports: map service, tile service, feature service. It has layers, legend and feature controls. SVoyt, ESTI MAP
Proj4Leaflet Proj4js integration plugin, allowing you to use all kinds of weird projections in Leaflet. Kartena
Plugins by Pavel Shramov A set of plugins for: GPX, KML layers; Bing tile layer; Google and Yandex layers (implemented with their APIs), permalink and distance measurement controls. Pavel Shramov, Bruno B
cartodb-leaflet Official CartoDB plugin for Leaflet. Vizzuality
Leaflet Vector Layers Allows to easily create vector layers from a number of geo web services, such as ArcGIS Server, Arc2Earth, GeoIQ, CartoDB and GIS Cloud. Jason Sanford
leaflet-tilejson Adds support for the TileJSON specification to Leaflet. Per Liedman, Kartena
leaflet-providers Contains configurations for various free tile providers — OSM, OpenCycleMap, MapQuest, Stamen, Esri, etc. leaflet-extras members
azgs-leaflet A set of small plugins for Leaflet, including WFS-GeoJSON layer with filtering, a hover control for GeoJSON, and an Esri tile layer. AZGS
Leaflet.encoded Use encoded polylines in Leaflet. Jieter
Leaflet.Pouch Use PouchDB to sync CouchDB data to local storage (indexedDB), to just add couchDB data or as just a less confusing implementation of indexedDB. Calvin Metcalf
Leaflet Ajax Add GeoJSON data via ajax or jsonp. Calvin Metcalf
Leaflet GPX GPX layer, targeted at sporting activities by providing access to information such as distance, moving time, pace, elevation, heart rate, etc. Maxime Petazzoni
Wicket A modest library for translating between Well-Known Text (WKT) and Leaflet geometry objects (e.g. between L.marker() instances and "POINT()" strings). K. Arthur Endsley
Leaflet.dbpediaLayer A layer with Points of interest from Wikipedia - loaded via ajax from DBpedia's SPARQL endpoint. Kr1
Leaflet-2gis Adds support for 2GIS tile layer Eugene Mikhalev
Leaflet.KoreanTmsProviders Contains configurations for various (South) Korean tile providers — Daum, Naver, VWorld, etc. Seong Choi
Leaflet.ChineseTmsProviders Contains configurations for various Chinese tile providers — TianDiTu, MapABC, GaoDe, etc. Tao Huang
Esri Leaflet A set of tools for using ArcGIS services with Leaflet. Support for map services, feature layers, ArcGIS Online tiles and more. Patrick Arlt
Leaflet.geojsonCSS Geojson CSS implementation for Leaflet. Alexander Burtsev
leaflet.wms Enhanced WMS support for Leaflet, including single-tile/untiled layers, shared WMS sources, and layer identify via GetFeatureInfo. S. Andrew Sheppard
(HEI Geo)
Leaflet.bpg TileLayer with .bpg image format decoding. Andrzej Zaborowski

Geocoding (Address Lookup)

Plugin Description Maintainer
Leaflet GeoSearch Small geocoding plugin that brings address searching/lookup (aka geosearching) to Leaflet.
Comes with support for Google, OpenStreetMap Nominatim, Bing, Esri and Nokia. Easily extensible.
Stephan Meijer
Leaflet Control OSM Geocoder A simple geocoder that uses OpenstreetMap Nominatim to locate places by address. Karsten Hinz
Leaflet Control Bing Geocoder A simple geocoder control that uses Bing to locate places. Samuel Piquet
Leaflet Control Geocoder A clean and extensible control that uses Nominatim (OSM) or Bing to locate places. Easy to adapt for other providers. Per Liedman
Leaflet GeoIP Locator A simple plugin that allows finding the approximate location of IP addresses and map centering on said location. Jakub Dostal
Esri Leaflet Geocoder A geocoding control with suggestions powered by the ArcGIS Online geocoder. Patrick Arlt
Leaflet.OpenCage.Search A search plugin plugin that uses OpenCage Data's geocoding API. The OpenCage team
Leaflet.Geonames A lightweight geocoding control powered by GeoNames. Demo Brendan Ward
Plugin Description Maintainer
Leaflet Routing Machine Control for route search between waypoints, displaying itinerary and alternative routes. Currently uses OSRM to search routes. Per Liedman
Leaflet.Routing Leaflet controller and interface for routing paths between waypoints using any user provided routing service. Norwegian Trekking Association
Route360° Route360° visualizes the area which is reachable from a set of starting points in a given time and gives detailed routing information (walk, bike, car and public transportation) to targets. Motion Intelligence GmbH

Controls and Interaction

Plugin Description Maintainer
Leaflet.AreaSelect A fixed positioned, resizable rectangle for selecting an area on the map. Jonatan Heyman
Leaflet.draw Enables drawing features like polylines, polygons, rectangles, circles and markers through a very nice user-friendly interface with icons and hints. Recommended! Jacob Toye
L.Sleep Avoid unwanted scroll capturing. Demo atstp
Leaflet.utfgrid Provides a utfgrid interaction handler for leaflet a very small footprint. Dave Leaver
L.EasyButton In one line, add a Font Awesome control button with attached click events. Demo atstp
Leaflet.EditableHandlers A set of plugins that includes circle editing, measuring tool, and label for polygon sides. Kartena
L.LocationShare Allow users to send and receive a marker with a message. Demo atstp
Leaflet.Pancontrol A simple panning control. Kartena
Leaflet.zoomslider A zoom slider control. Kartena
Leaflet.Locate A customizable locate control. Dominik Moritz
Leaflet.fullscreen A fullscreen button control by mapbox mapbox
leaflet.zoomfs A fullscreen button control. Eli Dupuis
leaflet.fullscreen Another fullscreen button control but for modern browsers, using HTML5 Fullscreen API. Bruno B
leaflet-search A control for search Markers/Features location by custom property in LayerGroup/GeoJSON. Support AJAX/JSONP, Autocompletion and 3rd party service Stefano Cudini
leaflet-fusesearch A control that provides a panel to search features in a GeoJSON layer using the lightweight fuzzy search Fuse.js Antoine Riche
leaflet-locationfilter A draggable/resizable rectangle for selecting an area on the map. Robert Kajic
Leaflet.MiniMap A small minimap showing the map at a different scale to aid navigation. Robert Nordan
Leaflet.Rrose A Leaflet Plugin for Edge Cases. For use when you want popups on mouseover, not click, and you need popup tips to reorient as you get close to the edges of your map. Eric Theise
Leaflet.EditInOSM Add a control with links to open the current map view on main OSM editors. Yohan Boniface
Leaflet.Spin Shows a nice spinner on the map using Spin.js, for asynchronous data load, like with Leaflet Ajax. Mathieu Leplatre
Leaflet.RestoreView Stores and restores map view using localStorage. Mathieu Leplatre
Leaflet.FileLayer Loads files (GeoJSON, GPX, KML) into the map using the HTML5 FileReader API (i.e. locally without server). Mathieu Leplatre
Leaflet.Snap Enables snapping of draggable markers to polylines and other layers. Mathieu Leplatre
Leaflet Time-Slider The Leaflet Time-Slider enables you to dynamically add and remove Markers on a map by using a JQuery UI slider Dennis Wilhelm
Leaflet.RevealOSM Very simple but extendable Leaflet plugin to display OSM POIs data on map click. Yohan Boniface
Leaflet.MousePosition A simple MousePosition control that displays geographic coordinates of the mouse pointer, as it is moved about the map Ardhi Lukianto
Leaflet.SelectLayers a Leaflet plugin which adds new control to switch between different layers on the map. New control replaces L.Control.Layers radio button panel with select tag. vogdb
Leaflet.StyledLayerControl A Leaflet plugin that implements the management and control of layers by organization into categories or groups. Davi Custodio
Leaflet.Coordinates A simple Leaflet plugin viewing the mouse LatLng-coordinates. Also views a marker with coordinate popup on userinput. Felix Bache
Leaflet.Elevation A Leaflet plugin to view interactive height profiles of GeoJSON lines using d3. Felix Bache
Leaflet.Sync Synchronized view of two maps. Bjørn Sandvik
Leaflet.GroupedLayerControl Leaflet layer control with support for grouping overlays together. Ishmael Smyrnow
Leaflet.BorderPan A Leaflet plugin to pan by clicking on map borders. Sebastián Lara
Leaflet.TileLegend Create illustrated and interactive legends for your background layers. Yohan Boniface
LeafletPlayback Play back time-stamped GPS Tracks synchronized to a clock. Nicholas Hallahan
Leaflet.loading A simple control that adds a loading indicator as tiles and other data are loaded. Eric Brelsford
Leaflet.viewcenter A simple control that adds a button to change view and zoom to predefinied values in options. Dariusz Pawlak
Leaflet.contextmenu A context menu for Leaflet. Adam Ratcliffe
Leaflet.MeasureControl A simple tool to measure distances on maps (*relies on Leaflet.Draw*). Makina Corpus
Leaflet.OverIntent Adds a new event ``mouseintent``, that differs from ``mouseover`` since it reflects user intentions to aim a particular layer. Mathieu Leplatre
Leaflet.AlmostOver Trigger mouse events when cursor is "almost" over a layer. Mathieu Leplatre
Leaflet Control Order Layers Adds the ability to change overlay order in the layers control. Michael Salgado
Leaflet.layerscontrol-minimap Extends the default Leaflet layers control with synced minimaps. Jieter
leaflet-sidebar A responsive sidebar plugin. Tobias Bieniek
sidebar-v2 Another responsive sidebar plugin. This time with tabs! Tobias Bieniek
leaflet-zoom-min Adds a button to the zoom control that allows you to zoom to the map minimum zoom level in a single click. Alan Shaw
Leaflet.MagnifyingGlass Allows you to display a small portion of the map at another zoom level, either at a fixed position or linked to the mouse movement, for a magnifying glass effect. Benjamin Becquet
Leaflet.OpacityControls Simple Leaflet controls to adjust the opacity of a map layer. Jared Dominguez
Leaflet.StyleEditor Enables editing the styles of features (lines, polygons, etc) and markers with a GUI. Dennis Wilhelm
Leaflet.UniformControl Leaflet layer control with stylable checkboxes and radio buttons. Chris Calip
Leaflet.SimpleMarkers A light-weight Leaflet plugin for adding and deleting markers. Jared Dominguez
Leaflet Panel Layers Leaflet Control Layers extended for group of layers and icons legend Stefano Cudini
Leaflet Categorized Layers Leaflet Control Layers extended for groups of categorized layers Robbie Trencheny
Leaflet Navigation Toolbar Leaflet control for simple back, forward and home navigation. David C
Leaflet LimitZoom Plugins to limit available zoom levels to a given list, either by restricting zooming or by interpolating tiles. Ilya Zverev
Leaflet Coordinates Control Captures mouseclick and displays its coordinates with easy way to copy them. Michal Zimmermann
Leaflet GameController Interaction handler providing support for gamepads. Antoine Pultier
Leaflet.MeasureAreaControl Control for measuring element's area. Ondrej Zvara
Leaflet.twofingerZoom Interaction handler for touch devices enabling zooming out with a two finger tap. Adam Ratcliffe
Leaflet Control Compass A leaflet control plugin to build a simple rotating compass Stefano Cudini
Leaflet.Editable Lightweight fully customisable and controlable drawing/editing plugin. Yohan Boniface
Leaflet.AccuratePosition Leaflet.AccuratePosition aims to provide a desired device location accuracy. Michael Schmidt-Voigt
Leaflet Locationlist A control to jump between predefined locations and zooms. Ivan Ignatyev
Leaflet.defaultextent A control that returns to the original start extent of the map. Similar to the HomeButton widget. Alex Nguyen
Leaflet.buffer Enables buffering of shapes drawn with Leaflet.draw. Jonathan Skeate
Leaflet.Bookmarks Control for adding and navigating between user-created bookmarks on the map. Alexander Milevski
Leaflet.MapPaint Bitmap painting plugin designed for touch devices. Antoine Pultier
Leaflet.ShowAll A control that can show a predefined extent while saving the current one so it can be jumped back to. Mor Yariv
Leaflet.timeline Display arbitrary GeoJSON on a map with a timeline slider and play button. Jonathan Skeate
Leaflet.ZoomBox A lightweight zoom box control: draw a box around the area you want to zoom to. Demo Brendan Ward
L.Control.LineStringSelect Fast LineString(polyline) partial selection tool: select a stretch between two points in a complex path. Demo Alexander Milevski
Leaflet.TimeDimension Add time dimension capabilities on a Leaflet map. Demos ICTS SOCIB
Leaflet.Liveupdate Periodically ('live') update something on a map (Demo) Martijn Grendelman
Leaflet.Messagebox Display a temporary text message on a map (Demo) Martijn Grendelman
Leaflet.Path.Drag Drag handler and interaction for polygons and polylines (Demo) Alexander Milevski
Leaflet.NACCoordinates Displays NAC coordinate of the mouse pointer on mouse move (Demo) Mahmood Dehghan
Leaflet.zoomhome Zoom control with a home button for resetting the view (Demo) Florian Brucker
leaflet-measure Coordinate, linear, and area measure control for Leaflet maps LJA GIS
Leaflet-History Track history of map movements and zoom locations similar to a browser. Chris Scott
Leaflet GeoJSON List Leaflet Control for listing GeoJSON properties in a interactive menu(Demo). Stefano Cudini

Other Plugins and Libraries

Plugin Description Maintainer
OSM Buildings Amazing JS library for visualizing 3D OSM building geometry on top of Leaflet. Jan Marsch
Maps Marker Pro A WordPress plugin that enables users to pin, organize and share their favorite places and tracks through their WordPress powered site. Robert Harm
leaflet-hash Plugin for persisting map state and browsing history through the URL hash. Michael Lawrence Evans
arc.js A JS library for drawing great circle routes that can be used with Leaflet. Dane Springmeyer
Leaflet.Storage Create/update/delete Map, Marker, Polygon, Polyline... and expose them for backend storage with an API. Yohan Boniface
Leaflet.CSS Add the main Leaflet CSS files (or any css) from within JavaScript, be gone conditional comments. Calvin Metcalf
Leaflet.LayerIndex An efficient spatial index for features and layers, using RTree.js. Mathieu Leplatre
Leaflet-pip Simple point in polygon calculation using point-in-polygon. Tom MacWright
Leaflet.GeometryUtil A collection of utilities for Leaflet geometries (linear referencing, etc.) Benjamin Becquet, Mathieu Leplatre
Leaflet.i18n Internationalization for Leaflet plugins. Yohan Boniface
Leaflet.print Implements the Mapfish print protocol allowing a Leaflet map to be printed using either the Mapfish or GeoServer print module. Adam Ratcliffe
Leaflet-easyPrint A simple leaflet plugin which adds an icon to print the map. The resulting print page will strip ot the other content on the page and only print the leaflet map div. Rowan Winsemius
Leaflet-active-area This plugin allows you to use a smaller portion of the map as an active area. All positionning methods (setView, fitBounds, setZoom) will be applied on this portion instead of the all map. Mappy
WordPress Leaflet Map Interactive and flexible shortcode to create multiple maps in posts and pages, and to add multiple markers on those maps. Benjamin J DeLong
MapBBCode-related leaflet plugins Seven plugins for various features, independent of the MapBBCode library. From circular and popup icons to buttons, layer switcher, better search and attribution. Ilya Zverev
Leaflet Yeoman Generator Yeoman generator that scaffolds out a basic Leaflet map application. Moritz Klack
Leaflet LayerConfig Provide a json file or service response with a configuration of layers and markers to automatically set up a Leaflet client. Alexander Nossum
Leaflet ZoomLevel CSS Class Add zoom level css class to map element for easy style updates based on zoom levels Dag Jomar Mersland
Greiner-Hormann Greiner-Hormann algorithm for polygon clipping and binary operations, adapted for use with Leaflet. Alexander Milevski
Maptiks Analytics platform for web maps. Track map activities, layer load times, marker clicks, and more! Sparkgeo

To submit your own Leaflet plugin to this list, just send a pull request with the addition to Leaflet repo’s gh-pages branch (plugins.md file).