NodeLink
Performant LavaLink alternative written with Node.Js
Install / Use
/learn @PerformanC/NodeLinkREADME
Prerequisites
- Node.js v22 or higher (v24 recommended)
- Git
Overview
NodeLink is an alternative audio server built in Node.js, designed for those who value control and efficiency. 🌿 It doesn’t try to reinvent the wheel — it just makes it spin with less weight. Easy to configure, naturally scalable, and with smooth playback, it provides a solid foundation for music bots and real-time audio systems.
Created by Brazilian developers, NodeLink was born from the desire for a simpler, open, and truly accessible audio server for everyone.
Full documentation available at nodelink.js.org 💚
Features
- 100% Node.js implementation – No external runtime required
- Lavalink-compatible API – Works with most existing clients
- Optimized decoding ⚡ – Powered by WebAssembly and native modules
- Worker-based architecture – Each player can run in its own process for true isolation
- Real-time audio filters – Equalizer, timescale, tremolo, compressor, echo, chorus, phaser, and more
- Low memory footprint – Efficient even with multiple active players
- Prometheus metrics – Production-ready monitoring with detailed statistics
- Multiple source support – 15+ sources including YouTube, Spotify, Apple Music, Deezer, and more
Quick Start
# Clone the repository
git clone https://github.com/PerformanC/NodeLink.git
cd NodeLink
# Install dependencies
npm install
# Copy the default configuration file
cp config.default.js config.js
# Start the server
npm run start
Once started, NodeLink runs a Lavalink-compatible WebSocket server, ready for immediate use.
Docker
NodeLink also supports Docker for easy deployment:
# Using Docker Compose
docker-compose up -d
# Or using Docker directly
docker build -t nodelink .
docker run -p 2333:2333 nodelink
See the Docker guide: nodelink.js.org/docs/advenced/docker
Usage
NodeLink is compatible with most Lavalink clients, as it implements nearly the entire original API. However, some clients may not work properly, since NodeLink changes certain behaviors and endpoints.
| Client | Platform | v3 supported? | NodeLink Features? | NodeLink major version | Notes | | ------------------------------------------------------------------- | ------------ | ------------- | ------------------ | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Lavalink-Client | JVM | unknown | No | v1 and v2 | | | Lavalink.kt | Kotlin | unknown | No | v1 | | | DisGoLink | Go | unknown | No | v1 and v2 | | | Lavalink.py | Python | unknown | No | v1 and v2 | | | Mafic | Python | unknown | No | v1 and v2 | | | Wavelink | Python | Yes | No | v1, v2, v3 | | | Pomice | Python | unknown | No | v1 and v2 | | | lava-lyra | Python | Yes | Yes | v3 | | | Hikari-ongaku | Python | unknown | No | v1 and v2 | | | Moonlink.js | TypeScript | Yes | Yes | v1, v2, v3 | | | Magmastream | TypeScript | unknown | No | v1 | | | Lavacord | TypeScript | unknown | No | v1 and v2 | | | Shoukaku | TypeScript | Yes | No | v1, v2, v3 | | | Hoshimi | TypeScript | Yes | No | v1, v2, v3 | ;P | | Lavalink-Client | TypeScript | Yes | Yes | v1, v3 | | | Rainlink | TypeScript | unknown | No | v1 and v2 | | | Poru | TypeScript | unknown | No | v1 and v2 | | | Blue.ts | TypeScript | unknown | No | v1 and v2 |
