Get Started

Your whole city's map in 20MB, working with zero signal

Cut your town out of a free world map into one small file, then browse it down to street level with the internet switched off. Central London comes to 20MB, small enough for a USB stick. No account, nothing to install.

30 minIntermediateTools: FreeStep 1 free
Tested 9 Oct 2026 · pmtiles CLI 1.31.2, MapLibre GL JS 6.13.0, pmtiles.js 4.5.0, Caddy 2.11.7, Edge, Windows 11
Your city's street map in one file you own (central London is 20MB)
A map page that zooms to street level with the internet switched off
Your own pins and points on it, saved on your machine
  • A double-click launcher for a grab-bag USB stick, and an offline map on your phone
Before you start
  • A Windows PC (Mac and Linux commands are given alongside). Nothing gets installed, so you don't need admin rights
  • About 180MB of free space for a city the size of central London, tools included (140MB once you delete the zips)
  • An internet connection for the downloads only. After that, none
  • Never used PowerShell? Do the terminal survival kit first
● What you'll have in 30 minutes
Preview
The finished map with every internet request blocked: central London from your own 20MB file, a fly down to Covent Garden at street level, then a dropped pin with its coordinates.
01/06Get the pmtiles tool0 done
STEP 01 of 06~3 min

Get the pmtiles tool

pmtiles cuts your area out of a world map without downloading the whole world.

  1. Protomaps publishes a free map of the whole world, built from OpenStreetMap and updated every day, as one huge file. You never download that. The pmtiles tool reaches into it over the internet and copies out just the box you ask for, into one small file of your own.

  2. It's a single program in a zip, so nothing gets installed. Open PowerShell and paste:

    Windows (PowerShell)
    mkdir $HOME\mymap; cd $HOME\mymap
    curl.exe -L -o pmtiles.zip https://github.com/protomaps/go-pmtiles/releases/download/v1.31.2/go-pmtiles_1.31.2_Windows_x86_64.zip
    Expand-Archive pmtiles.zip -DestinationPath pmtiles
    .\pmtiles\pmtiles.exe version
    Output
    pmtiles 1.31.2, commit a3e4951ea6a0477b784c27c1dcbfd9c130878c5a, built at 2026-07-22T18:59:03Z
  3. The zip is 18MB. The program inside is 59MB.

    Mac (Apple silicon; on an Intel Mac use Darwin_x86_64)
    mkdir -p ~/mymap && cd ~/mymap
    curl -L -o pmtiles.zip https://github.com/protomaps/go-pmtiles/releases/download/v1.31.2/go-pmtiles-1.31.2_Darwin_arm64.zip
    unzip pmtiles.zip -d pmtiles
    ./pmtiles/pmtiles version
    Linux (x86_64)
    mkdir -p ~/mymap && cd ~/mymap
    curl -L -o pmtiles.tar.gz https://github.com/protomaps/go-pmtiles/releases/download/v1.31.2/go-pmtiles_1.31.2_Linux_x86_64.tar.gz
    mkdir pmtiles && tar -xzf pmtiles.tar.gz -C pmtiles
    ./pmtiles/pmtiles version
    TipOn a Mac or Linux, swap .\pmtiles\pmtiles.exe for ./pmtiles/pmtiles in every later command; the options are the same. Other builds are on the releases page ↗.
✓
CheckpointThe version command prints pmtiles 1.31.2.
If it breaksExpand-Archive says 'Failed to create file ... already exists'
Expand-Archive says 'Failed to create file ... already exists'
You've already unpacked it, so you can carry on. To unpack it again over the top, add -Force to the end of the line.
Still stuck? Ask the community
Next mission · Off-grid & offlineDownload whole video channels for flights, with subtitles, in one command
→