mrkeyoor.com_
Tue 15 Sept 20:20 UTC
Dataevaluationupdated 15 Sept 2026

GeoLibre review

GeoLibre is an English-documented GIS application for opening, styling, analyzing, and sharing mapping data in a browser, desktop app, mobile app, or Jupyter notebook. Its main appeal is local browser processing, including a catalog of more than 1,000 geoprocessing tools, without sending selected files to a processing server.

Verdict

Our GeoLibre run passed all 8,352 tests, but installation took 550 seconds, used 2,569 MB, and left 23 npm audit findings to triage. The hosted app is an easy recommendation for local, exploratory GIS with ordinary data, while source builders and self-hosters should budget real time for dependencies and security review. Delay sensitive shared deployments until credential storage, link permissions, and the reported advisories meet your policy.

We ran it

Lab card: what happened when we ran GeoLibreScreenshot of GeoLibre (geolibre.app)
Install✓ · 550s1668 packages · 2569 MB
Build✓ · 66s
Tests✓ · 205s8352 passed · 0 failed of 8352 (node:test)
Known vulns230 critical · 15 high · 8 moderate · 0 low (npm audit)
Repo1993 files~568,823 lines of source · 39.7 MB · 25 CI workflows · Dockerfile · tests dir

Answers from our run

Does GeoLibre build from source?

Dependencies installed in 550 seconds (1668 packages), and the build succeeded in 66 seconds. We cloned commit 70c3a83 into a clean Debian container with 3 CPUs and no project-specific setup.

Do GeoLibre's tests pass?

Yes: 8352 of 8352 passed when we ran the project's own test command (node:test). Some failures need services or credentials a bare container does not have.

Does GeoLibre have known vulnerabilities in its dependencies?

npm audit flagged 23 known advisories in the dependency tree at the time of our run.

Who should not use GeoLibre?

Source contributors with a small development image or slow CI: our install pulled 1,668 packages, used 2,569 MB, and took 550 seconds.

What are the alternatives to GeoLibre?

QGIS, kepler.gl, GeoPandas. Our GeoLibre run passed all 8,352 tests, but installation took 550 seconds, used 2,569 MB, and left 23 npm audit findings to triage.

Setup3/5Web is instant; source install took 550 seconds and 2,569 MB
Docs5/5Detailed user, architecture, platform, and self-hosting guides
Community5/57,373 stars, v3.0.0, and fresh issue and pull-request activity
Maturity4/58,352 tests passed, but audit and credential storage need review

Who it’s for

GIS analysts who want desktop-style mapping and spatial SQL in a browser.
Researchers and teachers who need the same map inside Jupyter, Python, or R workflows.
Field and mobile users who can work within the features available on their chosen app build.
Self-hosters prepared to review dependencies, credentials, sharing policy, and external data services before launch.

Who it’s NOT for

Source contributors with a small development image or slow CI: our install pulled 1,668 packages, used 2,569 MB, and took 550 seconds.
Security-sensitive deployments that require a clean dependency audit: npm reported 23 known vulnerabilities, including 15 high-severity findings, in our installed tree.
Desktop users who must keep service credentials in an OS keychain: open issue 1667 says the share token and provider credentials currently live together in localStorage.
Organizations that require expiring, revocable, password-protected share links with enforced viewer roles: those controls remain in open issue 1527.
Teams whose central workflow depends on large or remote GeoParquet files: issue 961 documents a pinned DuckDB-WASM regression and a warm-up workaround that can still fail.

Setup reality

Our sandbox install succeeded in 550 seconds, adding 1,668 packages and using 2,569 MB. The 66-second build passed, followed by 8,352 passing tests in 205 seconds. Npm audit found 23 known vulnerabilities: 15 high and 8 moderate, with no critical or low findings.

Most users can open the hosted web app without installing anything. Source work needs Node.js 22 or newer; desktop builds also need Rust and Tauri's platform packages. Local browser files need no credential, while sharing and optional services such as Google imagery or Cesium can require tokens.

This is a workspace monorepo with a Dockerfile, Compose stack, 25 CI workflows, and several platform targets. The full self-hosted stack adds a projects API, collaboration relay, and Postgres with a required password. Desktop, mobile, browser, store, and container builds do not have identical filesystem, plugin, or sidecar access.

GeoLibre 3.0 puts more than 1,000 GIS tools in a browser

GeoLibre 3.0 reaches beyond map viewing. It opens local vector and raster data, styles layers, runs spatial SQL, builds processing models, and renders 3D data. The Whitebox toolbox supplies more than 1,000 vector, raster, terrain, hydrology, remote-sensing, and LiDAR tools through WebAssembly. For those tools, selected files and results stay on the user's machine instead of traveling to a processing server.

The same interface appears on the web, desktop, Android, iOS, and inside Jupyter. That reach comes from a large codebase: our checkout contained 1,993 files, about 568,823 source lines, and 39.7 MB before dependencies. React and TypeScript drive the interface, MapLibre and deck.gl draw maps, DuckDB-WASM handles local analytical work, and Tauri wraps the desktop and mobile builds.

What happened when we ran it

Our sandbox installed commit 70c3a83 in 550 seconds. Npm added 1,668 packages and consumed 2,569 MB on disk. The build then succeeded in 66 seconds. Node's test runner completed in 205 seconds with 8,352 tests passed and 0 failed. We ran the checkout in an unprivileged Node 22 container with 3 CPUs, 8 GB of RAM, and no secrets.

The dependency audit is the uncomfortable part. Npm reported 23 known vulnerabilities: 15 high and 8 moderate, with 0 critical and 0 low findings. The audit result does not tell us whether each vulnerable path is reachable in a production browser bundle, desktop shell, test tool, or build step. It does require triage before a sensitive deployment. A perfect 8,352-test result measures behavior; it does not cancel dependency advisories.

The 2,569 MB source install is optional for most users

The web edition avoids our 2,569 MB setup entirely: open the hosted app and load a supported local file. Desktop installers add filesystem dialogs, local MBTiles, project save and open, and other Tauri-only features. Developers need Node.js 22 or newer, while desktop builds also require Rust and the operating system packages listed by Tauri. The 550-second install makes a cached development image worthwhile.

Self-hosting ranges from one container to a small service stack. The root Docker image serves the browser app through nginx and bundles an optional Python sidecar. Docker Compose adds the projects server, a collaboration relay, and Postgres; it refuses to start without a Postgres password. The docs explain public TLS origins, CORS, shared Basic Auth, provider tokens, and data volumes. That operational work starts after the 66-second web build we measured.

Version 3.0 changes shape across web, desktop, store, and mobile builds

GeoLibre 3.0 does not promise feature parity across every package. Browser code cannot use desktop file dialogs or arbitrary local paths. The Mac App Store build drops the Python sidecar engines, local Jupyter server, Earth Engine sign-in, external plugin installation, and a PostGIS path because of sandboxing. Container users get the browser interface and sidecar, while native file workflows still need the desktop app. Choose the distribution after listing the data sources you actually use.

Our 2,569 MB install does not mean every engine is ready offline. DuckDB-WASM is bundled by default, while some heavier browser engines and assets can arrive from CDNs and become cached afterward. A no-external-CDN build flag disables or changes affected features, and some third-party packages still contain their own data-fetch URLs. If an air-gapped installation is the goal, test every needed engine with the network physically unavailable.

GeoLibre 3.0 desktop credentials remain in localStorage

GeoLibre 3.0 keeps local processing private by default, but optional sharing and provider integrations introduce secrets. Open issue 1667 says the desktop app stores its share token, Cesium token, Google key, custom headers, and other credential values together in localStorage. The proposed OS-keychain abstraction is still an issue, with no merged fix cited there. That storage choice is acceptable for some personal setups and a blocker under stricter desktop credential policies.

Despite 8,352 passing tests, shared projects have another boundary. Among the repository's 20 open issues and pull requests, issue 1527 asks for enforced view, comment, and edit roles plus link expiry, password protection, and revocation. It says current sharing mainly controls discoverability and that a shared link is permanent and unauthenticated once created. Do not use a hidden panel or map-only URL as an authorization control.

GeoLibre 3.0 still works around a DuckDB-WASM GeoParquet failure

GeoLibre 3.0 reads GeoParquet through DuckDB-WASM in both web and desktop views. Issue 961 tracks a pinned upstream regression where read_parquet can throw stoi: no conversion after the Spatial extension loads. The project warms up the connection with an earlier read, but the issue says this can still fail for genuinely large or remote files. Test representative GeoParquet sources rather than assuming a small local file proves the path.

7,373 stars and v3.0.0 show a fast-moving project

GitHub recorded 7,373 stars, 20 combined issues and pull requests, and a September 15, 2026 push. Version 3.0.0 shipped one day earlier. Our 205-second test run covered commit 70c3a83 from the next day's activity. New pull requests were already open after that commit. The repository was created only in May 2026 and is changing quickly.

The 8,352 passing tests make GeoLibre credible for a serious trial. They also make the 23 audit findings harder to wave away, because this team clearly knows how to build gates. End users can start with the hosted app and keep local files local. Contributors should cache the 1,668-package environment. Self-hosters handling credentials or private projects should finish the audit, put authentication in front, and verify the exact sharing rules before inviting anyone else.

Alternatives

ProjectWhat it isPick it when
QGISA mature desktop GIS with a deep native plugin and professional cartography ecosystem.pick this instead when desktop analysis, print layouts, native providers, and established plugins matter more than browser portability.
kepler.glA web-focused geospatial visualization application and component for exploring large datasets.pick this instead when interactive visual exploration is the main job and you do not need GeoLibre's broad processing toolbox.
GeoPandasA Python library for code-first vector data analysis with the pandas model.pick this instead when reproducible Python code matters more than a full visual application across web and mobile.

What people are saying

  1. [github-trending] opengeos/GeoLibre

Sources

  1. GeoLibre README
  2. GeoLibre getting-started and self-hosting guide
  3. GeoLibre v3.0.0 release
  4. Issue 1667: desktop credential storage
  5. Issue 1527: share-link access controls
  6. Issue 961: DuckDB-WASM GeoParquet workaround

More data reviews

TradingView-API · os-taxonomy · Lean · bokeh · orm · datahub · the whole board →