SpatiaLite 5.1.1-rc0 with SQLite, GEOS, PROJ, and RTTOPO compiled to WebAssembly for Node.js and browser environments.
spl.js is a JavaScript library that compiles SpatiaLite and its dependencies (SQLite, GEOS, PROJ, RTTOPO) to WebAssembly, enabling advanced geospatial database operations in Node.js and web browsers. It solves the problem of performing complex spatial analyses, transformations, and queries directly in JavaScript environments without relying on external servers.
Geospatial developers and data scientists who need to perform spatial SQL queries, geometry processing, or coordinate transformations in Node.js applications or client-side web mapping tools.
Developers choose spl.js because it provides the complete SpatiaLite feature set in JavaScript with a unified API, supports multiple geospatial formats natively, and offers extensibility through custom Web Worker extensions, all while maintaining near-native performance.
SpatiaLite for browser & node
Includes SpatiaLite 5.1.1-rc0 with SQLite, GEOS, PROJ, and RTTOPO, enabling advanced operations like topology creation and coordinate transformations directly in JavaScript.
Provides identical synchronous API for Node.js and asynchronous API for browsers via Web Workers, simplifying code reuse across server and client environments.
Automatically handles JSON, GeoJSON, WKB, and supports importing GeoPackage and zipped Shapefiles, as shown in examples loading London boroughs and lights data.
Allows mounting local or remote files (including URLs) for read/write operations, enabling database imports and exports without server dependencies.
The WebAssembly file is ~4.5MB (~3.4MB gzipped), which can significantly impact initial load times and bandwidth usage in web applications.
Benchmarks show browser performance is ~50% of native SpatiaLite due to WebWorker communication and WebAssembly limitations, affecting compute-intensive tasks.
The default proj.db is minimal; using the full version requires manual mounting and path setting with spatialite functions, adding configuration steps.
Firefox has a known bug with range requests that breaks live examples, limiting cross-browser support without workarounds.
A modular geospatial engine written in JavaScript and TypeScript
An extension of GeoJSON that encodes topology! 🌐
Zero dependency library to provide some basic geo functions
RBush — a high-performance JavaScript R-tree-based 2D spatial index for points and rectangles
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.