RustGIS vs. other GIS platforms¶
How RustGIS compares to its sibling project GeoLibre and to the GIS platforms people most often ask about: QGIS, ArcGIS Pro and ArcGIS Online.
RustGIS is not trying to replace any of these. It fills a narrower spot: a free and open-source desktop GIS compiled to a single native program, with a ribbon interface familiar from desktop GIS, every action available as a scriptable command, and the same app running in a browser tab through WebAssembly.
How to read this
Comparisons like this age quickly and are written by an interested party. The RustGIS column reflects what ships in the current source as of October 2026; the other columns describe each product's mainstream, out-of-the-box behaviour, not what is reachable with every add-on or plugin. The GeoLibre, QGIS and ArcGIS columns draw on GeoLibre's own comparison, where those products are described in more depth. Found something wrong or out of date? Please open an issue.
RustGIS and GeoLibre¶
RustGIS and GeoLibre are both opengeos projects, and they share more than a maintainer: both run the same suite of over 1,000 GeoLibre and Whitebox geoprocessing tools, natively on the desktop and on WebAssembly in the browser.
They differ in how they are built and who they suit:
- GeoLibre is built on web technology (Tauri, React, MapLibre GL JS, DuckDB-WASM, deck.gl). It reaches further: cloud-native formats (GeoParquet, PMTiles, Zarr, STAC), databases, OGC and Esri services, native Android and iOS apps, a Jupyter widget, a Python package and real-time collaboration.
- RustGIS is written entirely in Rust and draws its own interface on the GPU (egui). It is
one native program with no browser engine or JavaScript runtime inside, a ribbon of tabs
and contextual tab groups, and an engine where every button is a command with an id, run the
same way by the ribbon,
rustgis-cli, notebooks, models and the AI Assistant.
If you want the widest data access and the most platforms, choose GeoLibre. If you want a compact native desktop GIS with a classic ribbon workflow and a fully scriptable command engine, choose RustGIS. Both keep your data on your machine.
At a glance¶
| RustGIS | GeoLibre | QGIS | ArcGIS Pro | ArcGIS Online | |
|---|---|---|---|---|---|
| License | Apache-2.0, open source | MIT, open source | GPL-2.0+, open source | Proprietary | Proprietary |
| Cost | Free | Free | Free | Paid subscription | Paid subscription (credit-metered analysis) |
| Built with | Rust (egui, wgpu, tiny-skia) | TypeScript and Rust (Tauri, React, MapLibre) | C++ and Python (Qt) | .NET and C++ | Web (JavaScript) |
| Desktop | Windows, macOS, Linux: one native program | Windows, macOS, Linux (Tauri) | Windows, macOS, Linux | Windows only | — |
| Browser | Full app compiled to WebAssembly | Full app, nothing to install | No official browser build | No | Yes (the product is the browser app) |
| Mobile | — | Native Android and iOS apps | Via QField / Mergin Maps (separate apps) | — | Via ArcGIS Field Maps (separate app) |
| Interface | Ribbon with contextual tab groups | Panels and toolbars | Toolbars and panels | Ribbon with contextual tab groups | Web map viewer and apps |
| Works offline | Yes: the desktop app needs no network; offline areas with sync | Yes: PWA install, offline areas, desktop build | Yes | Yes | Limited (Field Maps offline areas) |
| Where your data lives | Your device | Your device, processed client-side | Your device | Your device / your enterprise geodatabase | Vendor cloud |
| Project file | .rgis (JSON, open) |
.geolibre / .geolibre.json (open, documented) |
.qgs / .qgz (open) |
.aprx (proprietary) |
Web map JSON (hosted) |
Data and formats¶
| RustGIS | GeoLibre | QGIS | ArcGIS Pro | ArcGIS Online | |
|---|---|---|---|---|---|
| Format breadth | Focused: GeoJSON, CSV, Shapefile, GeoPackage, GeoParquet, FlatGeobuf (large files read in place); GeoTIFF/COG and ASCII grids; KML, GPX and WKT out; with GDAL installed, the vector formats it reads | Wide: DuckDB-WASM Spatial plus in-house readers | Widest: everything GDAL/OGR reads | Very wide, plus native Esri formats | Common upload formats |
| Cloud-native data | GeoParquet, FlatGeobuf (large files read in place), PMTiles over HTTP byte ranges, cloud-optimised GeoTIFF (as files) | GeoParquet, FlatGeobuf, PMTiles, COG, Zarr, streamed over HTTP | GeoParquet, FlatGeobuf, PMTiles, COG, Zarr | GeoParquet, COG, Zarr | Hosted layers |
| Web maps and tiles | XYZ/TMS/WMS raster tiles, Mapbox Vector Tiles, MapLibre styles | XYZ, WMS/WFS/WMTS, OGC API, vector tiles, MapLibre styles | Full OGC support, vector tiles | Full OGC support | Yes |
| Coordinate systems | Rasters in any EPSG code, reprojected on the fly; the map in presets or projected EPSG codes | Reprojects on import, EPSG catalog | Full PROJ support | Full support | Web Mercator focus |
| STAC, databases, Esri services | — | STAC browser, PostGIS, DuckDB, Iceberg, ArcGIS services, File Geodatabase (desktop) | STAC, PostGIS, SpatiaLite, Oracle, SQL Server, ArcGIS services | Enterprise geodatabases, Esri services | Hosted only |
| 3D | A 3D globe; 2.5D extrusion with lighting and shadows; glTF scene export | Cesium globe, 3D Tiles, I3S, LiDAR, Gaussian splats | Point clouds, 3D map view | Deepest 3D: scenes, I3S, mesh, LAS | Scene Viewer |
Analysis and processing¶
| RustGIS | GeoLibre | QGIS | ArcGIS Pro | ArcGIS Online | |
|---|---|---|---|---|---|
| Geoprocessing tools | 1,000+ (GeoLibre and Whitebox) plus built-in vector tools | 1,000+ (GeoLibre and Whitebox) | 1,000+ (native, GDAL, GRASS, SAGA) | Most mature and complete, plus paid extensions | A useful subset, credit-metered |
| Where analysis runs | Your machine; in the browser on WebAssembly | Your browser (WASM); optional Python sidecar on desktop | Your machine | Your machine, or a server | Vendor cloud |
| Vector analysis | Buffer, clip, erase, dissolve, summarize within, statistics, selection by location; GeoLibre vector tools | Buffer, overlay, dissolve, joins, topology checks | Comprehensive | Comprehensive | Common tools |
| Raster analysis | Raster functions, band math, indices, change detection, classification, viewshed; GeoLibre terrain and hydrology tools | Hillshade, slope, zonal stats, raster calculator, reclassify | Comprehensive (GDAL/GRASS/SAGA) | Comprehensive; Spatial Analyst | Limited |
| Query language | SQL WHERE clauses for selection and definition queries |
DuckDB Spatial, PGlite/PostGIS, Sedona, all in the browser | Virtual layers, PostGIS | SQL against geodatabases | — |
| Model / batch chaining | ModelBuilder (models from history), tasks, scripts | Visual Model Builder, batch runner | Graphical Model Designer | ModelBuilder | — |
| Guided workflows | Suitability, visibility, line of sight, IDW, shortest path, neighborhood, simulation | Isochrones, routing, Emerging Hot Spot Analysis | Plugins and processing providers | Extensions (Network, Spatial, Geostatistical Analyst) | Routing services (credits) |
| AI / ML | Pixel classification (k-means, minimum distance, a trainable neural network) | AI Segmentation (SAM), ONNX object detection | Via plugins | Deep-learning toolset | Pretrained models (credits) |
Cartography, layout and output¶
| RustGIS | GeoLibre | QGIS | ArcGIS Pro | ArcGIS Online | |
|---|---|---|---|---|---|
| Renderers | Single, unique values, graduated, proportional; hexagon/square aggregation; raster stretch, RGB, classify, colormap, shaded relief | Single, categorized, graduated, rule-based, heatmap, cluster, proportional | Richest | Very rich | Smart-mapping styles |
| Labeling | Collision-free placement, scale ranges, annotation | Data-defined engine | Best-in-class placement | Maplex | Basic |
| Print layout | Map frames, legends, scale bars, grids, extent indicators, map series; PDF and PNG | Print Layout with atlas, PNG, PDF, SVG | Full composer with atlas | Full layout view with map series | Basic print |
| Reports | Grouped reports with statistics, charts and subreports; PDF | — | Via atlas and plugins | Reports | — |
| Presentations | HTML slideshow and PDF from map, text, image and video pages | Story maps with presenter view | Via plugins | — | ArcGIS StoryMaps (separate product) |
| Standalone export | Web map page (one HTML file), OGC API Features collections, MapLibre styles, glTF | Whole project to one offline HTML file | Via qgis2web | — | — |
Automation and extensibility¶
| RustGIS | GeoLibre | QGIS | ArcGIS Pro | ArcGIS Online | |
|---|---|---|---|---|---|
| Scripting | Every action is a command: rustgis-cli runs any of them headlessly; a Script pane |
Python console, geolibre Python package |
PyQGIS, qgis_process |
arcpy |
ArcGIS API for Python / JavaScript |
| Notebooks | Built-in notebooks of text and command cells; Jupyter .ipynb in and out |
The whole app as a Jupyter widget | Bindings, not the UI | Notebooks drive arcpy |
Hosted notebooks |
| Plugins | Sandboxed WebAssembly plugins with declared permissions; a registry; the same file runs on desktop, CLI and web | TypeScript plugin API, a registry | Largest: thousands of Python plugins | .NET add-ins, Python toolboxes | App templates |
| AI assistant | Acts through undoable commands; Anthropic, OpenAI, Gemini, OpenRouter, Ollama or any OpenAI-compatible model; bring your own key; also on the command line | Natural-language assistant with undoable operations; bring your own key | Via plugins | Copilot features | AI assistants |
| Collaboration | — | Real-time (MVP), review comments | No | No | Shared hosted layers |
| Self-hosting | Serve the static web build anywhere | Docker image or static build | QGIS Server | ArcGIS Enterprise (paid) | — |
Where each one is the right choice¶
Choose RustGIS when you want a compact, native desktop GIS that installs as one program, a ribbon workflow like the one in ArcGIS Pro without the licence, every action scriptable from the command line with the same ids the interface uses, plugins that run sandboxed, or an AI assistant whose every step is an undoable command.
Choose GeoLibre when you need the widest data access from a browser tab (cloud-native formats, STAC, databases, OGC and Esri services), the same app on Android, iOS and in Jupyter, real-time collaboration, or a Python package.
Choose QGIS when you need the widest format support through GDAL/OGR, the deepest open-source cartography, a mature plugin for a niche task, or heavy local processing of large datasets.
Choose ArcGIS Pro when you are in the Esri ecosystem, need enterprise geodatabases and versioned editing, the deepest 3D and imagery workflows, or organizational support.
Choose ArcGIS Online when the priority is hosted layers, organizational sharing and the surrounding Esri app family.
They also compose: RustGIS reads and writes GeoJSON, CSV and GeoTIFF, which every tool above opens, and writes MapLibre styles and OGC API Features collections for the web.
Where RustGIS is not the strongest option¶
Stated plainly, so the tables above are worth trusting:
- Format breadth. GeoPackage and GeoParquet are read but not written, and there is no Shapefile writing or database connection yet. Other vector formats (KML, File Geodatabase, DXF…) need GDAL installed, which RustGIS calls rather than links, and GDAL rasters aren't read.
- Coordinate systems. Vector data is stored in longitude/latitude; there is no full PROJ.
- Editing depth. No vertex editing of existing features yet, and no versioned or multi-user editing.
- Specialized analysis. Spatial joins, overlay union and intersect, network datasets and spatial statistics are thin or missing, beyond what the GeoLibre and Whitebox tools cover.
- Python. There is no Python API; automation goes through commands, the CLI and plugins.
- Maturity. RustGIS is young. Many features are first versions; see the roadmap.
See also¶
- User Guide: what RustGIS does, page by page
- Command Line: scripting RustGIS
- GeoLibre's comparison: GeoLibre against QGIS, ArcGIS, CARTO, Felt, kepler.gl and Google Earth