GeoJSON Reproject Tool
LocalReproject GeoJSON between coordinate systems — EPSG:4326 ↔ 3857, UTM or any proj4 string — free in your browser, no sign-in, nothing uploaded.
Sample data loaded — click "Reproject" to try it.
Transformations use parametric proj4 definitions (7-parameter / HTDP strings). Grid-based high-accuracy transformations (nadgrids: NTv2 .gsb etc.) and external datum grids are not supported — use GDAL/cs2cs (PROJ) for those.
What is it? GeoJSON Reproject transforms GeoJSON coordinates between coordinate reference systems — EPSG:4326 ↔ EPSG:3857, any built-in code, all 120 UTM zones, or a pasted proj4 definition string — with a map preview on the WGS84 side; coordinates only, attributes untouched, everything runs locally in your browser.
TL;DR: Reproject GeoJSON between CRS — 4326 ↔ 3857, UTM or a pasted proj4 string — with a map preview on the WGS84 side, locally in your browser, free and no upload.
How to use
- Paste your GeoJSON into the input box (a sample is pre-filled), or click "or load a file" to pick/drop a .geojson/.json file.
- Enter the source and target CRS (e.g. EPSG:4326, EPSG:3857, EPSG:32650, or a proj4 definition string).
- Click "Reproject", inspect the map preview (the WGS84 side is plotted — result side for geographic targets, input side otherwise), then copy or download the reprojected GeoJSON.
FAQ
Which CRS are supported?
Built-in: EPSG:4326/4269/3857, aliases (WGS84, EPSG:900913/GOOGLE, …) and all 120 UTM zones (EPSG:32601–32660 north / 32701–32760 south). Anything else — e.g. national grid codes like EPSG:27700/28992 — needs a pasted proj4 definition string.
Is the output labeled with its CRS?
Yes — a non-WGS84 target writes a crs member (name form, readable by GDAL/QGIS); a WGS84 target follows the RFC 7946 default and writes none. If the input carries a crs member that differs from the selected source CRS, the summary line discloses it.
Is it local?
Yes.
Is it free? Do I need an account?
Yes — reprojecting a GeoJSON uses a free daily allowance and needs no sign-in. Batch runs and server-side quotas are the paid Pro tier.
Can it convert GeoJSON to WGS84 (plain longitude/latitude)?
Yes — pick EPSG:4326 as the target. The output follows the RFC 7946 default and carries no crs member, so it drops straight into geojson.io, Leaflet (L.CRS.EPSG4326) or any WGS84 pipeline. Was your file actually Web Mercator or UTM? Set that as the source, not 4326.
Why are my reprojected points in the wrong place or the ocean?
Almost always a wrong source CRS — e.g. leaving the source at 4326 while the coordinates are actually Web Mercator (millions) or UTM meters. Check the magnitude of the first coordinate and the summary line (an input crs member that disagrees with the selected source is disclosed there), fix the source, and use the WGS84-side map preview to confirm before downloading.
How do I match GeoJSON to my Leaflet or OpenLayers map?
Leaflet's default is EPSG:3857 (Web Mercator) and OpenLayers defaults to 3857 as well — reproject to EPSG:3857 for tile basemaps, or keep 4326 and set the map's CRS to EPSG:4326. Both sides can be pasted as proj4 strings here, so national grids and less common codes work too.
Examples
- Paste or load a GeoJSON (coordinates in [lon, lat] order, e.g. [116.4, 39.9]) → convert to Web Mercator
- Reproject UTM zone 50N (EPSG:32650) survey data to WGS84 for Leaflet, or take WGS84 to Web Mercator before generating PMTiles.
Supported formats
Limitations
- Built on proj4js (MIT); coordinates only — attributes are never modified.
- Transformations use parametric proj4 definitions (7-parameter / HTDP strings). Grid-based high-accuracy transformations (nadgrids: NTv2 .gsb etc.) and external datum grids are not supported — use GDAL/cs2cs (PROJ) for those.
- Antimeridian handling: out-of-range longitudes are normalized (e.g. 190 → −170) and crossing features are split along the dateline before projecting (disclosed in the summary line).
- The map preview plots whichever side is in the WGS84 longitude/latitude domain (result side for geographic targets, input side otherwise); when neither side is geographic (e.g. UTM → Web Mercator) the page says so instead of plotting garbage.
- Very large layers may be slow.
Privacy
Privacy first: this tool runs entirely in your browser — your input and files never leave your device, and everything is cleared when you close the page.