Dropouts

Troubleshooting · Buffering and stuttering

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.

Spotify stuttering Audio cuts out Buffer underrun Liquidsoap / Icecast
Related guides: Device not showing, No audio, Metadata.

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.

In practice, the fastest wins are often: more conservative buffers, host networking, wired Ethernet for validation, and eliminating unnecessary CPU contention on the host.

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
If playback is fully silent from the start, use No audio. If the Spotify device never appears, use Device not showing.

Step-by-step fix

01 · Load Check host pressure CPU, memory reclaim, disk pressure and competing containers often explain dropouts.
02 · Network Validate host networking Use host networking where appropriate and validate on wired Ethernet.
03 · Buffers Increase conservatively Stabilize the path before changing codec, topology or endpoint format.
04 · Client Compare players Test VLC / ffplay alongside Roon, LMS or Volumio to isolate client behavior.

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
If the system is near the edge, slightly larger buffers often stabilize the path without changing architecture. Increase Liquidsoap buffering before changing codecs, and avoid unnecessary resampling or transcode steps.

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
The most useful correlation is: dropout timestamp + CPU / memory state + Liquidsoap / Icecast log lines.

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

If the device is missing in Spotify, the problem is probably discovery, not buffering. If metadata is wrong but audio is stable, the problem is probably not in the real-time audio path.

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.