GeoTIFF Tile Size & Pyramid Calculator

Input any raster extent and pixel size to instantly calculate tile grid dimensions, GDAL overview pyramid levels, and compressed storage estimates for tiled GeoTIFF, Cloud-Optimised GeoTIFF (COG), and MBTiles.

Tiled GeoTIFF COG MBTiles Overview Pyramid Storage Estimator
Share this tool

Raster Extent

Ground sample distance in the same units as the extent.

Tile & Band Settings

1 = grayscale/DEM, 3 = RGB, 4 = RGBA

Format & Compression

8=imagery, 16=Sentinel/Landsat, 32=DEM float

JPEG requires 8-bit multi-band data.

WebP is not supported for Tiled GeoTIFF.

Quick Load:

Calculating...

Enter raster extent and pixel size, then click Calculate Tiles to see tile grid dimensions, overview pyramid levels, and compressed storage estimates.

What Is Raster Tiling and Why Does It Matter?

A tiled raster splits a large GeoTIFF into a regular grid of fixed-size blocks — typically 256×256 or 512×512 pixels. Without tiling, any software that needs to display or process a small area must read the entire file from disk. With tiling, only the blocks covering the requested area are read, dramatically reducing I/O for large datasets.

An overview pyramid (also called reduced-resolution datasets or RRDs) stores pre-computed, decimated copies of the raster at coarser resolutions — 2×, 4×, 8×, and so on. When a map client zooms out, it reads the appropriate overview level instead of downsampling the full-resolution data at query time. The result is fast rendering at any zoom level with minimal CPU overhead.

This calculator gives you the exact tile count, overview dimensions, and storage requirements before you run gdal_translate or gdaladdo, so you can choose the right tile size, compression, and format for your workflow.

Overview Pyramid Structure

8×: 625 × 500 px 6 tiles 4×: 1,250 × 1,000 px 20 tiles 2×: 2,500 × 2,000 px 80 tiles Full Res: 5,000 × 4,000 px 320 tiles | 57.22 MB uncompressed ~33% overhead (overviews)Aerial RGB example: 5,000 × 4,000 px, 256×256 tiles, 3 overview levels

How to Calculate GeoTIFF Tile Grid Dimensions

The tile grid is simply the raster pixel dimensions divided by the tile size, rounded up. A 10,000 × 8,000 px raster with 256×256 tiles requires 40 × 32 = 1,280 tiles at full resolution. Switching to 512×512 tiles reduces this to 20 × 16 = 320 tiles — four times fewer, but each tile covers four times the area.

The tile count directly affects initial rendering speed. When a web map client loads a viewport, it requests every tile overlapping that viewport at the current zoom level. Fewer, larger tiles means fewer HTTP requests for large overviews; more, smaller tiles gives finer granularity for partial reads.

In GDAL, tiling is applied with:

gdal_translate -co TILED=YES -co BLOCKXSIZE=256 -co BLOCKYSIZE=256 input.tif output.tif

Understanding GDAL Overview Pyramids

GDAL computes overview level count as:

levels = floor(log2(min(width, height) / tileSize))

For a 10,000 × 8,000 raster with 256×256 tiles: floor(log2(8000 / 256)) = floor(3.97) = 3 overview levels (2×, 4×, 8×), plus the full-resolution base — four levels total.

Build overviews in GDAL with:

gdaladdo -r average output.tif 2 4 8 16

The -r average resampling method produces the best visual quality for continuous data. Use -r nearest for categorical data (land cover, classification rasters) to avoid value blending.

Tiled GeoTIFF vs. MBTiles vs. XYZ: Which Format Should You Use?

Tiled GeoTIFF / COG is the best choice for GIS processing workflows. It preserves the full coordinate reference system, band metadata, and nodata values. A Cloud-Optimised GeoTIFF adds an internal layout that allows HTTP range requests, making it suitable for cloud object storage without a tile server.

MBTiles packages tiles into a single SQLite database. It is the dominant format for offline mobile maps (Mapbox, MapLibre) and desktop GIS applications that need a portable single-file delivery mechanism. MBTiles performs well up to roughly 5 billion pixels; above that, SQLite page management can become a bottleneck.

XYZ tiles store each tile as an individual file in a z/x/y.png directory structure. This is the simplest format to serve with any static web server and is compatible with all web mapping libraries (Leaflet, OpenLayers, MapboxGL).

Compression for Raster Tiles: LZW, DEFLATE, JPEG, ZSTD Compared

LZW is the safe default for any lossless GeoTIFF. It works across all GDAL versions, handles 8/16/32-bit data, and typically achieves 2–3× compression on imagery. Use it when compatibility matters more than maximum compression.

DEFLATE outperforms LZW slightly (2.5–4×) and is the recommended default for Cloud-Optimised GeoTIFFs. Combine with predictor=2 (horizontal differencing) for integer data or predictor=3 for float data to increase ratios further.

ZSTD (available in GDAL 3.1+) offers the best ratio for lossless compression (3–5× on 8-bit imagery) with faster decode speeds than DEFLATE. It is the recommended choice for large COGs on modern infrastructure.

JPEG achieves the highest compression (8–12×) but is lossy and limited to 8-bit RGB data. Never use JPEG for DEMs, classification rasters, or any single-band scientific data where pixel values must be exact.

Cloud-Optimised GeoTIFF (COG): Serving Rasters from Object Storage

A COG is a regular GeoTIFF with two structural properties: internal tiling and a specific byte ordering that places overview tiles before the full-resolution data. This layout allows HTTP clients to use range requests to fetch only the bytes covering a viewport window, without downloading the entire file.

COGs are served directly from S3, Google Cloud Storage, or Azure Blob without a tile server, reducing infrastructure cost. Libraries like rio-cogeo, gdal_translate, and QGIS's COG export can create them.

The recommended GDAL creation pipeline:

gdaladdo -r average input.tif 2 4 8 16 gdal_translate input.tif cog.tif \ -co TILED=YES -co BLOCKXSIZE=512 \ -co BLOCKYSIZE=512 -co COMPRESS=DEFLATE \ -co COPY_SRC_OVERVIEWS=YES

Why the ~33% Pyramid Overhead Rule Holds

Each overview level contains 1/4 the pixels of the previous level (half the width and half the height). Starting from the full-resolution base storage B, the series of overview sizes is:

B/4 + B/16 + B/64 + … = B × (1/4) / (1 − 1/4) = B/3

This geometric series converges to exactly 1/3 of the base storage — approximately 33% overhead — regardless of how many levels are built, for large enough rasters. Small rasters deviate from this rule because integer rounding means overview levels don't perfectly halve.

This means building a full overview pyramid almost always costs less than 35% extra disk space, while typically delivering 3–10× faster rendering at overview zoom levels. The trade-off is almost always worth it for any raster larger than a few thousand pixels per side.

Compression Comparison Table

CompressionRatio (8-bit RGB)Lossless?GDAL SupportBest For
None1×YesAlwaysArchive master copy, temporary processing files
LZW~2–3×YesAlwaysCategorical, elevation, general lossless
DEFLATE~2.5–4×YesAlwaysCOGs, DEMs, default lossless choice
ZSTD~3–5×YesGDAL ≥ 3.1Large COGs on modern infrastructure
JPEG~8–12×NoAlways8-bit aerial imagery and orthophotos only
WebP~6–10×BothGDAL ≥ 2.2Web tiles (MBTiles, XYZ) and online map services

Tile Format Comparison

FormatContainerCloud StreamingGIS ProcessingBest For
Tiled GeoTIFF / COGTIFF IFDYes (HTTP range)Full supportQGIS, ArcGIS, cloud raster workflows
MBTilesSQLite DBNo (download first)LimitedOffline mobile maps, single-file distribution
XYZ TilesFilesystem z/x/yYes (HTTP static)NoneLeaflet, MapboxGL, OpenLayers slippy maps

Frequently Asked Questions

How do I create a tiled GeoTIFF with GDAL?

Use gdal_translate with the TILED=YES, BLOCKXSIZE, and BLOCKYSIZE creation options: gdal_translate -co TILED=YES -co BLOCKXSIZE=256 -co BLOCKYSIZE=256 -co COMPRESS=DEFLATE input.tif output.tif. For a Cloud-Optimised GeoTIFF, build overviews first with gdaladdo, then add -co COPY_SRC_OVERVIEWS=YES to the gdal_translate command.

What is the difference between internal and external overviews?

Internal overviews are stored inside the GeoTIFF file itself, making the file self-contained and portable. External overviews are stored in a separate .ovr file alongside the original. GDAL defaults to external overviews for read-only files and internal overviews when the file can be written. For COGs, always use internal overviews (COPY_SRC_OVERVIEWS=YES).

How do I build overviews with gdaladdo?

Run: gdaladdo -r average file.tif 2 4 8 16. The numbers are the decimation factors. Use -r average for continuous data (imagery, elevation) and -r nearest for categorical data (land cover, classification). For very large files, add --config COMPRESS_OVERVIEW DEFLATE to compress the overviews.

Why is my GeoTIFF so slow to display in QGIS?

The most common cause is a missing overview pyramid. Open the Layer Properties, go to the Pyramids tab, and build internal overviews. If the file is read-only (e.g. on a network share), QGIS writes an external .ovr file instead. A second common cause is a large uncompressed file — re-export with DEFLATE or LZW compression.

How do I convert a GeoTIFF to MBTiles with GDAL?

Use gdal_translate with the MBTiles driver: gdal_translate -of MBTiles -co TILE_FORMAT=PNG input.tif output.mbtiles. For WebP tiles, use -co TILE_FORMAT=WEBP. Note that MBTiles uses a Web Mercator tile scheme; reproject your raster to EPSG:3857 first with gdalwarp if needed.

What is the maximum raster size supported by GeoTIFF?

Standard GeoTIFF supports rasters up to 4 GB (32-bit file offsets). BigTIFF removes this limit and supports files larger than 4 GB. Create a BigTIFF with GDAL using the BIGTIFF=YES creation option: gdal_translate -co BIGTIFF=YES input.tif output.tif. Most modern GIS software supports BigTIFF.