Skip to content

v1.4 • Data • 16kb gzipped • MIT

GeoPin

A marker and clustering layer for maps, rendered on canvas so ten thousand pins stay smooth.

★ 3.1kGitHub
↓ 5.7k / week● MIT● TS 5.0+
geopin-preview.png
Abstract preview graphic for GeoPin

// why geopin

Ten thousand markers

Markers are drawn to canvas rather than created as DOM nodes, which is the difference between smooth and unusable at scale.

● 10ms render● 60fps● 0 deps

// stack

Renderer agnostic

Sits on top of whichever map library you already use, or on a bare canvas with your own projection.

GeoPin started as a single file in a client project and stayed small on purpose. It does one job, it does it in 16kb gzipped, and it has no runtime dependencies.

Getting started

Install it, import it, call it:

npm i geopin-js

Markers are drawn to canvas rather than created as DOM nodes, which is the difference between smooth and unusable at scale.

What it does not do

It does not manage your state, style your components or ship a plugin system. Those are your decisions, and keeping them out is what keeps the bundle honest.

  • Distance clustering
  • Precise hit testing
  • MIT licensed, commercially friendly

Features

Distance clustering

Clusters recompute on zoom with a grid index rather than a full pass.

Precise hit testing

Pointer events resolve to the marker under the cursor, including inside a cluster.

Accessible output

Every visual is paired with a text alternative that reflects the same data.

Export built in

One call produces PNG, SVG or the underlying values as CSV.

Six themes

Token-driven, so bringing your own palette is a single object.

ESM and types

Ships module and CommonJS builds with hand-written type definitions and source maps.

Get GeoPin v1.4

5 files • .min.js 16kb • .zip 94kb • sha384 verified

Changelog

v1.4 Dec 31 2025 • latest
  • Grid-indexed clustering
  • Hit testing inside clusters
  • Retina rendering fixed
v1.3.3 Sep 26 2025
  • Node 18 is now the minimum supported version
  • CommonJS build restored for older bundlers
v1.3.2 Aug 13 2025
  • Reworked the public API for consistency
  • Deprecated helpers removed
View full archive →

// related

Related products

Sep 10 • v2.0

ChartForge

Canvas charts in twelve lines. Responsive, accessible and dark-mode ready, with no D3 learning curve.

View →
Aug 30 • v3.2.1

MotionEase

Physics-based micro-animations with a single call. Spring curves that feel right without a tuning session.

View →
Aug 19 • v1.9.4

FormFlow

Validation and multi-step logic that works the same in React, Vue and vanilla. Your markup stays yours.

View →

Ship the dashboard today.

MIT licensed. Commercial friendly. Five-minute setup.