Self-hosted service
keplergl/kepler.gl avatar
keplergl/kepler.gl

Kepler.gl: A Redux-Bound Map Renderer for Large Geolocation Datasets

Kepler.gl is a powerful open source geospatial analysis tool for large-scale data sets.

12,091 stars1,961 forksTypeScriptMIT

At a glance

What is it?
Kepler.gl is a web-based geospatial analysis tool that renders millions of points and performs on-the-fly spatial aggregations. It is also a React component tied to Redux, which makes embedding it a specific architectural decision.
Who is it for?
Adopt kepler.gl if you need a browser-based tool that renders millions of points and performs spatial aggregations without a server, and if you are already using React and Redux. Do not adopt it if you want a standalone map viewer with no Redux dependency, or if you are on a Node version older than 20, since the README says older Node versions are not supported or tested when using kepler.gl as a dependency.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 13, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • keplergl/kepler.gl12,091 ★ · +141
Star history
Repository2026-08-022026-11-13
keplergl/kepler.gl12k12.1k

141 Stars in the last 103 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What Kepler.gl Solves and Who It Is For

Kepler.gl addresses the problem of visualizing large geolocation datasets directly in the browser. The README describes it as a data-agnostic, high-performance web-based application for visual exploration. It can render millions of points representing thousands of trips and perform spatial aggregations on the fly. That means you do not need to pre-aggregate data on a server before viewing it. The intended user is a developer who wants to embed a map-based analysis tool into a React application, or an analyst who uses the hosted demo or Jupyter widget. The project is not a general-purpose mapping library; it is a full analysis UI with layers, filters, and charts, built on top of MapLibre GL and deck.gl.

Architecture: Redux State, React Components, and Side Effects

The core design choice is that kepler.gl is both an application and a React component that uses Redux to manage its state and data flow. The README explicitly states that you must mount a reducer, `keplerGlReducer`, into your Redux store. It also uses a built-in task middleware to handle async side effects, which you add to your store via `enhanceReduxMiddleware`. This means kepler.gl is not a drop-in component; it assumes you are already using Redux, or are willing to adopt it. The component instance is identified by an `id` prop, and its state lives under `state.keplerGl[id]`. If you mount the reducer at a non-standard path, you must pass a `getState` function to the component. This architecture gives you fine-grained control over the map state, but it also couples you to Redux's patterns.

Getting It Running: Commands, Tokens, and Reducer Setup

To use kepler.gl as a dependency, you install modules separately. The README shows `npm install --save @kepler.gl/components maplibre-gl` or `yarn add @kepler.gl/components maplibre-gl`, plus loading the MapLibre stylesheet once in your entry point. The default basemaps use MapLibre; a Mapbox access token (the `mapboxApiAccessToken` prop) is for Mapbox-hosted styles, which also need `mapbox-gl`. For development of the repository itself, the README says to use Node 24.21.0 (see `.nvmrc`); `yarn install` compiles the `gl` dev dependency from source on that pin because it publishes no Node 24 prebuild, and that compile may fail. The basic usage involves two steps. First, add the reducer to your store: import `keplerGlReducer` and `enhanceReduxMiddleware` from `@kepler.gl/reducers`, then apply middleware with `enhanceReduxMiddleware([...])`. Second, mount the component: `import KeplerGl from '@kepler.gl/components'` and render `<KeplerGl id="foo" width={width} mapboxApiAccessToken={token} height={height} />`. If you do not use a bundler, you can load a precompiled UMD build from `https://unpkg.com/kepler.gl/umd/keplergl.min.js`.

The Redux and react-palm Coupling Is a Real Limitation

The most significant limitation is the mandatory Redux setup. If your application does not already use Redux, you must introduce it solely for kepler.gl. This is a maintenance burden: you need to understand Redux middleware and reducer composition, and add kepler.gl's task middleware to your store. For a simple map view, this is overkill. The documentation also notes that older Node versions are not supported or tested, which can be a problem if you are on a legacy LTS. Another consideration is basemap choice: the default basemaps use MapLibre, and an application that uses only Mapbox-hosted styles needs `mapbox-gl` and a Mapbox token. The project is also in alpha releases (latest v3.3.0-alpha.19), so stability is not guaranteed for new features.

Alternative: Deck.gl Directly

A real alternative is to use deck.gl directly, without kepler.gl's UI layer. deck.gl is one of the underlying rendering libraries, and it can render millions of points as well. The difference in approach is that deck.gl is a low-level visualization framework that gives you control over layers and rendering, but you must build your own UI for filters, layer toggles, and data uploads. Kepler.gl provides that UI out of the box, along with Redux state management. If your project needs a custom interface or you want to avoid Redux, deck.gl is a better fit. You would use deck.gl's `ScatterplotLayer` or `ArcLayer` directly, and manage your own state with plain React or any state library. The trade-off is development time: you build the analysis controls yourself, but you avoid the coupling that kepler.gl imposes.

Maintenance and Upgrade Cost

The repository has a default branch of `master` and recent pushes, indicating active maintenance. However, the version numbers are alpha releases (latest v3.3.0-alpha.19), which suggests that the project is in a pre-release phase for the 3.3 series. Upgrading between alpha versions may introduce breaking changes, especially in the reducer API or component props. The repository includes an UPGRADE-GUIDE.md and a CHANGELOG.md, so check those along with the release notes on GitHub. The license is MIT, which means you can use it in commercial projects without paying royalties, but you must retain the copyright notice. There are no explicit maintenance costs mentioned, but the Redux dependency means that when that upstream library changes, you may need to update your integration. The UMD build is available for quick testing, but for production, you would likely bundle the modules, which requires a module bundler.

Editorial conclusion

Adopt kepler.gl if you need a browser-based tool that renders millions of points and performs spatial aggregations without a server, and if you are already using React and Redux. Do not adopt it if you want a standalone map viewer with no Redux dependency, or if you are on a Node version older than 20, since the README says older Node versions are not supported or tested when using kepler.gl as a dependency. Before committing, verify that you supply a Mapbox token if you use Mapbox-hosted styles, that your data fits the client-side aggregation model, and that the alpha releases (latest v3.3.0-alpha.19) do not introduce breaking changes for your use case. The project is actively maintained, but the Redux requirement is a real cost that you must accept.

Frequently asked questions

Is Kepler GL open source?

Yes. The repository is MIT licensed, with the LICENSE file at the root, and the root package.json records MIT alongside version 3.3.0-alpha.19.

what is kepler.gl

It is a data-agnostic, web-based application for visual exploration of large-scale geolocation data sets, built on MapLibre GL and deck.gl, and it is also a React component that uses Redux to manage its state and data flow so it can be embedded in other React-Redux applications.

how to install kepler gl

Kepler.gl consists of separate modules, each added with npm install --save @kepler.gl/components maplibre-gl or yarn add @kepler.gl/components maplibre-gl, or loaded from the precompiled UMD builds in the package's umd folder through a script tag.

kepler gl vs maplibre

kepler.gl is built on top of MapLibre GL and deck.gl rather than competing with them, and its default basemaps use MapLibre; a Mapbox access token is only needed for Mapbox-hosted styles.

kepler gl vs deckgl

deck.gl is a foundation rather than an alternative: kepler.gl sits on deck.gl and MapLibre GL, and the package.json keywords list deck.gl next to react, webgl and visualization.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/keplergl-kepler-gl.svg)](https://hysenlabs.com/projects/keplergl-kepler-gl)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/keplergl-kepler-gl.svg)](https://hysenlabs.com/projects/keplergl-kepler-gl)

Was this useful?