Spotify audio dropouts and stuttering
If Spotycast playback cuts out, stutters, or produces short gaps, the root cause is usually buffer underruns, CPU pressure, Docker networking, PulseAudio timing, or a fragile Liquidsoap / Icecast pipeline.
The goal is to identify where timing becomes unstable: host load, capture path, stream preparation, Icecast publication, network delivery, or player buffering.
Quick answer
Audio dropouts are usually not caused by Spotify authentication. They are more often caused by timing instability somewhere in the audio pipeline: capture, buffering, encoding, publishing, network delivery or playback. Start by checking system load, buffer sizing and network stability before changing formats or stream topology.
Typical symptoms
Short gaps every few seconds
Playback resumes after each interruption, which usually points to periodic underruns or clock instability.
Playback degrades under load
The stream is stable at idle but becomes unreliable during CPU spikes, updates or background activity.
Player keeps reconnecting
The published stream becomes unstable enough that Roon, LMS, Volumio or another client reconnects or stops.
Common causes
- Buffer underruns in the capture or publish stage
- CPU saturation or storage / I/O contention on the host
- Docker bridge overhead or unstable virtual networking
- PulseAudio or PipeWire timing issues on the host
- Liquidsoap / Icecast buffer sizing too aggressive for the machine
- Wi-Fi instability between the player and the stream endpoint
- Unnecessary transcoding or resampling adding CPU pressure
Step-by-step fix
1. Check system load first
Dropouts often correlate with CPU saturation, disk pressure, memory reclaim activity or competing containers.
2. Reduce environmental noise
Stop heavy background jobs, package upgrades, indexing or competing containers while testing the stream path.
3. Prefer host networking
Bridge networking is functional, but host mode is often more predictable for discovery and stream delivery.
top
htop
free -h
df -h
docker stats
Networking and buffer checks
Apply one change at a time, then retest. Avoid changing codec, buffer, network and player settings all at once.
# Docker Compose hint
network_mode: host
# Validate the capture path
pactl list short sources
pactl list short sinks
# Test the stream outside the final player
ffplay http://YOUR_HOST:YOUR_PORT/YOUR_MOUNT
vlc http://YOUR_HOST:YOUR_PORT/YOUR_MOUNT
Restart the stream stack cleanly after changes
systemctl restart spotifyd
systemctl restart liquidsoap
systemctl restart icecast2
What to collect in logs
Capture the host load and the stream logs during an actual dropout event, not only after the fact.
date
uptime
free -h
df -h
docker stats --no-stream
journalctl -u spotifyd -n 200 --no-pager
journalctl -u liquidsoap -n 200 --no-pager
journalctl -u icecast2 -n 200 --no-pager
docker logs <container_name> --tail 200
How Spotycast fits into the fix
Spotycast is built to expose a stable HTTP / Icecast stream for Roon, LMS / Lyrion, Volumio, moOde and similar clients, but final robustness still depends on host resources, network quality, player behavior and conservative buffering across the pipeline.
When this is probably not a buffering issue
- Use Device not showing if the device is absent
- Use No audio if the stream is silent from the beginning
- Use Metadata if titles are missing or stale
Frequently asked questions
Why does Spotify audio stutter in Spotycast?
The most common causes are buffer underruns, CPU contention, unstable host audio timing or overly aggressive stream settings.
Can Docker networking cause audio dropouts?
Yes. It can add complexity and jitter. Host networking is often more reliable for discovery and stream delivery.
Should I change codec first when I get dropouts?
Usually no. Start with load, network and buffers. Codec changes should come later, after basic pipeline stability is confirmed.
Can Spotycast still be used with Roon or LMS if buffering is fixed?
Yes. Once the stream path is stable, Spotycast provides a standard HTTP / Icecast endpoint that Roon, LMS / Lyrion and other compatible players can consume.
Stabilize timing before changing the stream architecture.
Dropouts usually come from timing pressure: host load, capture jitter, buffer underruns, network delivery or player reconnect behavior. First make the system boring and predictable. Then tune buffers carefully, validate with VLC or ffplay, and only then revisit codecs or profiles.