Blog

What makes a GeoTIFF cloud-optimized?

September 22, 2026 · Earthal Labs · 2 min read

Landsat 8 satellite image of seaweed farms along South Korea's south coast: dark grids of cultivation ropes in shallow turquoise water between islands

A Cloud Optimized GeoTIFF (COG) is still a GeoTIFF. Any software that reads GeoTIFFs reads COGs. The "cloud optimized" part is a promise about how the bytes are arranged inside the file, and that arrangement is what lets a browser or a script read a small window of a 10 GB image without downloading the rest.

The three ingredients

  1. Internal tiling. The pixels are stored in square blocks (typically 256 or 512 pixels) instead of long scanlines, so a request for one neighbourhood touches a few tiles rather than the whole image.
  2. Overviews. Downsampled copies of the image are stored inside the same file, so a zoomed-out view reads a small pyramid level instead of resampling millions of full-resolution pixels.
  3. Header-first layout. The file's index lives at the beginning, so a client learns where every tile sits from one small initial read.

Combine those with HTTP range requests, the standard header that asks a web server for "bytes 4,096,000 to 4,161,535", and plain object storage becomes an imagery server. No tile service, no database: QGIS, GDAL, rasterio and web clients simply fetch the ranges they need.

Making and checking one

Since GDAL 3.1 there is a dedicated driver, so conversion is one command:

gdal_translate input.tif output.tif -of COG -co COMPRESS=DEFLATE

Choose the compression to match the data: DEFLATE or ZSTD for analytic rasters where exact values matter, JPEG or WEBP inside a COG for visual basemaps where size matters more. To verify a file someone hands you, rio cogeo validate (from the rio-cogeo package) checks the layout rather than trusting the name.

When a COG is the wrong answer

  • Deep multidimensional data. Time-series cubes with many variables (weather, climate, model output) fit chunked formats such as Zarr or NetCDF better than a stack of two-dimensional files.
  • Constantly changing mosaics. A COG is a file, and rewriting a huge file on every update wastes effort; a catalog of smaller scenes usually serves better.
  • Vector data. Boundaries, parcels and networks have their own cloud-native answers; a COG only carries rasters.

For the common case, though — orthophotos, elevation models, satellite scenes that are written once and read for years — a folder of validated COGs behind any HTTP endpoint is the simplest imagery infrastructure that actually works, and it pairs naturally with a STAC catalog describing what each file is.

Image: seaweed farms off South Korea's south coast, Landsat 8, 2014. NASA Earth Observatory (public domain).


← Back to all posts