Why AirPlay goes silent at 250 ms
Updated 2026-10-06
AirPlay goes silent at 250 ms because macOS subtracts a fixed 250 ms from the latency you set. At 250 ms the real lead time is zero, every packet reaches the speaker after its play time, and the speaker drops them all. 350 ms leaves 100 ms of lead, which covers the 70–85 ms a HomePod reports needing.
What the log shows
When AirPlayXPCHelper builds its audio engine, it logs the values it's using. At a setting of 250 ms on macOS 15.7.4:
AudioEngineRealTime using audio latency 250 ms, audio latency min 250 ms, audio latency adjust -250 ms
maxAudioLatency = 11025, maxAudioLatencyAdjust = -11025
At 350 ms the same lines read maxAudioLatency = 15435, maxAudioLatencyAdjust = -11025. The adjust is fixed at 11,025 frames (250 ms at 44.1 kHz) whatever you set, so:
| Setting | Minus fixed adjust | Lead time left |
|---|---|---|
| 2000 ms (default) | − 250 ms | 1750 ms |
| 750 ms | − 250 ms | 500 ms |
| 500 ms | − 250 ms | 250 ms |
| 350 ms | − 250 ms | 100 ms |
| 250 ms | − 250 ms | 0 ms: silent |
The speaker reports how much time it needs between a packet arriving and playing it, arrivalToRenderLatencyMs: 69 ms on our HomePod mini, 84 ms in Preroll's tests. With zero lead, nothing arrives in time.
Why not 300 ms?
300 ms leaves 50 ms of lead, less than the speaker needs. 350 ms is the lowest value Preroll found stable, and the lowest Lagless offers. If 350 ms stutters on your Wi-Fi, use 500 ms.
Questions
Does macOS stop me setting 250 ms?
No. It logs audio latency min 250 ms but accepts 250 ms and simply plays nothing.
Is the 250 ms adjust the same on every Mac?
We measured it on macOS 15.7.4. Treat other versions as unverified until you check the log.
Sources
- AirPlayXPCHelper log on macOS 15.7.4, captured with
log show --process AirPlayXPCHelper - Preroll research notes