# Ookla Speedtest open data (2025 Q4 to 2026 Q2), re-packaged for HTTP range reads

This directory holds a modified copy of files from the Ookla open data
set "Speedtest by Ookla Global Fixed and Mobile Network Performance Maps":
performance tiles (zoom-16 web mercator tiles, about 610 m at the equator)
for mobile and fixed networks, 2026 Q2 (April to June 2026), and for mobile
networks also 2026 Q1 (January to March 2026) and 2025 Q4 (October to
December 2025). Fixed is only available here for 2026 Q2.

## Files

| type | path | rows | row groups | bytes |
|---|---|---|---|---|
| mobile | parquet/performance/type=mobile/year=2026/quarter=2/2026-04-01_performance_mobile_tiles.parquet | 3,381,216 | 166 | 188,855,395 |
| fixed | parquet/performance/type=fixed/year=2026/quarter=2/2026-04-01_performance_fixed_tiles.parquet | 6,435,895 | 315 | 340,891,882 |
| mobile | parquet/performance/type=mobile/year=2026/quarter=1/2026-01-01_performance_mobile_tiles.parquet | 3,186,269 | 156 | 177,628,630 |
| mobile | parquet/performance/type=mobile/year=2025/quarter=4/2025-10-01_performance_mobile_tiles.parquet | 3,311,092 | 162 | 185,185,265 |

The directory layout mirrors the original bucket, so `type`, `year` and
`quarter` can be read from the path with hive partitioning, as with the
original. The files themselves do not contain those three columns (neither
do the originals).

Column types follow each original file. In the 2026 Q1 and 2025 Q4 mobile
files `avg_lat_down_ms` and `avg_lat_up_ms` are INTEGER, while in the 2026
Q2 files they are DOUBLE, as in the originals. When reading several
quarters together, use `union_by_name` or cast these two columns.

## Source

Fetched once on 2026-09-28 (09:08 to 09:12 UTC).

| type | source URL | bytes | ETag | Last-Modified |
|---|---|---|---|---|
| mobile | https://ookla-open-data.s3.us-west-2.amazonaws.com/parquet/performance/type=mobile/year=2026/quarter=2/2026-04-01_performance_mobile_tiles.parquet | 184,560,046 | "56eecd8ef8f3d2bd418d92787f4d9e6e" | Wed, 19 Aug 2026 21:35:46 GMT |
| fixed | https://ookla-open-data.s3.us-west-2.amazonaws.com/parquet/performance/type=fixed/year=2026/quarter=2/2026-04-01_performance_fixed_tiles.parquet | 353,986,294 | "d1abd67619e86a90d868b499e1bfb080" | Wed, 19 Aug 2026 21:49:29 GMT |

Both ETags are single-part and equal the md5 of the downloaded files.

Added later, fetched once on 2026-09-28 (23:18 to 23:20 UTC).

| type | source URL | bytes | ETag | Last-Modified |
|---|---|---|---|---|
| mobile | https://ookla-open-data.s3.us-west-2.amazonaws.com/parquet/performance/type=mobile/year=2026/quarter=1/2026-01-01_performance_mobile_tiles.parquet | 175,330,099 | "a2a2c8cd8111cf7ae0e65f4c6d2dac02-21" | Mon, 13 Apr 2026 19:04:39 GMT |
| mobile | https://ookla-open-data.s3.us-west-2.amazonaws.com/parquet/performance/type=mobile/year=2025/quarter=4/2025-10-01_performance_mobile_tiles.parquet | 182,319,554 | "9d568aa5d7a56dc68cb6b718bfb95077-22" | Sat, 03 Jan 2026 00:12:25 GMT |

These two ETags are multipart (21 and 22 parts). Both equal the multipart
ETag recomputed from the downloaded files with 8 MiB parts (md5 of the
concatenated part md5s). The whole-file md5s are
d52f9370f40be378f0ac59f37dac3e9f (2026 Q1) and
864dd4fecadd893ec7823d049cc9ea7d (2025 Q4). These originals have 6 row
groups each.

## What was changed

The original 2026 Q2 files have only 4 row groups (about 1 million rows each), so a
small area query has to read tens of MB. These copies are rewritten with
DuckDB 1.5.5 (spatial extension) as GeoParquet 1.0.0:

- All original columns are kept with their values unchanged: quadkey, tile
  (WKT, EPSG:4326), tile_x, tile_y, avg_d_kbps, avg_u_kbps, avg_lat_ms,
  avg_lat_down_ms, avg_lat_up_ms, tests, devices.
- Added `geometry` (GEOMETRY, WKB, OGC:CRS84), parsed from `tile`.
- Added `bbox` (STRUCT xmin, ymin, xmax, ymax; the same shape as Overture
  Maps), computed from `geometry`. Filter on `bbox` to prune row groups.
- Rows sorted by quadkey.
- Row groups of about 20,000 rows (ROW_GROUP_SIZE 20000; DuckDB writes
  20,480), zstd compression.
- GeoParquet `geo` key-value metadata is present.

Checked before publishing: same row count, same set of quadkeys (difference
0 in both directions), identical integer column sums and an identical sum of
per-row hashes over all original columns; row groups are ordered by quadkey
without overlap. The 2026 Q1 and 2025 Q4 mobile files were converted and
checked the same way on 2026-09-28 (their integer column sums also cover
`avg_lat_down_ms` and `avg_lat_up_ms`), and `bbox` and `geometry` were
checked against `tile` for every row.

## Licence and attribution

Licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0
International (CC BY-NC-SA 4.0), see LICENSE. Non-commercial use only. This
is an adapted version (columns added, rows re-sorted, re-partitioned into
smaller row groups) and is shared under the same licence.

Registry page: https://registry.opendata.aws/speedtest-global-performance/

Citation:

> Speedtest® by Ookla® Global Fixed and Mobile Network Performance Maps.
> Based on analysis by Ookla of Speedtest Intelligence® data for Q4 2025
> to Q2 2026 (October 2025 to June 2026; fixed: Q2 2026 only). Provided by
> Ookla and accessed 28 September 2026.
> Ookla trademarks used under license and reprinted with permission.
