Martin is a fast vector tile server written in Rust, part of the MapLibre project. It focuses on one job: serving vector tiles to MapLibre and other web map clients. neoserver serves vector tiles too, but as one part of a geospatial server that also provides WMS, WFS, WCS, and OGC API Features.
This comparison is based on the source code and documentation of Martin 1.16.1.
At a glance
| neoserver | Martin 1.16.1 | |
|---|---|---|
| Scope | Geospatial server: maps, features, coverages, and tiles | Tile server and tooling |
| Runtime | Go server, one Docker image for Linux amd64 | Rust single binary for Linux, macOS, and Windows, plus Docker |
| License | MIT | MIT or Apache 2.0 |
| Vector tile sources | Published PostGIS, DuckDB, GeoParquet, and vector file layers | PostGIS tables and functions (auto-discovered), PMTiles, MBTiles, GeoJSON. GeoParquet via DuckDB is unstable. |
| Raster tiles | Rendered map tiles with SLD styles, and GeoTIFF/COG coverages | Cloud Optimized GeoTIFF sources, unstable and not in the default build |
| Protocols | OGC API Tiles, TileJSON, WMTS, plus WMS, WFS, WCS, and OGC API Features | TileJSON and a source catalog. No OGC services. |
| MapLibre assets | Not provided | Styles, sprites, and font glyphs |
| Caching | Persistent cache on the filesystem or S3, with quotas and seeding jobs | In-memory cache. martin-cp pre-generates tiles into an MBTiles file. |
| Administration | Web console and management REST API | Command-line options or a YAML configuration file. A web UI for inspecting tiles. |
| Access control | Workspaces, roles, scoped API keys, and per-layer rules built in | Through a reverse proxy |
Where neoserver is a good fit
- You need more than tiles. The same published layer is also available through OGC API Features, WFS, and WMS. See Vector tiles from PostGIS.
- Clients use OGC standards. neoserver serves OGC API Tiles and WMTS, which GIS clients and standards-based integrations expect.
- You need access control per layer. Private layers, roles, and scoped API keys are built in, including for tile requests.
- You want a persistent tile cache. Tiles are cached on the filesystem or S3 across restarts, with quotas and resumable seed, reseed, and truncate jobs.
- You’d rather manage it in a browser. Stores, layers, styles, and tile settings are managed in the console.
Where Martin is the better choice
- Vector tiles are all you need. Martin is a focused, lightweight tile server optimized for speed and heavy traffic.
- PostGIS functions as tile sources. Martin can serve tiles generated by SQL functions, which gives full control over each tile’s contents.
- Pre-built tile archives. Martin serves PMTiles (local or over HTTP) and MBTiles directly, and its tools copy, validate, and diff MBTiles files.
- Complete MapLibre setups. Martin also serves styles, sprites, and font glyphs, so one server can back a MapLibre map.
- Platforms. Martin ships binaries for Linux, macOS, and Windows. neoserver’s supported platform is Linux amd64.
Using both
A common setup uses Martin for a high-traffic basemap and neoserver for thematic layers that need access control, feature queries, or OGC services. Both can read the same PostGIS database.