import { useState } from "react"; const libraries = [ { name: "RevvLink", author: "JustNixx & IamGroot", github: "https://github.com/JustNixx/RevvLink", pypi: "revvlink", stars: "Wavelink heir", forks: "~405 (Wavelink base)", latestVersion: "1.0.0", lastRelease: "2026", status: "active", statusLabel: "⚡ Wavelink Successor", officiallyListed: false, pythonMin: "3.10", lavaVersion: "v4 only", daveSupport: true, license: "MIT", discord_libs: ["discord.py v2 only"], color: "#0288d1", accent: "#4fc3f7", icon: "⚡", tagline: "Wavelink reborn — carries all battle-tested Wavelink logic + adds DAVE E2EE, LFU cache & active maintenance.", wavelinkSuccessor: true, features: { "Multi-Node Support": true, "Load Balancing": true, "Region-Based Balancing": false, "Audio Filters / EQ": true, "Custom Source Plugins": false, "Built-in Queue": true, "AutoPlay / Recommendations": true, "Spotify Built-in": false, "Apple Music Built-in": false, "Full Type Hints": true, "Session Resuming": true, "REST API Support": true, "WebSocket Support": true, "DAVE (E2EE) Support": true, "Speedups (optional)": false, "Library-Agnostic": false, }, pros: [ "Built on Wavelink — inherits years of battle-tested production logic from thousands of real bots", "Near-identical API to Wavelink 3.x — easiest migration path for existing Wavelink users", "DAVE E2EE — the exact missing feature that caused Wavelink's archival, now fully solved", "Built-in Queue: history, shuffle, loop_all, loop, peek, swap, put_at, delete, async lock", "3-mode AutoPlay: enabled (dual Spotify sprec: + YouTube Mix seeds), partial, disabled", "Live zero-downtime node migration via player.switch_node() — reapplies filters/volume/position", "LFU request cache — new vs Wavelink, reduces redundant Lavalink API calls", "PluginFilters class — cleaner plugin filter support than Wavelink", "NodeInfo.has_source() / has_plugin() helpers — Wavelink lacked these", "RoutePlanner API (unmark failed addresses) — Wavelink never exposed this", "Inactive player token bucket system — carried over and improved from Wavelink", "Exponential backoff reconnect logic — same proven Wavelink pattern", "Pyright strict-compliant types, Python 3.10–3.13 support", "redis + davey optional extras — new additions not in Wavelink", ], cons: [ "discord.py v2 only — no nextcord/disnake/py-cord/hikari", "Not yet listed on official lavalink.dev/clients page", "No native Spotify/Apple Music — requires LavaSrc server plugin", "No region-based load balancing", "No custom source plugin system (unlike Lavalink.py)", "Lavalink v4+ only — v3 not supported", "Community still rebuilding from Wavelink (smaller than Wavelink was at peak)", ], missing: [ "Not yet on official lavalink.dev/clients list", "No support for nextcord / disnake / py-cord / hikari", "No native Spotify/Apple Music (needs LavaSrc server plugin)", "No region-based load balancing", "No custom source plugin architecture (unlike Lavalink.py)", ], }, { name: "Lavalink.py", author: "devoxin", github: "https://github.com/devoxin/Lavalink.py", pypi: "lavalink", stars: 243, forks: 95, latestVersion: "5.9.0", lastRelease: "Sep 2024", status: "active", statusLabel: "Active", officiallyListed: true, pythonMin: "3.8", lavaVersion: "v3 + v4", daveSupport: true, license: "MIT", discord_libs: ["Any (library-agnostic)"], color: "#e84393", accent: "#ff6eb4", icon: "🌋", tagline: "The original. Powerful & library-agnostic.", features: { "Multi-Node Support": true, "Load Balancing": true, "Region-Based Balancing": true, "Audio Filters / EQ": true, "Custom Source Plugins": true, "Built-in Queue": false, "AutoPlay / Recommendations": false, "Spotify Built-in": false, "Apple Music Built-in": false, "Full Type Hints": false, "Session Resuming": true, "REST API Support": true, "WebSocket Support": true, "DAVE (E2EE) Support": true, "Speedups (optional)": false, "Library-Agnostic": true, }, pros: [ "Works with ANY async Python Discord library", "Longest track record, battle-tested", "Custom sources allow Spotify/Apple Music via plugin", "Full Lavalink v3 + v4 coverage", "Official Lavalink docs listing", "Active maintenance, 1,026+ commits", ], cons: [ "No built-in queue management", "No AutoPlay / track recommendations", "No native Spotify/Apple Music", "Weaker type hinting vs mafic", "Requires more boilerplate for advanced use", ], missing: [ "No built-in queue (must roll your own)", "No native streaming service support", "No AutoPlay / smart recommendations", "Partial strict type hints", ], }, { name: "Pomice", author: "cloudwithax", github: "https://github.com/cloudwithax/pomice", pypi: "pomice", stars: 73, forks: 33, latestVersion: "2.8.1", lastRelease: "2023", status: "slow", statusLabel: "Slow updates", officiallyListed: true, pythonMin: "3.8", lavaVersion: "v3 + v4", daveSupport: true, license: "GPL", discord_libs: ["discord.py v2 only"], color: "#7c3aed", accent: "#a78bfa", icon: "🍊", tagline: "Modern wrapper with built-in Spotify & Apple Music.", features: { "Multi-Node Support": true, "Load Balancing": true, "Region-Based Balancing": false, "Audio Filters / EQ": true, "Custom Source Plugins": false, "Built-in Queue": false, "AutoPlay / Recommendations": false, "Spotify Built-in": true, "Apple Music Built-in": true, "Full Type Hints": true, "Session Resuming": true, "REST API Support": true, "WebSocket Support": true, "DAVE (E2EE) Support": true, "Speedups (optional)": false, "Library-Agnostic": false, }, pros: [ "Built-in Spotify & Apple Music querying", "100% Lavalink spec coverage claimed", "Clean, beginner-friendly API", "Full type annotations", "Officially listed in Lavalink docs", ], cons: [ "discord.py v2 only — no nextcord/disnake/py-cord", "GPL license (more restrictive)", "Slow update cadence since 2023", "No built-in queue", "No AutoPlay / recommendations", "No custom source plugin system", "No region-based load balancing", ], missing: [ "No support for nextcord, disnake, py-cord", "No built-in queue system", "No AutoPlay / smart recommendations", "No custom source extensibility", "GPL license limits closed-source projects", ], }, { name: "Mafic", author: "ooliver1", github: "https://github.com/ooliver1/mafic", pypi: "mafic", stars: 70, forks: 8, latestVersion: "2.10.1", lastRelease: "May 2025", status: "active", statusLabel: "Active", officiallyListed: true, pythonMin: "3.8", lavaVersion: "v3 + v4", daveSupport: true, license: "MIT", discord_libs: ["discord.py v2", "nextcord", "disnake", "py-cord"], color: "#0ea5e9", accent: "#7dd3fc", icon: "🎵", tagline: "Fully typed. Multi-library. Production-grade.", features: { "Multi-Node Support": true, "Load Balancing": true, "Region-Based Balancing": false, "Audio Filters / EQ": true, "Custom Source Plugins": false, "Built-in Queue": false, "AutoPlay / Recommendations": false, "Spotify Built-in": false, "Apple Music Built-in": false, "Full Type Hints": true, "Session Resuming": true, "REST API Support": true, "WebSocket Support": true, "DAVE (E2EE) Support": true, "Speedups (optional)": true, "Library-Agnostic": false, }, pros: [ "Pyright strict-compliant type hints", "Works with discord.py, nextcord, disnake, py-cord", "Optional C-speed speedups via extra install", "Fully customisable node balancing strategies", "Clean, modern API design", "Actively maintained (latest: May 2025)", ], cons: [ "No built-in queue management", "No AutoPlay or track recommendations", "No native Spotify/Apple Music support", "Only works with the 4 supported Discord libs", "No custom source plugin system", "No region-based balancing", ], missing: [ "No built-in queue (must implement manually)", "No AutoPlay / intelligent recommendations", "No native streaming service support", "No custom source extensibility", ], }, { name: "Lavalink.py (old)", author: "devoxin (deprecated context)", github: "https://github.com/devoxin/Lavalink.py", pypi: "lavalink", stars: 243, forks: 95, latestVersion: "≤3.x (old branch)", lastRelease: "Legacy", status: "legacy", statusLabel: "See current Lavalink.py", officiallyListed: true, pythonMin: "3.8", lavaVersion: "v3 (legacy)", daveSupport: false, license: "MIT", discord_libs: ["Any"], color: "#64748b", accent: "#94a3b8", icon: "📦", tagline: "The original library — now fully updated to v5.x", features: { "Multi-Node Support": true, "Load Balancing": true, "Region-Based Balancing": true, "Audio Filters / EQ": true, "Custom Source Plugins": true, "Built-in Queue": false, "AutoPlay / Recommendations": false, "Spotify Built-in": false, "Apple Music Built-in": false, "Full Type Hints": false, "Session Resuming": true, "REST API Support": false, "WebSocket Support": true, "DAVE (E2EE) Support": false, "Speedups (optional)": false, "Library-Agnostic": true, }, pros: [ "Foundation for modern Lavalink.py", "Many bots still running it", ], cons: [ "Lavalink v3 focused (v3 EOL / deprecated)", "No DAVE E2EE support", "No REST API support", "No v4 features", ], missing: [ "Lavalink v4 REST API", "DAVE E2EE encryption support", "Modern plugin ecosystem", ], isNote: true, noteText: "Note: 'Lavalink.py' as a library is actively maintained at v5.x. This column reflects what the older v3-era versions lacked before modern updates.", }, { name: "Wavelink", author: "PythonistaGuild", github: "https://github.com/PythonistaGuild/Wavelink", pypi: "wavelink", stars: 405, forks: 193, latestVersion: "3.4.1", lastRelease: "Jul 2024", status: "dead", statusLabel: "⚠️ ARCHIVED Apr 2025", officiallyListed: false, pythonMin: "3.10", lavaVersion: "v4 only", daveSupport: false, license: "MIT", discord_libs: ["discord.py v2 only"], color: "#dc2626", accent: "#fca5a5", icon: "🌊", tagline: "Was the most popular — now archived & abandoned.", features: { "Multi-Node Support": true, "Load Balancing": true, "Region-Based Balancing": false, "Audio Filters / EQ": true, "Custom Source Plugins": false, "Built-in Queue": true, "AutoPlay / Recommendations": true, "Spotify Built-in": false, "Apple Music Built-in": false, "Full Type Hints": true, "Session Resuming": true, "REST API Support": true, "WebSocket Support": true, "DAVE (E2EE) Support": false, "Speedups (optional)": false, "Library-Agnostic": false, }, pros: [ "Had the most stars & community adoption", "Built-in queue + AutoPlay were class-leading", "Full Pyright-strict type hints", "SponsorBlock plugin support built-in", "Lavalink v4 REST API support", "LavaSrc plugin support", ], cons: [ "ARCHIVED on April 5, 2025 — DO NOT USE for new projects", "No DAVE E2EE support (never added)", "Removed from official Lavalink client list", "Python 3.10+ only (narrower support)", "discord.py only — no nextcord/disnake/py-cord", "No more bug fixes or security patches", ], missing: [ "DAVE E2EE support (Discord's new encryption)", "No longer receives updates", "No support for other Discord libraries", "Will break with future Lavalink server versions", ], }, { name: "lavaplay.py", author: "HazemMeqdad", github: "https://github.com/HazemMeqdad/lavaplay.py", pypi: "lavaplay", stars: 35, forks: 12, latestVersion: "1.0.13a+", lastRelease: "2023", status: "slow", statusLabel: "Minimal updates", officiallyListed: true, pythonMin: "3.8", lavaVersion: "v3 + v4 (partial)", daveSupport: true, license: "MIT", discord_libs: ["Any asyncio-based (hikari, discord.py, etc.)"], color: "#059669", accent: "#6ee7b7", icon: "▶️", tagline: "Library-agnostic, hikari-friendly, lightweight.", features: { "Multi-Node Support": false, "Load Balancing": false, "Region-Based Balancing": false, "Audio Filters / EQ": true, "Custom Source Plugins": false, "Built-in Queue": true, "AutoPlay / Recommendations": false, "Spotify Built-in": false, "Apple Music Built-in": false, "Full Type Hints": false, "Session Resuming": false, "REST API Support": false, "WebSocket Support": true, "DAVE (E2EE) Support": true, "Speedups (optional)": false, "Library-Agnostic": true, }, pros: [ "Works with hikari and any asyncio Discord lib", "Has a basic built-in queue", "Officially listed in Lavalink docs", "Lightweight and simple", "Good for hikari-based bots", ], cons: [ "No multi-node support", "No load balancing", "No session resuming", "No REST API (WebSocket only)", "Very low community adoption (35 stars)", "Minimal maintenance", "Weak type hinting", "No custom source extensibility", ], missing: [ "Multi-node / clustering support", "Load balancing strategies", "Session resuming", "REST API support", "Native streaming service support", "AutoPlay recommendations", "Strong type hints", ], }, ]; const featureKeys = [ "Multi-Node Support", "Load Balancing", "Region-Based Balancing", "Audio Filters / EQ", "Custom Source Plugins", "Built-in Queue", "AutoPlay / Recommendations", "Spotify Built-in", "Apple Music Built-in", "Full Type Hints", "Session Resuming", "REST API Support", "WebSocket Support", "DAVE (E2EE) Support", "Speedups (optional)", "Library-Agnostic", ]; const statusColors = { active: { bg: "rgba(16,185,129,0.15)", text: "#34d399", border: "rgba(16,185,129,0.3)" }, slow: { bg: "rgba(245,158,11,0.15)", text: "#fbbf24", border: "rgba(245,158,11,0.3)" }, dead: { bg: "rgba(239,68,68,0.15)", text: "#f87171", border: "rgba(239,68,68,0.3)" }, legacy: { bg: "rgba(100,116,139,0.15)", text: "#94a3b8", border: "rgba(100,116,139,0.3)" }, }; export default function LavalinkComparison() { const [activeTab, setActiveTab] = useState("overview"); const [selectedLib, setSelectedLib] = useState(null); const mainLibs = libraries.filter((l) => !l.isNote); const displayLibs = libraries.filter((l) => !l.isNote); return (
Deep-dive analysis of every major Python Lavalink wrapper — features, maintenance status, missing capabilities, and which to pick in 2026.
{lib.tagline}
RevvLink is built on Wavelink's proven codebase — inheriting years of battle-tested production logic from thousands of real bots.
It picks up exactly where Wavelink left off, adding DAVE E2EE, LFU cache, PluginFilters, and RoutePlanner API — all things Wavelink never shipped.
The API is near-identical to Wavelink 3.x, making it the easiest migration path for any bot currently on Wavelink.
As of March 2026 it is not yet listed on lavalink.dev/clients but is installable via{" "}
pip install revvlink.
Comprehensive feature matrix. Green = supported, Red = not supported.
| Feature | {displayLibs.map((lib) => (
{lib.icon}
{lib.name}
{lib.statusLabel}
|
))}
|---|---|
| {feat} | {displayLibs.map((lib) => { const has = lib.features[feat]; return ({has ? ( ✓ ) : ( ✗ )} | ); })}
| TOTAL FEATURES | {displayLibs.map((lib) => { const count = Object.values(lib.features).filter(Boolean).length; return ({count}/{featureKeys.length} | ); })}
{selectedLib.tagline}
What critical features are absent from each library — these are the gaps developers must work around.
No significant missing features identified.
) : (Pick the right library for your situation in 2026.
{item.reason}
| {h} | ))}|||
|---|---|---|---|
| {row.lib} | {row.best} | {row.avoid} | {row.status} |