Skip to content

Raster and satellite

--raster puts an image tile layer under the vector map, by provider name, URL or PMTiles file:

Terminal window
mapterm --raster esri --at 38.8895,-77.0353 -z 15 # satellite
mapterm --raster 'https://tile.openstreetmap.org/{z}/{x}/{y}.png'
mapterm --raster gibs --date 2026-10-30 -z 6 # NASA daily imagery
mapterm --raster mall.pmtiles # your own imagery, offline
mapterm --raster-list # providers and the keys they need
mapterm --raster esri --at 38.8853,-77.0386 -z 14
                                                 ⢸                                      ⡇    ⢸                
            Reflecting Pool          Rainbow Pool⢸                                      ⡇    ⢸                
                                                 ⢸                            15th Street Southwest           
                                                 ⣸                                     ⡸⢄⡀   ⢸                
                                              ⢀⠔⠊⡇⢇                           Jefferson Drive Southwest⡒⠒⠒⠒⡖⠒⠒
                                      17th Street Southwest⠒⠒⠢⠤⡀                    ⢀⠔⠁      ⢸⠤⢤⡀      ⠈⠒⠒⠉   
                                 ⠠⣀    ⢀⠤⠒⠉   ⣠⣊⣀⣀⣀⣀⣣⣀   ⢠⠃    ⠑⡄                  ⢰⠁        ⢸  ⡇             
              ⡀                    ⠉⠒⠤⢤⠃ ⣀⠤⠔⠊⠉⠁      ⠈⠉⠉⠑⠓⢤⣄⣀⣀⣀⣠⣃⣀⣀⡀         ⡀  ⣀⡠⠤⢺⣒⣒⣒⣒⣤⢄⣀⡀ ⢸  ⢇  ⠘⡄ ⢲⢀⠤⠤⢤ ⡇⡇
              ⣇⣀⣀⣀⡀                  ⢀⣸⠔⠉                  ⠈⢢⠉⠑⠒⠤⢄⣀⠉⠓⠒⠤⠤⠤⠤⠤⠤⠤⠓⠊⠉⡠⠔⠊⢹     ⠉⠒⠪⠭⡻⡒⠒⠚⠒⠒⠒⠓⠒⠚⠚⠒⠒⠚⠒⠓⠓
             ⢠⠃                   ⣀⠤⠊⠁⢸                      ⡇     ⠉⠑⠒⠤⣀    ⣀⣀⠤⠊   ⢸         ⡇⡇  ⣀ ⢠      ⣀⡀  
⣙⣍⣉⣉⣉⣉⣉⣉⠉⠒⠒⠒⠒⠚⠒⠒⠒⢶⠒⠒⠒⠢⠤⠤⠤⠤⠤⠤⠤⠔⠒⠒⠊⠉  ⣀⣀⣈⣢⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀Independence Avenue Southwest   ⢸ ⠸⠤⠤⠤⠤⠤⠤⠤⡇⡇  ⣿ ⢸      ⡇⡇  
 ⠱⡀     ⠉⠉⠉⠉⠉⠉⠉⠉⠑⢺⡖Independence Avenue Southwest          Maine Avenue Southwest   ⢸         ⡇⡇  ⣿ ⢸   ⢀  ⣧⠃  
  ⢣              ⢸⡇                                           ⠑⡄       ⠈⠒⢄ ⠈⢆      ⢸         ⡇⡇  ⣿ ⢸   ⢸  ⣿   
  ⠠⢇             ⢸                                             ⠈⠢⡀        ⠱⡀⠈⢆     ⢸⠉⠉⠉⠉⠉⠉⠉⠉ ⡇⡇  ⡏ ⠈⢹  ⢸  ⢹   
   ⠈⡆            ⢸                                               ⢱         ⠱⡀⠸⡀    ⢸   ⠉⠉⠉⠉⠉⡍⡟⡗⠒⠒⠓⠒⠒⠚⠒⠒⠚⠒⠒⠚⡖⠒⠒
    ⠙⡄           ⢸                                                ⢇         ⠱⡀⢣    ⢸     ⢐⣒⣒US 1           ⡇  
     ⢱           ⢸                                                 ⠳⣀        ⠱⡀⢇   ⢸        ⡇⡇⡇            ⡇  
     ⡸            ⡇                                                  ⠑⠢⠤⠤⢄⣀⣀⡀ ⢣⠈⢆  ⢸        ⡇⡇⣿   ⢠    ⡄   ⡇  
  ⢀⢀⠔⠁            ⡇                                                         ⠈⠑⠋⠣⡈⢢ ⣸⠤⡤⠤⠤⠤⠤⠤⠤⠧⡇⣿⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉
   ⠱⡀           ⢀⠜⠢⡀                                                            ⠈⢢⠑⣏⡆⠣⠤⠤⠤⠤⠤  ⡇⣿               
    ⠈⠢⣄      ⡠⠔⢪⠁  ⠈⠢⡀                                                            ⠉⠣⡫⢆  ⡰⠩⡉⠑⡄⣿⢸        ⡠⠒⠒⢢⡠⣤⣶
      ⠘⢕⢄  ⢀⠜   ⠑⠢⡀⡠⠜⠁                                                              ⠈⠲⣕⢄⢇ ⡇ ⡸⣿⡎    ⢀  ⠰⣁⡠⠴⠒⡯⠛⠉
        ⠙⣄⠎⠁      ⠈⠁                                                                  ⠑⡝⣗⡻⣅ ⡿⢸⡧⠤⠤⠴⣒⣥⠶⠊⠉⠓⠤⠤⠔⠁  
         ⠈⠢⡀                                          Tidal Basin                      ⠘⣼⠈⢒⢵⡧⡇⠑⢄⣠⠞⠊           
   Ohio Drive Southwest                                         ⢀⡠⠤⠖⠒⠒⠒⠒⠒⠒⠒⠢⠤⠤⢄⣀⡀       ⣿⡰⠁⡜⡜⡾⣵⡮⣑⠢⣀           
              ⠑⢄                                            ⢀⠤⠒⠉⠁             Ohio Drive Southwest⣲⢵⣢⣤⢄⣀⡼⣱    
                ⠑⢄                                        ⡠⠒⠁                        ⠈⢱Maine Avenue Southwest⠶
                  ⠑⢄                                    ⢀⠜                           ⡰⡝⢀⢎⢿⣿⡎       ⠉⠉⠈⠑⠪⠭⣒⡬⢍⣉⠑
                    ⠑⢄                                 ⢠⠊        ⢀⣀⣀⡀              ⢀⡮⠊⢀⢎⣾⢯⠊⠈⠢⡀            ⠈⠑⠒⣭
                      ⠑⢄                              ⡰⠁      ⢀⠔⠉⠁  ⠈⠑⠤⡀         ⢀⢴⠁⡇⢀⢎⢎⢮⠃   ⠈⠑⢄            ⢀⡴
                        ⠑⢄⡀                          ⡰⠁      ⢠⠃        ⠹⡀        ⡼⠒US 1⢮⠃⢀⡠⡄    ⠑⢄         ⡰⠋⢀
                          ⠈⠢⡀                       ⡜        ⡜          ⡇       ⡜  ⡰⡩⢣⡳⢅⠜⠧⠒⠉      ⠑⢄     ⡠⢊⡠⠊⢁
                            ⠈⠑⢄                   ⡠⠊         ⢸         ⢀⠇      ⡸  ⡰⡱⣡⠏⢈⠮⣑⢄⡀         ⠑⢄⢀⠤⢊⠔⡡⠔⠊⠁
                               ⠑⠢⡀              ⢀⠔⠁           ⠑⢄  West Basin Drive Southwest⡀       ⢀I-395    
Esri World Imagery in cell-color mode, with roads and labels on top. With kitty graphics, the same command shows the full-resolution imagery.

On terminals with the kitty graphics protocol (Ghostty, kitty, WezTerm, and through herdr), tiles are real images underneath the text. Vector lines, labels, markers and inspect draw on top. Each tile is sent to the terminal once; panning and zooming only move it.

Elsewhere, each cell gets the average color of the imagery under it. That is what the snapshot above shows.

MAPTERM_GRAPHICS=kitty or MAPTERM_GRAPHICS=cells overrides the guess.

Name Imagery Key
osm OpenStreetMap standard map (light use only) none
esri Esri World Imagery, global satellite none
usgs USGS National Map imagery, US only, public domain none
eox Sentinel-2 cloudless 2024, global, ~10 m (CC BY-NC-SA) none
gibs NASA GIBS daily satellite imagery, ~250 m (--date, default yesterday) none
esri-light, esri-dark Esri Gray Canvas, quiet backgrounds for overlays none
vantor Vantor (Maxar) Vivid basemap VANTOR_API_KEY
planet Planet basemaps (your subscription’s mosaics) PL_API_KEY + a mosaic
mapbox Mapbox Satellite, Retina tiles MAPBOX_ACCESS_TOKEN
maptiler MapTiler Satellite MAPTILER_KEY

More detail per provider is in the raster providers reference.

Keys never go on the command line. mapterm reads them from the provider’s environment variable or from a command:

Terminal window
mapterm --raster vantor --raster-key-cmd 'pass show vantor/api-key'

Keys are only added to requests (Vantor’s as the maxar-api-key header) and are blanked out of error messages. Keyed providers don’t cache tiles on disk unless you pass --raster-cache, since commercial licenses often limit storing them.

  • Use {z}, {x} and {y} in any order. For TMS services (rows counted from the bottom) use {-y} or add --tms.
  • Put {key} where an API key goes; it’s filled from MAPTERM_RASTER_KEY or --raster-key-cmd.
  • --raster-header 'Name: {key}' adds a request header. Write the key as {key} rather than the key itself, so it stays out of ps and your shell history.
  • --raster-param NAME=VALUE fills any other {NAME} in the URL.
  • --raster-attribution TEXT credits the imagery in the status bar. Esri, USGS, OpenStreetMap and EOX are credited automatically.

Planet serves each customer’s named mosaics. List the ones your key can use, then pick one:

Terminal window
mapterm --raster-list-mosaics
mapterm --raster planet --raster-param mosaic=NAME # or set PLANET_MOSAIC

Planet only accepts the key in the tile URL; mapterm still never prints it.

--raster also takes a PMTiles archive of PNG, JPEG or WebP tiles, as a file or an https:// URL read with range requests: one file of your own imagery that works offline.

Press v to cycle the vector map on top of the imagery: lines and labels, labels only, off. Area fills are always off over a raster layer.

  • mapterm keeps at most 48 MiB of decoded images in the terminal, freeing off-screen tiles first, so the terminal never evicts one that’s showing. herdr allows 64 MiB per pane. MAPTERM_KITTY_BUDGET_MB changes the budget.
  • Tiles are fetched at most two at a time and cached on disk for 30 days.
  • mapterm picks the raster zoom so each image pixel covers about two screen pixels, the Retina norm, which keeps the number of tiles down.

Respect each tile server’s usage policy. OpenStreetMap’s own tile servers allow only light use, with attribution.