Announcing tylertoo (GeoParquet --> PMTiles goes brrr)
10.12.2026
Just before the CNG Forum, I cut a v0.8 release of tylertoo: a GeoParquet to PMTiles generator in Rust. It’s fast (7-10x faster than tippecanoe), supports cool stuff like remote reads, streaming, bounded memory, and sharded jobs on multiple machines, has pretty much all the other functionality of tippecanoe, and, oh yeah, it’s really fast. Check it out!
Wait, why not just use tippecanoe?
Because tippecanoe doesn’t support GeoParquet (and isn’t planning to), which means that generating PMTiles from GeoParquet requires converting to an intermediate temp file (either GeoJSON or Flatgeobuf, which are usually several times larger than the GeoParquet equivalent) and then streaming that into tippecanoe. This is annoying and wasteful and slow, and since I’m spending a lot of my time lately building Portolan catalogs (which strongly encourages PMTiles alongside all GeoParquet files), this started to be a pretty major bottleneck, which is why I built tylertoo.

Why use tylertoo?
Do you like GeoParquet? Do you like not waiting forever while generating your PMTiles? Me, too!
tylertoo is a Rust crate, a CLI and a Python package. It supports:
- GeoParquet from local files, folders, globs, file lists, or
s3://,gs://andhttps://, reading only the row groups a--bboxor--filterneeds - streaming, with bounded-memory profiles and spill-to-disk
- sharded builds across machines, merged back without re-encoding tiles
- most of
tippecanoe’s generalization tools: drop rates, point clustering, line coalescing, tiny-polygon squares, a tile-size cap, stable feature ids, max-zoom guessing decode,mergeandpyramid, for going back to GeoParquet and combining archives
Because of these features, tylertoo is particularly suited to large workflows; Chris Holmes and Isaac Corley at Taylor Geospatial have been using it to generate global PMTiles for the latest Fields of the World release, splitting runs across a Slurm cluster. Anecdotally, each year of data (~150 million polygons) takes about an hour, where previous runs took days or never finished. In their other testing (Planet, FIRMS) they’ve seen roughly 10x speedups, with much less swap: one Planet run needed a terabyte of swap for tippecanoe to finish. Here’s an example of what the field boundary PMTiles generated with tylertoo look like:
Still not convinced? Check out the tutorials (global boundaries and Brazilian fields) and try it yourself.
What’s under the hood?
The cool thing with tylertoo is that it’s actually based on a crude implementation of overviews in GeoParquet, which turns out to be a pretty efficient way of generating PMTiles. Each feature gets a row at every zoom level it shows up in, so that each zoom level is represented by a band of rows – sorted from coarse to fine – where the finest level is just the original unsimplified data. From there, writing PMTiles just requires cutting those features into tiles, and then encoding and writing them, with nearly every step parallelized (tippecanoe, in contrast, has to decide what to drop and simplify separately for each tile, as it writes it). The approach I’ve got working right now is fairly hacky and ad hoc, but eventually I’d like to move toward adopting something like Kanahiro Iguchi’s proposed cloud-optimized GeoParquet extension. (I got a chance to hear Kanahiro present about this at the CNG forum last week and was very impressed by how well thought out it is.)
As for the actual tiling algorithms, they’re mostly just reimplementations of tippecanoe, ported over to Rust courtesy of Claude. CI then checks changes against a pinned tippecanoe build on real datasets. For a comparison of tippecanoe and tylertoo, see the docs site.
Why’s it called that?
What’s next?
tylertoo isn’t truly prod-ready (in the sense that it’s not battle-tested like tippecanoe) but that’s the goal of the next couple of releases. I want a bunch of new users to check it out, catch bugs, request features, etc. (Take a look at the repo for some of the existing planned features.)
Beyond that, my eventual goal is to wire tylertoo into geoparquet-io so that users can generate PMTiles directly from geoparquet-io without reliance on tippecanoe. This should lead to much faster performance in geoparquet-io and just a better UX generally.
Acknowledgements
A big thanks to the tippecanoe maintainers for making an awesome tool with a well-tested codebase. Also to Chris Holmes for being my first real user and pushing a whole bunch of code to get tylertoo in working order for the latest releases.