Note from the site owner. This page was built with Claude Code, Anthropic's paid AI coding tool, and it failed badly. I asked for one thing: a web app that turns my home WiFi router's signals into a 3D image of my room. Instead it spent hours building fake, simulated results that looked like they worked, and didn't make clear until hours in that what I asked for can't be done in a browser. Several of its replies were cut off partway through by Anthropic's own safety filters. In my opinion it's bad at this, and paying for it has felt like a scam. What's left below is a calculator, not a sensor.
Every WiFi router is also a crude radar. Bodies bend its signal, so the router, your ISP, or a neighbour with an $8 board can tell when you're home, where you are, and even when you're asleep. Your WiFi password doesn't stop it. Enter what your router has and where you are, and the 3D view shows how sharply it could see you. This page doesn't sense anything by itself. No web page can read a router's radio. To use your real router's specs instead of typing them, run the optional helper below; it reads what your computer's WiFi already hears.
The Domainless Sonar Helper is a small, free, open-source app. It reads what your computer's WiFi hears from your router and sends it to this page: the details your router broadcasts to everyone nearby, and a live signal meter. It runs only while this page is open, talks only to this page, never sends anything to our server, saves nothing, and quits by itself when you close the page.
chmod +x domainless-sonar-helper-linux-* and run it in a terminal.
Run it with sudo for a fresh scan; without it you get the system's last scan.docker load -i sonar-helper-docker-amd64.tar docker run --rm -it --network host --cap-drop ALL --read-only \ --security-opt no-new-privileges domainless/sonar-helper:0.1.1The image is the helper alone (about 80 KB, no shell, no other software), running as an unprivileged user with every privilege dropped and a read-only filesystem.
--network host is what lets it
see your WiFi and reach this page. Don't have Docker?
Install Docker Engine (free).
Docker on macOS and Windows runs inside a virtual machine that can't see your WiFi, so on those use the app instead.Read from its beacon, which it broadcasts unencrypted about 10 times a second to every device nearby, whether or not they know your password.
Every network this computer hears can hear this computer back, a little weaker. Each ring is one network: signal strength gives a rough distance, never a direction. Networks are lettered, not named.
could sense you probably could too weak your own network
Each hump is one network, drawn across the frequencies it really uses: a wide channel covers several channel numbers. Height is how loud it is here. Networks that overlap yours take turns with it, which costs speed. This part is about speed, not spying.
your router overlaps yours other networks DFS: shared with radar
Your router's signal strength as this computer hears it. Real and live. A body moving between this computer and the router makes it flutter. It's one number, so it shows that something moved near the link, never where or what. For the best trace: press Calibrate, stand still until it's done, then walk between this computer and your router.
How this is worked out: distance step = speed of light ÷ (2 × channel width). Direction step ≈ 101° ÷ receive chains. Neighbour signal = router power − free-space loss − typical wall losses. These are physics limits from your router's specs, not measurements: no web page can read your router's radio. Six antennas usually means 2 chains on 2.4 GHz and 4 on 5 GHz; if you know the real number, enter it.
WiFi's coarse steps can't draw a shape. A 60 GHz mmWave radar measures distance to about 4 cm, enough to map walls and furniture as a 3D model you can orbit, measure and export, using a real radar plugged in over USB. Radar sees people through drywall: scan only spaces you own or have the occupants' permission to scan. Recording people without consent can break state surveillance and eavesdropping laws. Nothing you capture is uploaded.
Move the radar between captures and enter where it now sits; new frames land in the same model.
The STL imports into /cad with Open; PLY opens in MeshLab, CloudCompare or Blender. Filled closes gaps in dense surfaces and drops stray ghost points, then merges flat areas into large faces. At 1 cm a room is roughly 0.6M triangles (~30 MB).
| Part | Role | Notes |
|---|---|---|
| TI IWR6843AOPEVM (roughly $100–200) | 3D model | 60–64 GHz FMCW radar with the antenna on the chip and a ±60° field of view.
Flash TI's mmWave SDK 3.x out-of-box demo and load a 3D profile such as
profile_3d_aop.cfg from the SDK. The board shows up as two USB serial
ports: pick the Enhanced/CLI port first, then the Standard/data port.
Other xWR68xx boards running the same demo also work. |
| Any ESP32 or ESP32-S3 dev board (about $8) | WiFi motion | Flash Espressif's esp-csi csi_recv example, pointed at your
router or a second ESP32 running csi_send. It prints
CSI_DATA lines over USB, and this page reads them. |
The radar and the ESP32 talk to this page through the Web Serial API. That needs Firefox 151+ or a Chromium browser on a desktop. Safari can't open a serial port in any version, so on an iPad you can view and export saved scans but not capture new ones. TI sells its EVMs for evaluation and development. Check the board's own regulatory notice before mounting one permanently.
Getting a clean model. The radar reports the strongest returns each frame, plus some ghost points caused by reflections. The model only keeps a voxel once it has been hit several times (keep voxels hit ≥), and it never maps anything moving faster than 8 cm/s. People show up as live points but never become geometry. For a whole room, capture from two or three spots and enter each spot's pose.