SGP Official store ↗
Blog / Projects / CSI breathing detection

Can Wi-Fi CSI measure your breathing?

It sounds like science fiction: a Wi-Fi radio counting your breaths from across the room, with nothing touching you. The short answer is yes, under tight conditions, because breathing gently moves the chest and the chest gently moves the radio channel. This is the physics, the signal processing, and an honest account of where it stops working.

Published 20 Oct 2026Read 10 minLevel IntermediateTopic CSI breathing
CSI time one breath period of about 2–10 s · that is 6–30 breaths per minute (0.1–0.5 Hz)
FIG 1 — After filtering, the chest's rise and fall appears as a slow, near-periodic wave in the CSI. Counting its cycles per minute gives the breathing rate.

Of everything Wi-Fi sensing claims to do, measuring breathing is the one that most sounds like a magic trick. It is not magic, and it is not medical. It is a careful reading of a very small, very slow signal — and understanding exactly how small and how slow is the whole point of this article.

01The idea, honestly

As covered in our complete CSI guide, Channel State Information is the receiver's measurement of how a Wi-Fi signal was reshaped crossing a room, reported as amplitude and phase for each subcarrier. Anything that moves changes that pattern. Breathing is just a very small, very regular motion, so it leaves a very small, very regular change in the CSI.

That regularity is the key. A random fidget is hard to pick out, but breathing repeats at a steady pace, and periodic signals are exactly what frequency analysis is built to find, even when they are faint. So the task is not "see the chest move" but "find the one slow rhythm hiding in a noisy stream of numbers". When the subject cooperates by staying still, that rhythm is recoverable. When they do not, it is gone.

02The physics of a breath in the channel

When you inhale, your chest and abdomen expand by a small amount — on the order of a few millimetres to a centimetre or so of surface movement. The Wi-Fi signal reaching the receiver is the sum of many copies that bounced off the walls, the furniture and you. As your chest surface moves, the length of the paths that reflect off your body changes by that same small amount, so those reflected copies arrive with a slightly different phase and add up slightly differently.

Because 2.4 GHz and 5 GHz wavelengths are only centimetres long, a path-length change of even a few millimetres is a meaningful fraction of a wavelength, so it produces a measurable swing in the CSI. Breathe in, breathe out, and the CSI amplitude and phase rise and fall in step with your chest. Repeat it steadily and you get the slow, near-sinusoidal wave in the figure above.

Why it is so sensitiveThis is the same reason CSI beats a single signal-strength number. RSSI collapses the whole channel into one value and loses the subtle swing; CSI keeps amplitude and phase per subcarrier, so a millimetre-scale, chest-driven change still has somewhere to show up. See CSI vs RSSI for the contrast.

03Finding the breathing rate: band-pass, then FFT

The chest signal arrives buried under three kinds of nuisance: fast jitter from radio noise and small movements, slow drift as the room and hardware warm up, and the occasional large jump when the subject shifts. The classic pipeline peels these away in order.

  1. Pick a stable stream. Take CSI amplitude (or an unwrapped phase difference) from the subcarriers that respond most to the subject, and sample it steadily — tens of samples per second is plenty for breathing, because the signal itself is below 1 Hz.
  2. Band-pass filter. Keep only the frequencies where breathing lives: roughly 0.1 to 0.5 Hz, that is 6 to 30 breaths per minute for a resting adult. This single step rejects both the slow drift below the band and the faster noise above it, leaving mostly the breathing wave.
  3. Transform to frequency. Run an FFT over a window of the filtered signal. A clean recording shows a clear peak; the frequency of that peak, times 60, is the breathing rate in breaths per minute.
  4. Window length matters. Frequency resolution is roughly one divided by the window length, so to tell 12 from 15 breaths per minute apart you need a window of tens of seconds — commonly 30 to 60 seconds. Shorter windows react faster but give a coarser, jumpier rate.

There is a real trade-off in that last point. A long window gives a precise, stable rate but cannot track a change quickly; a short window updates often but is noisy and can latch onto a harmonic or a stray movement. Picking the window is the main tuning decision in a breathing monitor. The filtering and baseline work that feeds this pipeline is the subject of cleaning CSI data.

04What the setup actually needs

Breathing detection is far less forgiving than motion or presence. It works in a narrow band of conditions, and knowing them is the difference between a clean reading and a flat line of noise.

ConditionWhy it matters
Subject is stillBreathing is tiny; any larger movement swamps it completely
Subject is close to the linkReflections off a nearby body dominate the channel more strongly
Stable link with steady packetsFFT needs an even stream; gaps distort the frequency estimate
Quiet environmentFans, pets and other people add competing periodic motion

The happy accident is that these conditions line up with when breathing monitoring is useful anyway: someone resting, reading, or sleeping in their own room, close to a bedside device. A person walking around does not need their breathing counted, and could not have it counted by this method regardless.

05Why heart rate is a much harder problem

It is tempting to assume that if Wi-Fi can read breathing it can read a heartbeat too. Be sceptical. A heartbeat moves the body surface far less than breathing does — a fraction of a millimetre versus several millimetres — so the signal is much smaller to begin with. It also sits at a higher frequency, roughly 0.8 to 2 Hz for about 50 to 120 beats per minute, right where breathing's own harmonics and ordinary movement noise live, so it is both tiny and crowded.

Research setups have shown heart-rate estimates from radio signals, but they lean on cleaner, often multi-antenna hardware, a completely motionless subject, and heavy processing. On a single hobby board, treat heart rate as an experiment, not a feature, and be honest in anything you build that breathing is the reliable vital sign and heart rate is not. Over-claiming here is how Wi-Fi sensing projects lose credibility.

06Limits and keeping it to your own space

This is not a medical deviceNothing here is validated for clinical use. A CSI breathing estimate can be wrong, can lose the signal silently, and must never be relied on for anyone's health or safety. Build it to learn and to experiment, not to monitor a patient.

Two honest limits sit on top of that warning. First, it is single-subject: two people breathing in the same link produce two overlapping rhythms that a simple FFT cannot cleanly separate. Second, it is fragile — lose stillness or lose steady packets and the reading collapses, often without any obvious sign that it has.

And as with all Wi-Fi sensing, build it for your own space and your own body, or someone who has agreed to it, on a network you control. The point of camera-free sensing is privacy; that only holds if you respect the privacy of others while you experiment. If you want to see the kind of still-subject, close-range micro-motion this relies on put to a gentler use, our fall-detection explainer works the same signal from the opposite end — the sudden large movement rather than the tiny steady one.

07FAQ

Can Wi-Fi really measure breathing without touching you?

Yes, within limits. The small rise and fall of the chest changes the Wi-Fi channel, and that slow change shows up in CSI. With a still subject close to the link you can recover a breathing rate, but it is nothing like a medical device and it fails as soon as the person moves.

What breathing rate range can CSI pick up?

Normal adult breathing sits around 0.1 to 0.5 Hz, which is about 6 to 30 breaths per minute. A band-pass filter is set to that window so slow drift and faster movement are both rejected, leaving the periodic chest signal for the rate estimate.

Can Wi-Fi CSI measure heart rate too?

In theory, but it is much harder than breathing. The heartbeat moves the body surface far less than breathing does, so its signal is tiny and easily buried. Reliable heart-rate sensing needs cleaner hardware and heavier processing than a single hobby board, so treat it as experimental.

Does the person have to stay still for CSI breathing detection?

Almost completely still, yes. Breathing is a tiny, slow motion, so any larger movement such as typing or shifting in a chair swamps it entirely. The method works best on someone resting quietly, close to the link, which is exactly the situation where it is also most useful.

SGP Lab — written by the team that designs and builds SGP hardware in Europe. We test every example on our own boards before publishing.

SGP devices are sold only at our official store.

sgpstore.net ↗