# geojson-precision-ts

> Remove meaningless precision from GeoJSON.

Latest version **1.6.1** (published 2026-07-30) · MIT license · 0 weekly downloads

## Install

```sh
npm install geojson-precision-ts
pnpm add geojson-precision-ts
yarn add geojson-precision-ts
bun add geojson-precision-ts
```

Provides the command `geojson-precision`.

## Health

**Score 60/100 (C)** — status: active.

Positive: esm support; no vulnerabilities; recently updated; high maintenance score.

Warnings: low downloads; no types.

## Facts

| | |
|---|---|
| Version | 1.6.1 |
| Published | 2026-07-30 |
| First published | 2022-05-05 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM |
| Node | >=22.19.0 |
| Dependencies | 1 |
| Unpacked size | 42.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Logue |
| Maintainers | logue |
| Keywords | geojson, precision, geojson precision |

## Links

- npm: https://www.npmjs.com/package/geojson-precision-ts
- Repository: https://github.com/logue/geojson-precision
- Issues: https://github.com/logue/geojson-precision/issues
- npm.io page: https://npm.io/package/geojson-precision-ts

## Dependencies (1)

- [commander](https://npm.io/package/commander.md) ^15.0.0

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 1.6.1 (latest) — 2026-07-30
- 1.6.0 — 2026-07-01
- 1.5.0 — 2026-05-17
- 1.4.0 — 2025-06-03
- 1.3.4 — 2025-05-26
- 1.3.3 — 2025-04-01
- 1.3.1 — 2024-11-23
- 1.3.0 — 2024-09-28
- 1.2.8 — 2024-02-27
- 1.2.7 — 2024-02-27
- 1.2.6 — 2023-11-20
- 1.2.5 — 2023-08-24
- 1.2.3 — 2023-05-01
- 1.2.2 — 2023-04-05
- 1.2.1 — 2023-03-14
- … 8 more at https://npm.io/package/geojson-precision-ts/versions

## README

# geojson-precision-ts

English | [日本語](README.ja.md)

[![npm version](https://img.shields.io/npm/v/geojson-precision-ts.svg)](https://www.npmjs.com/package/geojson-precision-ts)
[![NPM Downloads](https://img.shields.io/npm/dm/geojson-precision-ts.svg?style=flat)](https://www.npmjs.com/package/geojson-precision-ts)
[![jsdelivr CDN](https://data.jsdelivr.com/v1/package/npm/geojson-precision-ts/badge)](https://www.jsdelivr.com/package/npm/geojson-precision-ts)
[![Open in unpkg](https://img.shields.io/badge/Open%20in-unpkg-blue)](https://uiwjs.github.io/npm-unpkg/#/pkg/geojson-precision-ts/file/README.md)
[![Open in Gitpod](https://shields.io/badge/Open%20in-Gitpod-green?logo=Gitpod)](https://gitpod.io/#https://github.com/logue/geojson-precision-ts)
[![X Follow](https://img.shields.io/twitter/follow/logue256?style=plastic)](https://x.com/logue256)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/logue?label=Sponsor&logo=github&color=ea4aaa)](https://github.com/sponsors/logue)

Remove meaningless precision from your GeoJSON. If your coordinates go out to 7+ digits, you are [probably misrepresenting your data](http://gis.stackexchange.com/a/8674/14196). Most scenarios in which GeoJSON is useful (i.e. web-related applications) do not require survey-grade precision, and a higher value is placed on a compact file size. Trimming the precision of coordinates can greatly reduce file size, while removing the appearance of fake high precision.

This fork is rewritten in typescript.

## Installation

```sh
pnpm add geojson-precision-ts
```

## Usage

```js
parse(*geojson*, *precision*, *extrasPrecision*, *options*);
omit(*geojson*);
```

| Parameter       | Type                   | Default   | Description                                                                                                                                                                                                                                                                                                                                                                                              |
| --------------- | ---------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| geojson         | GeoJSON                | undefined | `geojson` is a valid GeoJSON object, and can be of type `Point`, `LineString`, `Polygon`, `MultiPoint`, `MultiPolygon`, `MultiLineString`, `GeometryCollection`, `Feature`, or `FeatureCollection`. If you are unsure whether or not your GeoJSON object is valid, you can validate it using [Ajv](https://ajv.js.org/) with the [geojson-schema](https://www.npmjs.com/package/geojson-schema) package. |
| precision       | number                 | 6         | `precision` is a positive integer. If your specified `precision` value is greater than the precision of the input geometry, the output precision will be the same as the input. For example, if your input coordinates are `[10.0, 20.0]`, and you specify a `precision` of `5`, the output will be the same as the input.                                                                               |
| extrasPrecision | number                 | 2         | `extrasPrecision` is a positive integer. If your specified `extrasPrecision` value is greater than the precision of the input geometry, the output precision will be the same as the input. For example, if your input coordinates are `[10.0, 20.0]`, and you specify a `precision` of `5`, the output will be the same as the input.                                                                   |
| options         | GeojsonPrecisionOption |

`options` are bellows:

| Option           | Type    | Default | Description                            |
| ---------------- | ------- | ------- | -------------------------------------- |
| ignorePoint      | boolean | false   | Skip Point                             |
| ignoreLineString | boolean | false   | Skip LineString                        |
| ignorePolygon    | boolean | false   | Skip Polygon                           |
| removeDuplicates | boolean | true    | Delete points at the same coordinates. |

`omit()` is an alias for `parse(t, 0, 0, { removeDuplicates: true })`, a function that removes all decimal coordinates from GeoJSON.

### How do you choose tolerance?

Tolerance corresponds to how much resolution you can spare. Higher the tolerance, lower is your geometry's resolution. Tolerance is specified in degrees. The above table applies here too. The table gives a general idea on what tolerance to use for your task. For example, if you can allow an error of 1.11km (for example while plotting a big city map) set your tolerance to 0.01.

```plain

decimal
places   degrees          distance
-------  -------          --------
0        1                111  km
1        0.1              11.1 km
2        0.01             1.11 km
3        0.001            111  m
4        0.0001           11.1 m
5        0.00001          1.11 m
6        0.000001         11.1 cm
7        0.0000001        1.11 cm
8        0.00000001       1.11 mm
```

### Example

#### `parse()` function

```js
import { parse } from "geojson-precision-ts";

const trimmed = parse(
  {
    type: "Point",
    coordinates: [18.984375, 57.32652122521709],
  },
  3,
);
```

`trimmed` will now look like this:

```json
{
  "type": "Point",
  "coordinates": [18.984, 57.326]
}
```

#### `omit()` function

This is useful when you want to pin a static image by specifying pixels.

```js
import { parse } from "geojson-precision-ts";

const omitted = omit({
  type: "Point",
  coordinates: [18.984375, 57.32652122521709],
});
```

`omiited` will now look like this:

```json
{
  "type": "Point",
  "coordinates": [18, 57]
}
```

## CLI

Geojson-precision can also be used via the command line when installed globally (using `-g`).

### Parameters

#### precision (-p)

A positive integer specifying coordinate precision

#### extras precision (-e)

A positive integer specifying extra coordinate precision for things like the z value when the coordinate is \[longitude, latitude, elevation\].

#### input

An input GeoJSON file

#### output

An output GeoJSON file

#### Other flags

- `--ignore-point`: Skip Point geometries.
- `--ignore-line-string`: Skip LineString geometries.
- `--ignore-polygon`: Skip Polygon geometries.
- `--remove-duplicates`: Remove consecutive duplicate points.

### Example use

```sh
geojson-precision -p 4 input.json output.json
```

## Inspiration

Concepts, ideas, etc borrowed to various degrees from:

- [wellknown](https://github.com/mapbox/wellknown/pull/18)
- [LilJSON](https://github.com/migurski/LilJSON)

## License

MIT

Original Version by jczaplew's [geojson-precision](https://github.com/jczaplew/geojson-precision).

TypeScript version by [Logue](https://github.com/logue).

- Stop mutation of original object feature by [frankrowe](https://github.com/frankrowe).
- Skip each geometry type feature by [andrewharvey](https://github.com/andrewharvey).
- Remove duplicate points feature by [matthewrj](https://github.com/matthewrj).

---
_Source: https://npm.io/package/geojson-precision-ts · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
