Skip to content

Features

  • RyanlinkManager — central hub for nodes, players, voice state, and search
  • Multi-node support — weighted load balancing across 7 sort strategies: memory, cpuLavalink, cpuSystem, calls, playingPlayers, players, weighted
  • Atomic node migration — seamless player failover when a node disconnects (autoMove or manual player.moveNode())
  • Session resuming — Lavalink session persistence across reconnects
  • Track resolve retries — configurable trackResolveRetryLimit with autoSkipOnResolveError
  • Voice state sync — automatic VOICE_STATE_UPDATE / VOICE_SERVER_UPDATE / CHANNEL_DELETE handling
  • DAVE (E2EE) compatible — handles Discord’s end-to-end encrypted voice handshake automatically
  • Custom player class — extend Player and pass via playerClass option
  • Source registry — dynamic SourceRegistry per node for custom search prefix mappings and matchers
  • Full playback controlplay, pause(boolean), resume, seek, skip, stopPlaying, setVolume, setRepeatMode
  • Repeat modesoff, track, queue
  • Volume fadesetVolume applies changes in 10 steps over 500ms for smooth transitions
  • Volume decrementer — scale internal volume independently of reported volume
  • Position tracking — client-side position computed from lastPosition + elapsed
  • Smart leavesmartLeave: true destroys player when voice channel empties
  • Auto-pauseautoPause: true pauses when all users leave, resumes when they return
  • Auto-pause on muteautoPauseOnMute: true pauses when bot is muted
  • Auto-reconnectonDisconnect.autoReconnect reconnects and resumes playback
  • Lifecycle hooksonTrackStart, onQueueEnd, onNodeFailover per-player
  • Data storeset/get/setData/getData/deleteData/clearData/getAllData per-player key-value store
  • Node migrationplayer.changeNode(node) / player.moveNode() for live node switching
  • Gapless preloading (NodeLink) — nextTrack field for zero-silence transitions
  • TrackRegistry — memory-efficient track reference mapping; TrackEntry stores data once, referenced by ID
  • Previous tracks buffer — configurable maxPreviousTracks (default 25)
  • Queue operationsadd, remove, move, shuffle, clear, skipTo, addPrevious
  • Index insertionqueue.add(track, index) inserts at a specific position
  • Fisher-Yates shuffle — statistically unbiased randomization
  • Queue changes watcherQueueChangesWatcher interface: tracksAdd, tracksRemoved, shuffled
  • Unresolved tracks — lazy resolution with useUnresolvedData support
  • Functional methodsfind, filter, map, some, every
  • toJSON() — serializes queue state including voice channel, volume, node ID

Filters All non-destructive

Section titled “Filters ”

Standard Lavalink filters: equalizer (15-band), karaoke, timescale, tremolo, vibrato, rotation, distortion, channelMix, lowPass, volume

High-level API: setSpeed, setPitch, setVolume, toggleNightcore, toggleVaporwave, setEQ, setPreset, set, remove, override, resetFilters, clear

Built-in EQ presets (via FilterManager.EQList): BassboostEarrape, BassboostHigh, BassboostMedium, BassboostLow, BassboostSoft, Pop, Rock, Classic, Electronic, Gaming, Soft, TV, TrebleBass, Nightcore, Vaporwave, and more

NodeLink exclusive filters (via node.specificFilters): echo, chorus, compressor, highPass, phaser, spatial, resetNodeLinkFilters

LavaDSPX plugin filters: low-pass, high-pass, normalization, echo

filter-engine / lava-xm-plugin filters: echo (delay/decay), reverb

  • Multi-platform — YouTube, Spotify, Apple Music, Deezer, Tidal, SoundCloud, JioSaavn, Yandex Music, VK Music, Qobuz, Pandora, Audiomack, Bandcamp, and more
  • LavaSearchaudioSearch() for albums, artists, playlists, text results (requires lavasearch-plugin)
  • Source validationautoChecks.sourcesValidations validates source managers before requests
  • Plugin validationautoChecks.pluginValidations validates plugin availability before requests
  • Link matchers — per-node SourceRegistry with registerMatcher for automatic URL source detection
  • Source mappings — per-node SourceRegistry with registerMapping for custom prefix aliases
  • Blacklist/whitelistlinksBlacklist, linksWhitelist, linksAllowed for URL filtering
  • Bandcamp local engineplayer.search falls back to Bandcamp’s autocomplete API when node lacks bandcamp source
  • allowCustomSources — skip source validation for custom/unknown prefixes
  • Multi-source fetch chain — Spotify rec → SoundCloud → YouTube mix → artist search → title search → ytsearch fallback
  • Weighted scoring — duration similarity (0–40pts) + same artist (50pts) + partial match (25pts) + jitter (0–10pts)
  • Circular history bufferhistoryLimit (default 20), prevents re-queuing recent tracks
  • Pre-fetch — triggers early when queue drops to prefetchThreshold tracks
  • Keyword exclusion — title-based blacklist with configurable excludeKeywords
  • Duration tolerance — soft window scoring, not hard exclusion
  • Custom fetch functionautoplayConfig.fetchRelatedTracks for fully custom candidate fetching
  • Runtime toggleplayer.autoplay = true/false
  • Weighted score(cpu.systemLoad × 0.7) + (memory.used/allocated × 0.2) + (players/100 × 0.1)
  • Health statusnode.getHealthStatus() returns healthy, degraded, critical, or offline with recommendations
  • Node metricsnode.nodeMetricSummary() returns CPU, memory, players, ping, frame deficit
  • Heartbeat — WebSocket ping/pong with configurable heartBeatInterval
  • Exponential backoff — reconnect delay doubles each attempt up to 30s
  • Reconnection stateIDLE, PENDING, RECONNECTING, DESTROYING
PluginRegistered NameFeatures
LavaSrclavasrc-pluginSpotify, Apple Music, Deezer, Tidal, Yandex, VK, JioSaavn, Qobuz, Pandora, lyrics
LavaSearchlavasearch-pluginAdvanced search (albums, artists, playlists, text)
LavaLyricslavalyrics-pluginLyrics API hub, real-time line events
SponsorBlocksponsorblock-pluginSegment skipping, chapter events
LavaDSPXLavaDSPX-PluginDSP filters (high-pass, low-pass, normalization, echo)
DuncteBot Skybotskybot-lavalink-pluginspeak:, phsearch:, mixcloud, getyarn, etc.
java-timed-lyricsjava-lyrics-pluginYouTube + Genius timed lyrics
lyrics.ktlyricsYouTube lyrics
lava-xm-pluginlava-xm-pluginTracker module formats (MOD, XM, IT, S3M)
  • Audio Mixer — overlay TTS/SFX on main track (addMixerLayer, listMixerLayers, updateMixerLayerVolume, removeMixerLayer)
  • Fading — smooth volume transitions (trackStart, trackEnd, stop, seek, ducking) with linear, exponential, logarithmic, s-curve
  • Gapless preloadingsetNextTrackGapLess, removeNextTrackGapLess
  • Direct streaminggetDirectStream, loadDirectStream, loadDirectStreamPost
  • LyricsloadLyrics, loadChapters, getMeaning, nodeLinkLyrics, subscribeLyricsNodeLink, unsubscribeLyricsNodeLink, getChapters, timedLyrics.*
  • YouTube configupdateYoutubeConfig, getYoutubeConfig, getYoutubeOAUTH, updateYoutubeOAUTH
  • WorkersgetWorkers, patchWorker
  • Track encodingencodeTrack, encodeTracks
  • Extended statsgetDetailedStats with per-source and per-endpoint tracking
  • NodeLink infogetNodeLinkInfo, getConnectionMetrics
  • Multi-audio trackchangeAudioTrackLanguage for dubbed content
  • NodeLink-exclusive filtersecho, chorus, compressor, highPass, phaser, spatial via node.specificFilters