Gaze Guard Power Draw: How Much Battery Does Running MediaPipe in a Chrome Extension Cost?
How much battery does running MediaPipe face detection in a Chrome extension cost? Measured SoC-level numbers comparing monitoring on vs. off, with a GPU/ANE breakdown.
Background
Gaze Guard is a Chrome extension that uses your webcam to detect when someone is peeking at your screen from a distance. All processing happens locally.
The core: MediaPipe FaceLandmarker (WASM) runs continuous face detection at ~10 FPS inside an offscreen document, estimating distance and head orientation to decide whether to alert you.
I'd always wondered how much that background inference actually costs. The most direct question: monitoring on vs. off — what's the difference?
Bottom line: turning monitoring on costs about 277 mW more (SoC level), mostly from the GPU and ANE. That's roughly 12–17 minutes of MacBook Pro M4 battery life (~2.8%). Lowering the detection FPS barely helps.
How was it measured?
sudo powermetrics --samplers cpu_power,battery -i 5000 -n 1
One snapshot was taken in each of two states:
- Idle: extension installed but monitoring off (no camera stream, no inference)
- Monitoring: normal use, detecting continuously at 10 FPS
Test machine: MacBook Pro M4 Pro / macOS 15
⚠️ Only one snapshot per condition — single measurements are noisy, so treat this as a trend, not a precise figure.
On vs. off — how big is the gap? (SoC level)
| State | CPU | GPU | ANE | SoC Total |
|---|---|---|---|---|
| Idle (monitoring off) | 110 mW | 78 mW | 0 mW | 188 mW |
| Monitoring | 165 mW | 259 mW | 41 mW | 465 mW |
| Delta | +55 mW | +181 mW | +41 mW | +277 mW |
Turning monitoring on raises total SoC power from 188 mW to 465 mW — about 277 mW extra.
Which component draws the most?
1. The GPU is the main cost
Once monitoring starts, GPU power jumps from 78 mW to 259 mW (+232%) — the largest increase of the three blocks. Two sources:
- Chrome's webcam pipeline: the video stream is handled by Chrome and runs constantly — the bulk of the GPU increase
- MediaPipe
detectForVideo()inference: the per-frame GPU cost of face detection
2. The ANE holds a steady +41 mW
Whenever monitoring is active, the Apple Neural Engine sits at 41 mW — a constant overhead after MediaPipe's WASM initialization, versus 0 when idle.
3. The CPU barely moves
CPU only rises from 110 mW to 165 mW (+55 mW). Inference and image processing land mostly on the GPU and ANE; the CPU isn't the bottleneck.
How much does it hit battery life?
Assuming a light workload draws 10 W total system power (screen, Wi-Fi, SSD, etc.):
| Model | Battery | Idle | Monitoring | Loss |
|---|---|---|---|---|
| MBP M4 Pro 14" | 72.0 Wh | 7 h 12 min | 7 h 00 min | -12 min |
| MBP M4 Pro 16" | 99.6 Wh | 9 h 58 min | 9 h 41 min | -17 min |
Monitoring costs roughly 2.8% of battery life — about 12–17 minutes.
Conclusion
| Figure | |
|---|---|
| Extra power with monitoring on | +277 mW SoC (vs. idle) |
| Main sources | GPU +181 mW, ANE +41 mW, CPU +55 mW |
| Battery-life loss | ~12–17 min on a MBP M4 Pro (2.8%) |
For a privacy tool that requires continuous local inference, 277 mW of overhead is acceptable. To save power, the effective approach isn't lowering the detection rate — it's pausing inference when no external face has been seen for a while. But that's a feature for another day.
FAQ
Does Gaze Guard drain the battery? Monitoring costs about 277 mW more than off. Under a light workload that's roughly 12–17 minutes of laptop battery (~2.8%) — an acceptable trade-off.
Does lowering the detection FPS save power? Barely. The bulk of the draw is Chrome's webcam pipeline and the GPU, and that cost is independent of FPS — so dropping the rate saves very little.
Which component uses the most power? The GPU sees the biggest jump (+181 mW), followed by the Apple Neural Engine (+41 mW); the CPU rises only 55 mW.
中文版:Gaze Guard 耗電量實測 Test date: 2026-06-17 / Extension version: v1.0.3 GitHub: steepinglogic/gaze-guard