Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

GeoLibre 1.0: A Free, Open-Source Cloud-Native GIS That Runs Anywhere

I am excited to introduce GeoLibre, a free and open-source, lightweight, cloud-native GIS platform for visualizing, exploring, and analyzing geospatial data. This is the most powerful software I have ever built, and it is also the easiest one to use. One application runs everywhere: in your web browser, as a native desktop app, on your phone, and inside a Jupyter notebook. There is no account, no server, and no cost. Everything runs locally and your data stays private. Nothing leaves your browser unless you request online data.

Video tutorial: Introducing GeoLibre 1.0, a cloud-native GIS that runs everywhere

In this tutorial, I walk through GeoLibre 1.0 step by step: how to install and run it, load vector and raster data, stream gigabyte-scale cloud-native datasets without downloading them, edit attributes and geometry, work with PMTiles, 3D tiles, LiDAR point clouds, and DuckDB, and share your projects as static links.

What You Will Need

Three Ways to Run GeoLibre

GeoLibre is one application that runs on multiple platforms. There are three ways to get started.

1. In a web browser. Go to geolibre.app and open the web version. It runs as a static website hosted on GitHub Pages, so everything works offline once loaded. The layout is fully responsive, so on a phone or small screen it hides the side panels and adapts the toolbar automatically. You can toggle light or dark mode from the upper right corner, or let it follow your system setting.

2. As a desktop app. Download the installer from the GitHub releases page. The app is tiny, only about 30 MB, compared to the gigabytes that QGIS or ArcGIS Pro require. On Linux, make the downloaded file executable and run it. On macOS and Windows you may need to adjust your security settings to allow it to run. The desktop version includes extra functionality, such as running Python programs for heavier geoprocessing.

3. In a Jupyter notebook. Install the lightweight package and launch a map with a single line. It has very few dependencies, so installation takes only seconds.

import geolibre

m = geolibre.Map()
m

The notebook experience is bidirectional. You can open projects, add data, and customize layers just like the web version, and you can also query the map state from Python, including the center, coordinates, and number of data layers. You can save your work as a project file and load it back later with all layers preserved.

Loading Vector Data

The easiest way to add vector data is to drag and drop a file onto the map. GeoLibre renders it instantly. From there you can use the toolbar in the upper left corner to:

Check Zoom to selection in the attribute table to highlight the matching feature on the map when you select a row. The selection stays synchronized between the table and the map in both directions.

To edit attributes, click Edit, change any value, and click Save. You can then export the layer as GeoJSON, GeoParquet, or CSV. To edit geometry, open the layer menu (the three dots), enable Edit geometry, and use the editing toolbar to move features, drag vertices, rotate, delete, copy, or draw new polygons. Click Save to commit your changes back to the layer and attribute table.

Loading Raster Data

Paste the URL of any Cloud Optimized GeoTIFF and click load, or select a file from your local computer. A 1.5 GB land cover dataset loads in well under a second. For digital elevation models you can change the color map on the fly, switch between single-band and RGB rendering for multispectral data, inspect pixel values by clicking the map, and adjust the contrast stretch.

Streaming Gigabyte-Scale Data

This is where cloud-native geospatial really shines. GeoLibre can stream large datasets directly from the internet without downloading them. When you add a vector layer, choose the streaming option and paste a URL to a remote GeoParquet file. GeoLibre lazily loads the DuckDB spatial extension, builds vector tiles on demand, and renders the data on the fly.

In the video, I stream a sorted 180 GB GeoParquet file with millions of polygons. The tiles generate dynamically as you pan and zoom, and you can still click features to inspect their attributes. This works because of the combination of DuckDB and GeoParquet, all running directly in your browser. You can render gigabytes of data with no server and no downloads.

Cloud-Native Formats and Services

GeoLibre supports a wide range of cloud-native formats and web services:

You can also load delimited text and CSV files with latitude and longitude columns, and GPS tracks in GPX format (desktop version).

Map Controls and Decorations

GeoLibre includes a rich set of map controls and decorations that are all saved with your project:

Plugins

GeoLibre has a plugin system, similar to the QGIS plugin manager or the ArcGIS toolbox, that lets you extend the application with new functionality. Plugins are written in TypeScript. If you build one, you can submit a pull request to make it available for everyone. See the plugins page in the app for documentation on developing and publishing a plugin.

Sharing Projects

Everything you do on the map can be saved as a project file, which is simply a GeoJSON file with your data and visualization settings. To share a project, sign in at geolibre.app with Google, GitHub, or a new account, then upload your project file or generate an API token to upload directly from the app.

Once shared, you get a static URL that anyone can open to see the same data, layers, styling, and attribute table. To present a clean, control-free view, append the map only option to the URL to hide the side panels. The shared page is completely static, hosted on GitHub Pages, with no server involved.

Architecture

GeoLibre is built on a modern, open-source stack:

Resources

This release packs in a huge number of features, and a short video can only scratch the surface. In follow-up videos, I will cover plugins and data processing in more depth. GeoLibre lowers the bar for accessing geospatial data: all you need is a browser, and you can run the same application on your desktop, your phone, or inside a Jupyter notebook. If you have feature requests or run into bugs, please leave a comment or open an issue on the GitHub repository. And if you find GeoLibre useful, please give it a star.