Skip to content

GeoJSON Buffer Tool

Create buffer zones around GeoJSON geometries at a specified distance.

Skip to the tool

Buffers answer proximity questions. Everything within 500 metres of a station, a riparian setback, a delivery radius, a noise contour.

Set a distance in kilometres and the tool buffers every feature in the input. Your original geometry stays visible in grey inside the result so the offset is easy to judge. Distances must be positive; Turf does not compute inward buffers here, so a negative value is refused with a message.

Turf buffers in a projected space internally, so accuracy degrades for very large radii and at high latitudes. For a buffer measured in hundreds of kilometres near the poles, project the data properly and buffer in a database instead.

What Is a Buffer?

A buffer is a polygon that represents the area within a given distance of a geometry. Buffering a Point creates a circle, buffering a LineString creates a corridor, and buffering a Polygon expands its boundary outward. The buffer distance is specified in kilometers.

How to Use the Buffer Tool

Paste your GeoJSON and set the buffer distance in kilometers using the input control. The tool generates a new GeoJSON Polygon (or MultiPolygon) representing the buffered area, which is displayed on the map. You can then download or copy the result.

Negative buffer values are not supported. To shrink a polygon inward, you would need a dedicated erosion operation.

Questions a Buffer Answers

  • Creating exclusion zones around sensitive areas (airports, schools)
  • Defining service areas within a certain distance of a facility
  • Generating search corridors along a route or path
  • Building proximity buffers for spatial analysis and site selection
  • Estimating noise or pollution impact zones around infrastructure

For other spatial operations, see clip, union, and turf.intersect().

A One Kilometre Ring Around Central Park

Buffer the Central Park point by 1 kilometer. Paste this Point feature and set the distance to 1 km:

GeoJSON{
  "type": "Feature",
  "properties": { "name": "Central Park" },
  "geometry": {
    "type": "Point",
    "coordinates": [-73.9654, 40.7829]
  }
}

The result is a Polygon of 33 positions approximating a 1 km radius around Central Park, which is 32 points around the ring plus the repeat of the first position that closes it. Truncated, the output looks like this:

GeoJSON (excerpt){
  "type": "Feature",
  "properties": { "name": "Central Park" },
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [-73.9654, 40.7919],
        [-73.9561, 40.7917],
        [-73.9474, 40.7909],
        ...
        [-73.9654, 40.7919]
      ]
    ]
  }
}

The polygon ring closes back to the starting point. On the map, you will see a circle overlaid on Manhattan spanning from roughly 96th Street to 69th Street.

Where the Buffer Comes From, and Where It Frays

Buffering runs through @turf/buffer. Turf projects the geometry into a planar coordinate system, generates offset curves at the requested distance using JSTS, the JavaScript port of the Java Topology Suite, then reprojects the result back to WGS 84. Turf's default of eight segments per quarter-circle is what produces the 32 points around a buffered point.

That projection step is also the limitation. Accuracy is good for the distances most people buffer by, single-digit to low double-digit kilometres in temperate latitudes, and degrades as the radius grows or the geometry moves toward the poles. For a buffer measured in hundreds of kilometres, or any buffer whose exact edge carries legal or regulatory weight, do the work in PostGIS on a projection chosen for the area. The PostGIS guide covers the round trip.

The distance box on this page is in kilometres. Turf itself accepts other units, which the spatial operations guide shows in code.