Jun 28, 2026 · 6 min read

Rendering millions of points in the browser with deck.gl

On the mapping platforms I've built, the hard part is rarely the data pipeline — it's the last hop: getting millions of features onto a screen at 60fps. WebGL-based rendering with deck.gl is what made that tractable.

The core idea is to hand the GPU flat typed arrays and let it do the work per-vertex, instead of touching the DOM per feature. Once your data is in that shape, a ScatterplotLayer or a custom layer can draw enormous datasets smoothly.

The tricks that mattered

  • Aggregate before you paint. Screen-space binning and hexagon aggregation turn "a million points" into "a few thousand cells" that read better anyway.
  • Cull aggressively. Nothing outside the viewport, and nothing below a zoom threshold, ever reaches a draw call.
  • Move projection to the GPU. Doing coordinate math in shaders keeps the main thread free for interaction.

The lesson that generalizes: performance at scale is usually a design decision about what not to draw, made long before you reach for a profiler.