# geojson.io: browser-based spatial data editor from Mapbox, twice rearchitected since 2013

> geojson.io is an open-source browser tool for creating, editing and exporting GeoJSON, KML, CSV and Shapefile data without a desktop GIS application. Created at Mapbox in 2013, it moved from Leaflet.js to Mapbox GL JS in 2022 and to a Placemark Play fork in 2026, gaining multiselect, bulk editing and spatial operations along the way.

**mapbox/geojson.io** — A quick, simple tool for creating, viewing, and sharing spatial data

- Repository: https://github.com/mapbox/geojson.io
- Website: http://geojson.io/
- Stars: 2,266 · Forks: 642
- Language: TypeScript
- License: ISC
- Published: 2026-10-11 · Updated: 2026-10-11 · Language: en
- Canonical page: https://hysenlabs.com/projects/mapbox-geojson-io

## A browser editor for spatial data created in 2013 and twice rearchitected since

geojson.io started in 2013 as a side project by Mapbox engineer Tom MacWright, built as a quick editor for GeoJSON, the format used to encode geographic data structures in web mapping. Original versions used Mapbox.js (built on Leaflet.js) for map rendering and leaflet-draw for the drawing tools.

Two major overhauls followed. In late 2022, the codebase moved to Mapbox GL JS and Mapbox GL Draw for vector-based rendering and updated drawing tools. In early 2026, the project was overhauled again using a fork of Placemark Play, another open-source map editor that MacWright also developed. That overhaul brought a React and TypeScript codebase, a redesigned interface, multiselect, bulk editing, spatial operations, search-result-to-Point features, and improved import/export options.

package.json shows version 0.1.0, set after the 2026 rewrite. Working from a specific commit is the way to pin a particular build.

## Local development requires a Mapbox token in .env and npm run dev on port 5173

Running the project locally starts with cloning and installing dependencies:

```bash
git clone https://github.com/mapbox/geojson-io.git
cd geojson.io
npm install
```

One detail to check before cloning: the README's git clone URL uses a hyphen (geojson-io.git), while every other link in the same file uses the dot form (mapbox/geojson.io/issues, mapbox/geojson.io/commits). The project is confirmed as mapbox/geojson.io with a dot. Whether GitHub silently redirects the hyphenated clone URL to the dot-named repository is not stated, and cloning from the wrong address would produce an error or an empty checkout.

After installing, copy .env.example to .env and set your public Mapbox token as VITE_PUBLIC_MAPBOX_TOKEN. A second optional variable, VITE_GA_MEASUREMENT_ID, is available for Google Analytics.

```bash
npm run dev
```

This starts the application at http://localhost:5173. A Mapbox account is a prerequisite because the token enables the map tiles and search functionality. Without a valid VITE_PUBLIC_MAPBOX_TOKEN, the development server may start but the map layer will not load.

## Import and export span GeoJSON, KML, CSV and Shapefile without a server in between

Four formats cover the common interchange paths for spatial data. GeoJSON is the native format and what the tool is designed around. KML covers the Google Earth ecosystem. CSV import handles tabular data with geographic coordinates. Shapefile support covers the format dominant in government datasets and traditional GIS workflows.

All four work in both directions: you can bring data in through any of them and export to any of them. Working across multiple formats in a single browser session, without an intermediate server or a command-line conversion step, is a concrete advantage over a local GIS installation that requires separate import and export dialogs for each format.

File drop is the import mechanism, handled by the @placemarkio/flat-drop-files package in package.json. OpenStreetMap data conversion is covered by @placemarkio/osmtogeojson, broadening the set of sources that can feed into a session beyond the four named formats.

## Multiselect, bulk property editing and spatial operations are 2026 additions from the Placemark fork

Before the 2026 overhaul, geojson.io handled single-feature editing. The Placemark Play fork brought multiselect: you can now select more than one feature and apply changes to all of them at once. Bulk editing through the Feature Editor and Table Panel extends this, letting you update shared properties across a selection without opening each feature individually.

Spatial operations arrived in the same overhaul. The @placemarkio/turf-jsts dependency in package.json provides the geometry computation layer. Turf-JSTS handles operations such as union, intersection and buffer. Which specific operations are exposed in the UI is documented in API.md at the repository root.

The table panel is a distinct view from the feature editor. Attribute data management in a grid is different from clicking features on the map, and having both in the same browser window reduces the back-and-forth that comes from editing spatial data with non-trivial attribute schemas.

## Query parameters let you link directly to preloaded data without uploading a file

A URL parameter mechanism lets you pass a data source to geojson.io when opening it. Rather than loading the tool and then importing a file, you can link to it with a query string pointing at a publicly accessible GeoJSON resource. The feature list names query parameters as a supported way to preload data from external sources.

For workflows that involve sharing datasets with collaborators, this removes the file-exchange step. Instead of exporting and sending a file separately, you construct a URL that opens the tool with that dataset already loaded. API.md at the repository root documents the full set of supported query parameters.

The hosted version at http://geojson.io/ supports query parameters directly. A local development server at http://localhost:5173 runs the same codebase, but local CORS restrictions on the external data source may prevent the fetch from completing.

## Placemark Play shares the same author and covers the same use case without a Mapbox token dependency

Placemark Play is the upstream source of the 2026 overhaul. Both are open-source browser map editors created by Tom MacWright, and both handle GeoJSON editing with drawing, property editing and format import/export. The concrete difference: geojson.io is maintained under Mapbox and depends on VITE_PUBLIC_MAPBOX_TOKEN for the map layer and search, while Placemark Play is independently hosted at play.placemark.io.

For a user who wants the 2026 geojson.io feature set without a Mapbox account, Placemark Play is the direct alternative. The fork point is in early 2026, and the feature sets were comparable at that moment. How much the two have diverged since is not documented in the geojson.io repository.

Desktop tools such as QGIS handle the same spatial formats but require local installation, project files and a full application window. geojson.io and Placemark Play both target the case where a browser tab is faster than opening a desktop GIS, accepting that neither is designed for large datasets or offline use.

## The staging deploy script and the README description point at different server addresses

For contributors who want to deploy to staging, a discrepancy appears between two parts of the README. The development section says the deploy:staging command deploys to Mapbox's labs.tilestream.net staging server. The actual deploy script in package.json reads: vite build --mode staging && aws s3 sync dist/ s3://labs.mapbox.com-staging/geojson-io-staging/. That target is an S3 bucket named labs.mapbox.com-staging, not labs.tilestream.net. Whether the two names resolve to the same infrastructure through DNS is not stated anywhere in the repository.

For contributors outside Mapbox, the deploy:staging command also requires the mbx env CLI tool for authentication. That tool is an internal Mapbox utility rather than a public package, so the staging deployment path is not available to external contributors.

The last push was on 2026-08-17 and the project is distributed under the ISC licence; the full text is at LICENSE in the repository root.

## Conclusion

geojson.io suits frontend developers and GIS professionals who need a browser-based way to create or inspect spatial data without a desktop GIS application. For a local development copy, you need Node.js, a Mapbox account and a public token set as VITE_PUBLIC_MAPBOX_TOKEN. The 2026 overhaul from the Placemark Play fork brought multiselect, bulk editing and spatial operations, but package.json shows version 0.1.0 and no official build artifact exists to pin from. Before building workflows around it, verify that your Shapefile or CSV round-trips cleanly through the import/export path you plan to use.

## FAQ

### How do I run geojson.io locally?

Clone the repository, run npm install, copy .env.example to .env and set VITE_PUBLIC_MAPBOX_TOKEN to your public Mapbox token, then run npm run dev. The development server starts at http://localhost:5173.

### What file formats does geojson.io support?

Import and export work with GeoJSON, KML, CSV and Shapefile. OpenStreetMap data conversion is also available through the included osmtogeojson package.

### Does geojson.io require a Mapbox account?

Local development requires a public Mapbox token set as VITE_PUBLIC_MAPBOX_TOKEN in a .env file. Without a valid token, the development server may start but the map layer will not load.

### What is the difference between geojson.io and Placemark Play?

Placemark Play is the fork source for the 2026 overhaul of geojson.io. Both are open-source browser map editors by Tom MacWright. geojson.io is maintained by Mapbox and requires a Mapbox token; Placemark Play is independently hosted at play.placemark.io with no Mapbox dependency.

### Is there a stable pinnable build of geojson.io?

No. package.json shows version 0.1.0 after the 2026 rewrite, and no official build artifact exists for pinning. Working from a specific commit hash is the available option.

## Sources

- [Issues](https://github.com/mapbox/geojson.io/issues)
- [License: ISC](https://github.com/mapbox/geojson.io/blob/main/LICENSE)
- [mapbox/geojson.io on GitHub](https://github.com/mapbox/geojson.io)
- [Project website](http://geojson.io/)
- [README](https://github.com/mapbox/geojson.io/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/mapbox-geojson-io
