See where your Wi-Fi is weak.

Walk around with your laptop and click where you stand on a floor plan. Wi-Fi Heatmapper measures the signal strength there, and optionally the real speed. A few rooms later you have a heat map of your home or office, and you know where the next access point should go.

Free and open source. macOS, Windows and Linux. Version 0.8.2.

Try it: click any room to measure it. The router is in the living room.
The Heat maps tab: signal strength and download speed heat maps over a house and garage, mostly green near the house and yellow toward the garage.
The real app. Green is good; yellow and red are where you need another access point.

What it does

Answers the question “is it the Wi-Fi?” for every room, with numbers you can compare.

Signal strength everywhere
Each spot records the signal in dBm and percent, plus the access point, channel and band it was connected to.
Real speed, not just bars
Choose “Signal and speed” and every spot also gets its download and upload speed, measured against a second computer on your network with iperf3, plus jitter and lost packets.
Noise and signal-to-noise
Where your system reports noise (macOS and many Linux drivers), you also get a signal-to-noise map: it shows spots that look strong but are drowned out by interference.
Before and after
Fix the colour scale of each map, then survey again after moving the router or adding a mesh node. Same colours, same numbers. Copy the settings to the next floor in one click.
Any floor plan
Upload an architect’s drawing, a screenshot from the map, or a phone photo of a pencil sketch. It does not need to be to scale.
Access points by name
Call aa:bb:cc:dd:ee:* “Upstairs mesh” and every band of that node shows up under one name in the table and export.
Works with AI agents
Claude or another agent can read and explain your surveys, and walk you through a new one: it tells you where to stand and measures once you say you’re there. More below.
Easy to report a problem
Wi-Fi differs on every system. Report a problem fills in a GitHub issue with the app’s diagnostics, leaving out your password, network names and addresses.
Stays on your computer
No account, no cloud, works offline. Surveys are plain JSON files; export points as CSV and maps as PNG. The app only sends anonymous usage counts, which tell me it’s used; turn them off any time.

Signal only, or signal and speed?

Every survey measures the signal. Speed is optional: it needs a second computer, and tells you what you actually get. You choose per survey in Settings.

Signal only A laptop on a floor plan reads the Wi-Fi signal from the router. Near the router the spot turns green; in the far room, behind a wall, it turns red.
Signal only. Click where you stand; the spot turns green or red. Nothing to set up.
Signal and speed A second computer is wired to the router with a cable. Test data goes from the laptop through the router to that computer (upload), then back (download), and a bar fills for each test. laptop server, wired Upload Download
Signal and speed. Test data goes to a second computer and back, so you see the speed you really get in each spot.
ComparedSignal onlySignal and speed
SetupNothingiperf3 on two computers; one stays put, wired if possible
Time per spotAbout 2 sAbout 6–10 s
Tells youWhere coverage is weakWhat speed you actually get; catches interference and slow links that look strong
LimitsStrong signal is not always fastA server on Wi-Fi halves the result; the fixed-rate (UDP) test is capped at 100 Mbps by default

More in getting started and measuring speed.

How it works

A survey of a flat takes about ten minutes.

One measurement: the laptop at a spot on the floor plan reads the Wi-Fi signal from the router, optionally runs a speed test against a second computer wired to the router, and a coloured dot appears on that spot.
One measurement. The laptop reads the signal where you stand, and with speed on, sends test data to a wired computer and back.
From points to a heat map: coloured dots, one per measurement, spread out and blend into one continuous map, green near the router and yellow to red far from it.
From points to a heat map. Each dot’s colour spreads to its neighbours, closer points counting more, until the dots blend into one map.
  1. Pick a floor plan

    Use the bundled example or upload your own image in Settings. Each floor plan keeps its own survey.

  2. Click where you stand

    The app reads the Wi-Fi signal (and tests the speed, if you chose to) and drops a coloured dot on that spot.

  3. Cover every room

    One or two spots per room, more in big ones and near the edges. Switch off or delete any odd reading.

  4. Read the heat maps

    Drag the radius until the dots merge into one surface, then download the maps you need.

The Floor plan tab: survey points on the plan, each a coloured dot labelled with its signal percentage.
Each dot is one measurement, labelled with its signal strength.

Under the hood

The app uses what your system already has: CoreWLAN on macOS (through a small helper, no password), the Native Wifi API on Windows (with netsh as a fallback), and iw on Linux. Speed (throughput, technically) comes from iperf3. The app’s server runs each measurement and saves the point, so closing the tab doesn’t lose it, and nothing runs through a shell. The heat map is inverse-distance weighting drawn with WebGL. The details are on the how it works page.

Survey with an AI agent

An optional MCP server lets Claude Code, Claude Desktop or another agent work with the app on your computer. You carry the laptop; the agent does the bookkeeping.

YouLet’s measure the ground floor. I have the laptop.

AgentNothing is measured in the east half yet. First the kitchen, top right on the plan. Tell me when you’re there.

YouI’m by the counter.

AgentKitchen: signal 48% (−74 dBm), download 180 Mbps. Weak but usable. Next: the hallway by the front door.

  • It can read and explain your surveys, plan where to measure, set up and copy settings, measure each spot once you confirm, and prepare a problem report.
  • It can’t walk around, see the drawn maps (it gets the numbers instead), or handle your sudo password, and it needs the app running.
  • It stays local: it only talks to the app on this computer, asks before every measurement, and can’t delete anything.

Setup for each client is in the AI agent guide.

Download

Version 0.8.2. Everything is built in, except iperf3 if you want to measure speed.

macOS

macOS 13.5 (Ventura) or later

Or with Homebrew, which installs iperf3 too:

brew install --cask hnykda/tap/wifi-heatmapper

The apps are not signed, so macOS and Windows warn you the first time you open them. The install guide shows the two clicks it takes on each system, where your data is kept, and what has been tested so far.

Rather run it from source? With Node.js 22.12 or newer (also the way to go on a Mac older than 13.5):

git clone https://github.com/hnykda/wifi-heatmapper.git
cd wifi-heatmapper
npm install
npm run dev        # then open http://localhost:3000

There is also a Docker image for Linux hosts, and npm run dev:mock to try the app with made-up measurements on any machine. All files are on the releases page.

Documentation

The same pages live in the repository as Markdown, so they change together with the code.

Free, and open to help

Wi-Fi Heatmapper is MIT licensed: no ads, no accounts, no paid tier. If it saved you an afternoon of guessing where to put the router, a star helps others find it.