SHOUTcast v2 Stream IDs (SID) (August 2026) Configuration Guide

If you have tried to set up SHOUTcast v2 and your audio never reached a listener, the missing piece was almost certainly the stream ID. Configuring SHOUTcast v2 stream IDs (SID) is the single biggest difference between the older v1 setup and v2, and skipping it is the most common reason first-time broadcasters hear silence.

Over the past several years helping radio operators stand up their streams, our team has seen the same handful of SID mistakes repeat themselves. This guide walks you through what a stream ID actually is, how the v2 configuration file syntax works, how to run multiple streams on one server, how to point your encoder at the right SID, and how to fix the errors that show up when something is off. By the end you will have a working configuration file you can paste into your own setup.

Table of Contents

What Is a SHOUTcast v2 Stream ID (SID)?

A SHOUTcast Stream ID (SID) is a unique number that identifies one specific audio stream inside a SHOUTcast v2 server. Each SID lets you run an independent stream (with its own bitrate, password, mount point, and metadata) on the same server port, all sharing the same DNAS process. Think of the SID as an apartment number inside a building with one street address: the port is the address, and the SID is the unit.

SIDs must be a positive integer between 1 and 2147483647. Stream ID 0 is reserved and will be rejected. In practice you will use small numbers like 1, 2, or 3 for human readability. Every server-side parameter that belongs to one specific stream is suffixed with that SID number, for example streamid_1=1, streampath_1=/stream.mp3, and password_1=changeme.

The stream ID exists for one reason: SHOUTcast v2 was designed to broadcast multiple streams from one installation, and without a way to distinguish them, the server could not tell which encoder was talking to which listener.

SHOUTcast v1 vs v2: What Changed with Stream IDs

The biggest practical difference between SHOUTcast v1 and v2 is that v1 only allowed one stream per port, while v2 allows many. With v1 your configuration file held a single set of parameters: password, portbase, maxuser, bitrate, and that was it.

SHOUTcast v2 reorganized those same parameters into per-stream blocks. So instead of one flat password, you get password_1, password_2, and so on. The same pattern applies to streampath, streamauthhash, streamid, and maxuser.

A side effect of this redesign is that v2 requires two passwords: the password for the encoder connecting to a stream, and the adminpassword for logging into the web interface. In v1 the same password handled both jobs. If you copy a v1 config file directly into v2, the server will refuse to start and will print a warning telling you the passwords are identical.

The v2 model also introduced the requirestreamconfigs directive, which controls whether the server allows an encoder to connect without first defining a matching stream block in the config file. This single setting fixes the most common new-user complaint: my encoder connects but no audio plays.

How to Configure SHOUTcast v2 Stream IDs (SID)

Configuring a SID is a five-step process inside the sc_serv.conf file. I will walk through each step with the exact lines you need.

Step 1: Enable Multiple Streams With requirestreamconfigs

Open sc_serv.conf and locate (or add) the line:

requirestreamconfigs=1

Setting this to 1 forces the server to only accept encoder connections that match a pre-defined stream block. Setting it to 0 lets encoders connect without a matching config block, which is convenient for testing but dangerous in production because random SID connections will create ghost streams.

Step 2: Define the Stream ID Block

For each stream, add a numbered block of parameters. The _1 suffix ties every line to stream ID 1. Replace 1 with the next integer for each new stream.

streamid_1=1
streampath_1=/stream.mp3
streamauthhash_1=your_auth_hash_here
password_1=your_encoder_password
maxuser_1=100

The streamid_1 value must match the suffix number. The streampath_1 is the URL path listeners will use, for example http://yourserver:8000/stream.mp3. The streamauthhash_1 comes from the SHOUTcast YP2 directory when you register your station; leave it blank if you do not want a public listing.

Step 3: Set Server-Wide Parameters

Parameters that affect the whole server (not one stream) stay unnumbered:

portbase=8000
adminpassword=your_admin_password
maxuser=500
password=changeme
publicserver=always

Note that password here is a fallback default. When requirestreamconfigs=1, the per-stream password_1, password_2, etc., take priority. publicserver=always tells the server it is allowed to list itself on the SHOUTcast directory.

Step 4: Restart and Verify

Save the file and restart the DNAS server:

./sc_serv sc_serv.conf

Check the log file (usually sc_serv.log) for the line Stream ID 1 is up and running. If you see that line, your SID is configured correctly and ready to accept an encoder.

Step 5: Connect Your Encoder to the SID

Open your encoder (BUTT, Mixxx, RadioDJ, or similar) and enter the connection details. For BUTT:

  1. Open Settings and go to the Stream tab.
  2. Set Address to your server IP or hostname.
  3. Set Port to your portbase value (8000 in our example).
  4. Set Stream ID to the SID number from your config block (1 in our example).
  5. Set Password to the value of password_1.

If your encoder has no Stream ID field, set requirestreamconfigs=0 in the server config and use streampath_1=/stream.mp3 as the mount point instead. Mixxx users enter the SID in the Stream Settings dialog; RadioDJ has a SID field in the Broadcast plugin.

Setting Up Multiple Streams on a Single SHOUTcast v2 Server

Running two or three streams from one server is where SHOUTcast v2 really shines. Here is the exact procedure.

  1. Duplicate the stream block from Step 2 and increment every suffix number: streamid_2=2, streampath_2=/stream2.mp3, password_2=different_password.
  2. Use a different password for every stream so one compromised encoder cannot take down the others.
  3. Optionally set different bitrates per stream by giving each stream its own maxbitrate (v2 server build dependent).
  4. Restart the DNAS process.
  5. Point each encoder at its own SID number and matching password.

A working three-stream config block looks like this:

streamid_1=1
streampath_1=/low.mp3
streamauthhash_1=
password_1=pass_low
maxuser_1=100

streamid_2=2
streampath_2=/high.mp3
streamauthhash_2=
password_2=pass_high
maxuser_2=50

streamid_3=3
streampath_3=/dj.mp3
streamauthhash_3=
password_3=pass_dj
maxuser_3=10

All three streams share the same portbase=8000. Listeners pick the quality they want by choosing the URL that matches their streampath: /low.mp3, /high.mp3, or /dj.mp3.

Configuring Your Encoder to Use the Correct Stream ID

The encoder side is where most beginners get stuck. Your encoder needs to know three things: the server, the port, and the SID. If any one is wrong, the server either rejects the connection or silently accepts it and sends audio nowhere.

BUTT (Broadcast Using This Tool)

BUTT is the most common free encoder for SHOUTcast. Open Settings, click the Stream 1 tab, fill in Server, Port, Stream ID, and Password, then click Add. BUTT will save the settings as a profile. Repeat for additional streams using the Stream 2 and Stream 3 tabs.

Mixxx

Mixxx has built-in live broadcasting. Open Preferences, go to Live Broadcasting, select SHOUTcast as the type, enter Server, Port, and Password. The Stream ID field is below the password box and defaults to 1, which matches the default stream block.

RadioDJ

RadioDJ uses the Shoutcast plugin. In the plugin config, enter the server address, port, password, and SID. RadioDJ will refuse to connect if the SID field is empty or zero, so always enter an integer between 1 and 2147483647.

Winamp + SHOUTcast DSP

Winamp with the legacy SHOUTcast DSP plugin only supports SID 1. If you need multiple streams, switch to BUTT or Mixxx.

Common SHOUTcast v2 SID Errors and How to Fix Them

Forum traffic on Winamp forums and Reddit shows the same handful of SID errors over and over. Here is how to clear each one.

“bad stream ID cannot be below 1 or above 2147483647”

This appears in the server log when your encoder sends SID 0 or a negative number. Open the encoder, find the Stream ID field, and change it to 1 (or whatever number matches your server config block).

Encoder connects but no audio plays

Three causes cover 95% of these reports:

  • requirestreamconfigs=1 is set but no matching streamid_X block exists in the config. Either add the block or set requirestreamconfigs=0.
  • The encoder is sending SID 1 but your only config block is SID 2 (or vice versa). Match the numbers exactly.
  • The encoder password does not match password_X. Re-type the password, copy-paste errors are common.

“password and adminpassword must be different”

SHOUTcast v2 refuses to start if these two passwords are identical. Pick a different string for adminpassword and restart the server.

Stream shows up in web interface but is silent

If the stream appears in the admin panel (http://yourserver:8000) but produces no audio, the encoder is connecting but the streampath is missing or has a typo. Confirm streampath_1=/stream.mp3 matches what your listeners (or your encoder mount point) is requesting.

Multiple streams all show SID 1 in the log

This means your config file has multiple blocks but the suffix numbers are wrong (for example password_low instead of password_1, password_2). The server silently treats every block as belonging to SID 1. Always use the exact format parameter_X.

If your problem is not on this list, capture the relevant lines from sc_serv.log and search the Winamp SHOUTcast support forum. Most SID-specific questions have already been answered there.

Frequently Asked Questions

What is the difference between SHOUTcast v1 and v2 configurations?

SHOUTcast v1 supports a single stream per port with one flat set of parameters. SHOUTcast v2 supports multiple streams per port by adding a Stream ID (SID) suffix to every per-stream parameter, for example password_1 and streampath_1. v2 also requires a separate adminpassword and adds the requirestreamconfigs directive for safer encoder connections.

How do I set up multiple streams on SHOUTcast v2?

Add a numbered stream block to sc_serv.conf for each stream: streamid_X, streampath_X, password_X, and optionally streamauthhash_X. Set requirestreamconfigs=1, restart the server, then point each encoder at its own SID and password. All streams share the same portbase.

How do I configure stream ID in SHOUTcast?

Define a streamid_X block in sc_serv.conf where X is an integer from 1 to 2147483647, then enter that same X value into your encoder’s Stream ID field. The streamid_X value must match the suffix number on every other per-stream parameter like password_X and streampath_X.

What is a SHOUTcast Stream ID (SID)?

A SHOUTcast Stream ID (SID) is a unique number, between 1 and 2147483647, that identifies one specific audio stream inside a SHOUTcast v2 server. It allows multiple independent streams to share one server port while keeping their bitrates, passwords, mount points, and listener counts separate.

Conclusion

Configuring SHOUTcast v2 stream IDs (SID) is straightforward once you understand that the SID is just an apartment number inside one server port. Define a numbered block for each stream, set requirestreamconfigs=1, restart the DNAS, and point your encoder at the same SID and password. The errors that show up along the way are almost always a mismatched number, an empty SID field, or two identical passwords.

Your next step is to copy the three-stream config example from this guide into a fresh sc_serv.conf, replace the placeholder passwords with strong strings of your own, and bring up one stream end to end. Once that one stream works, the rest of your SID setup follows the same pattern.

Leave a Comment