Export Best Practices

Exporting is the final step in many workflows. Choosing the right scale, projection, and format ensures your outputs are usable and your exports succeed without errors.

Learning objectives

  • Choose appropriate scale and CRS for exports.
  • Optimize exports to avoid timeouts and memory errors.
  • Select the right file format for your use case.
  • Organize exports with naming conventions.

Why it matters

A failed export means wasted time. Wrong scale means wrong data. This guide helps you get exports right the first time.

The complete export template

Use this template for reliable exports:

// Best practice export template
Export.image.toDrive({
  image: myImage,
  description: 'NDVI_Florida_Summer2023',  // No spaces, descriptive
  folder: 'EarthEngine',                    // Organize by project
  fileNamePrefix: 'NDVI_Florida_Summer2023',
  region: roi.bounds(),                     // Use .bounds() for efficiency
  scale: 30,                                // Match source resolution
  crs: 'EPSG:4326',                         // WGS84 for compatibility
  maxPixels: 1e13,                          // Increase if needed
  fileFormat: 'GeoTIFF',                    // or 'TFRecord'
  formatOptions: {
    cloudOptimized: true                    // For large files
  }
});

Scale: Getting it right

Data Source Native Resolution Recommended Export Scale
Landsat 8/9 30m 30
Sentinel-2 (visible) 10m 10
Sentinel-2 (red edge) 20m 20
MODIS 250-1000m 250, 500, or 1000
SRTM DEM 30m 30
Classification results varies Match input imagery

Rule of thumb

Export at the native resolution of your source data. Exporting at finer resolution doesn't add information—it just makes bigger files.

CRS (Coordinate Reference System)

Common projections

CRS Use Case Units
EPSG:4326 Global, web maps, sharing Degrees
EPSG:32617 UTM Zone 17N (Florida) Meters
EPSG:5070 CONUS Albers Equal Area Meters

Tip: For area calculations, use an equal-area projection (Albers, UTM) not WGS84.

File formats

Format Best For Notes
GeoTIFF Raster images for GIS Universal, use cloudOptimized: true
SHP (Shapefile) Vector data for ArcGIS Max 2GB, limited field names
GeoJSON Web applications Human-readable, larger files
CSV Tabular data, statistics No geometry by default
KML Google Earth Good for visualization

Avoiding export failures

Problem: "User memory limit exceeded"

// Solution 1: Reduce area
var smallerRoi = roi.buffer(-5000);  // Shrink by 5km

// Solution 2: Increase scale
Export.image.toDrive({
  ...
  scale: 100,  // Was 30
});

// Solution 3: Use bestEffort
var stats = image.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: roi,
  scale: 30,
  bestEffort: true  // Auto-adjusts scale
});

Problem: "Computation timed out"

// Solution: Export instead of print
// DON'T: print(bigComputation);
// DO: Export the result
Export.table.toDrive({
  collection: bigFeatureCollection,
  description: 'my_results'
});

Problem: Multiple TIF files created

Large exports automatically split into tiles. This is normal!

// In your GIS software, use "Mosaic to New Raster" to combine them
// Or use fileDimensions to control tile size:
Export.image.toDrive({
  ...
  fileDimensions: [4096, 4096]  // Larger tiles, fewer files
});

Naming conventions

Use consistent, descriptive names:

// Pattern: Sensor_Variable_Location_Date_Notes
// Examples:
'L8_NDVI_Florida_2023Summer_Median'
'S2_Classification_Miami_2023_RF'
'MODIS_LST_California_2023_Max'
  • No spaces (use underscores)
  • Include sensor for multi-sensor projects
  • Include date range
  • Include processing notes (method, version)

Export to Asset vs Drive

Export to Drive Export to Asset
Best for Final products, sharing Intermediate results, reuse in EE
Download? Yes, easy Not directly
Use in EE? Must re-import Instant access
Storage Your Google Drive EE cloud (quota limited)

Try it: Export with all best practices

var roi = ee.Geometry.Rectangle([-82.5, 29.5, -82.0, 30.0]);

var composite = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
  .filterDate('2023-06-01', '2023-08-31')
  .filterBounds(roi)
  .median()
  .multiply(0.0000275).add(-0.2);

var ndvi = composite.normalizedDifference(['SR_B5', 'SR_B4'])
  .rename('NDVI');

Export.image.toDrive({
  image: ndvi,
  description: 'L8_NDVI_Gainesville_2023Summer',
  folder: 'EarthEngine',
  region: roi,
  scale: 30,
  crs: 'EPSG:32617',  // UTM 17N for Florida
  maxPixels: 1e9,
  fileFormat: 'GeoTIFF'
});

Common mistakes

  • Forgetting scale (exports at wrong resolution).
  • Not specifying region (exports entire globe attempt).
  • Using spaces in description or file names.
  • Exporting visualized images when you need raw values.
  • Not clicking "Run" in the Tasks panel.

Quick self-check

  1. What scale should you use for exporting Landsat imagery?
  2. When would you export to Asset instead of Drive?
  3. What does cloudOptimized: true do?
  4. How do you prevent "memory limit exceeded" errors?

Next steps