Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including icecast-stack with all npm packages installed. Try it out:

var icecastStack = require("icecast-stack")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

icecast-stack v0.3.0

A `StreamStack` implementation for parsing and/or injecting metadata with SHOUTcast/Icecast radio streams.


A StreamStack implementation for parsing and/or injecting metadata with SHOUTcast/Icecast radio streams.

This module offers an interface for retrieving the raw audio data and parsing the metadata from a SHOUTcast or Icecast broadcast. Two API's are offered: a low-level StreamStack read and write interface (which requires you to establish the connection to the net.Stream yourself), and a more convenient high-level ReadStream interface (which creates a net.Stream connection, and uses the StreamStack interfaces transparently).


Here's a basic example of just piping the clean audio data to stdout, while printing the HTTP response headers and metadata events to stderr:

var icecast = require('icecast-stack');

var url = ''; // URL to a known Icecast stream
var stream = icecast.createReadStream(url);

// Fired when the `net.Stream` has it's 'connect' event.
stream.on('connect', function() {
  console.error("Radio Stream connected!");
// Fired after the HTTP response headers have been received.
stream.on('response', function(res) {
  console.error("Radio Stream response!");

// When a 'metadata' event happens, usually a new song is starting.
stream.on('metadata', function(metadata) {
  var title = icecast.parseMetadata(metadata).StreamTitle;

// Proxy the raw audio stream to 'stdout', redirect to a file!

Look in the examples directory for code of some more complex use-cases.

The most important use case of this is for HTML5 web apps that listen to radio streams; the <audio> tag doesn't know how to deal with the extra metadata and it is impossible to extract (on the client-side). But a WebSocket connection could be used in conjunction with this module to provide those metadata events to a web browser, for instance.


Installation through npm is the most straight-forward way to install the node-icecast-stack module:

$ npm install icecast-stack

Or just checking out this git repo works as well:

$ git clone git://
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free