HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
mapbox
vector-tile-spec
Learning & Reference2014–2025
mapbox / vector-tile-spec

vector-tile-spec

Mapbox Vector Tile specification

8Distinct people
8Mentions
0Explicit recommenders
1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Mapbox Vector Tile specification

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 2:04:58 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year8 dated mentions

Observed mentions: 2014-06-05 07:41:39 UTC to 2025-09-04 23:33:29 UTC.

0122014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20142015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC202
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC000
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC101
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC000
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC202

What Hacker News says

8 sources
>What does this mean? Ugh, dumb typo - it was late. I meant "Obviously they'd never use GeoJSON in that use case". > Higher in this post I see a reference to "GeoJSON vector tiles" and I'm curious what that means. It's what it sounds like: vector tiles, but instead of protobuf, the data is simply passed directly as GeoJSON. Really convenient for a use case like a server that generates data on demand: easy to generate (ie, it avoids all the difficulty of OP's post), easy to inspect in the browser for debugging. Only downside is it's less efficient space-wise than protobuf. So it's useful as a first step for a proof of concept (to be replaced by MVT), or in a case where the size doesn't matter. >Once you've done that, you might as well cram it into a protobuf or other highly efficient container. I'm disputing the "you might as well" bit for
Read the rest
many use cases. :) (Again, I think Mapbox is very geared towards large scale uses, but a lot of the internet is small and bespoke). It was actually Tangram, not OpenLayers, that I was thinking of that supports it: https://github.com/tangrams/tangram?tab=readme-ov-file#vecto... >MVT is a technology built on and for S3-like services. It's interesting that you say that. My experience, having been down this road a few times, is that serving MVT from S3 is generally a pain that I don't recommend for new clients. It takes some pretty specific AWS configuration, and the process of uploading thousands of individual files is slow and error-prone. (I wrote a guide on it once but can't find it now). Yeah it's a good solution for large-scale uses (again...) but not good for the average user. PMTiles seems like a pretty compelling alternative for those scenarios: ship one file instead of thousands, and rely on HTTP range requests. The downside I ran into is that not all "S3-like services" support that. In practice, I recommend either hosting data on Mapbox/MapTiler/whoever is cheapest this month if the volumes are low, or setting up a tiny tile server. Even a tiny server is sufficient for serving tiles, and costs a fraction of what Mapbox charges (especially since Mapbox's change to charging per square kilometre, which is absolutely cost prohibitive for sparse data). >we continue to research additional optimizations for VT, Can you elaborate? The spec (https://github.com/mapbox/vector-tile-spec) has not had an update in 4 years, and since MVT v2 did not include any substantive changes, the spec is essentially unchanged since 2014. In 2018, a working group for a version 3 was announced (https://github.com/mapbox/vector-tile-spec/issues/103) but then apparently quietly abandoned only a couple of months later.
In How to build vector tiles from scratch
A single ocean tile on mapbox is 39 bytes: 1a25 7802 0a05 7761 7465 7228 8020 1217 1803 2213 0980 69e0 7f1a dfa8 0100 00bf bf01 e0a8 0100 0f Decodes to this protobuf: layers { name: "water" features { type: POLYGON geometry: 9 geometry: 13440 geometry: 16352 geometry: 26 geometry: 21599 geometry: 0 geometry: 0 geometry: 24511 geometry: 21600 geometry: 0 geometry: 15 } extent: 4096 ve
Read the rest
rsion: 2 } Geometry interpretation is here: https://github.com/mapbox/vector-tile-spec/tree/master/2.1#4... And produces this geometry before reprojecting to the tile coordinates: Layer name: water Geometry: Polygon Feature Count: 1 Extent: (0.000000, 0.000000) - (4096.000000, 4096.000000) Layer SRS WKT: (unknown) mvt_id: Integer64 (0.0) OGRFeature(water):0 POLYGON ((0 0,0 4096,4096 4096,4096 0,0 0)) But of course, this doesn't specify a color, just "the ocean is a rectangle".
In The smallest 256x256 single-color PNG file, and where you've seen it (2015)
Mapbox has been extremely generous in releasing their rendering libraries under a permissive license. Creating a map renderer that matches the user experience of Google Maps is a FAANG-level effort, and Mapbox GL also encompasses: * A single style specification format that works well for both base map rendering and data overlays * Parity across native and web rendering * Smooth SDF text rendering with decent i18n support * A font to SDF renderer that is open source: https://github.com/mapbox/node-fontnik * A tiled data format that is open source: https://github.com/mapbox/vector-tile-spec I hope this licensing change can spur some competition among open source renderers. I’d recommend taking a look at: * Tangram: https://github.com/tangrams/tangram - another WebGL based renderer with some key advantages over MapboxGL JS such as custom sha
Read the rest
ders and canvas text * OpenLayers: https://openlayers.org has some vector and WebGL capabilities now as well * Harp: https://www.harp.gl is another new WebGL option I've been working recently with Tangram, so contact me (see user link) if you have questions or are interested in collaborating!
In Mapbox-gl-js is no longer under the 3-Clause BSD license
I suppose the strategy is that, if you know your expected data types and data structures pretty well, it's benefitial to apply delta encoding before general purpose compression, especially for simple RLE compressors. In graphics, delta might be better, since the glyph is offset anyway on the canvas, so when drawing, the renderer can use the diff information as-is when the last point is known to reduce the number of operations to a simple addition with smaller length numbers as opposed to absolute positioning. It might also keep the extracted memory footprint low since you might be able to get away with less bits per encoded change in a typed array data structure. Still wonder if Mapbox ever did some size and speed benchmarking of general purpose compressed raw signed integers vs. their zig-zag and delta encoded vector tile geometries. htt
Read the rest
In Introducing OpenType Variable Fonts
Yes, the data is fairly compact. Data for the entire world enough for rendering to zoom level 18 generally comes in under 35GB (give or take 10 GB depending on what features you need). If you need to got to zoom levels approaching ~18 then there is no way to do this with image tiles. Vector tiles are the more efficient way. More details on the encoding at https://github.com/mapbox/vector-tile-spec and the encoder at https://github.com/mapbox/mapnik-vector-tile
In Introducing Mapbox GL

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.