News
Apr 29, 2026 - 23:22

Voice Binary Shift

Voice modules have been updated by Discord. Receiving end will receive muted audio. A maintenance update is scheduled 30th April.

Apr 29, 2026 - 11:51

app-1.0.9235 Update

If you notice any .bspatch remains, send them on our community server. BSPATCH most likely only occurs during update process.

Apr 28, 2026 - 12:31

app-1.0.9235

Discord is experimenting with voice modules. A .bspatch will appear causing stereo to remove itself when you try to downgrade nodes. Stay tuned for updates.

Apr 27, 2026 - 15:39

24-bit Invite Code

An invite code is required to unlock 24-bit download.

Apr 27, 2026 - 02:10

24-bit Early Access

Users can now try 24-bit 819kbps. This is in early access to gain feedback for improvement.

Apr 20, 2026 - 05:10

24-bit Imminent

24-bit - 409kbps - CBR | These values were confirmed to work however there is no scheduled update for this yet. Watch out for any 24-bit updates.

Apr 19, 2026 - 19:10

UI Refresh

Minor changes to the site entry panel.

Apr 17, 2026 - 21:05

Experimental Node

New experimental node appeared in the experimental tab.

Apr 16, 2026 - 20:05

Updated Node

15th April node is now in standard builds with target bitrate selection.

Apr 15, 2026 - 23:30

Experiencing Node Issues

Patched users won't be able to send any audio on updated clients. We are working on implementing a fix.

Apr 15, 2026 - 22:33

Traffic Increasing

Traffic is increasing, we are temporarily experimenting with a rate-limit system.

Apr 15, 2026 - 00:18

Colour Implemented

Users can now apply custom colour across this site without problems.

Apr 14, 2026 - 01:30

Custom Colour Picker

Seasonal Mode has been replaced with a Custom Colour picker. Choose any accent colour from the Theme tab in settings.

Apr 13, 2026 - 22:07

Seasonal Theme Bug

We are aware of the theming issue when turning on 'Seasonal Mode'. That option will be replaced with an another option in the next update.

Apr 13, 2026 - 22:05

Community Improvement

The website has received various updates based on community feedback. ❤

Apr 8, 2026 - 15:05

Note

If you experience any issues, use 20th March node until new patches arrive.

Mar 28, 2026 - 00:10

Userscript Update

Network and debug section has been added to web userscript.

Mar 24, 2026 - 23:23

Browser Support

You can now use stereo on browsers with instead of client, available under windows downloads.

Mar 23, 2026 - 10:55

Video Tab

New Updates to Video Tab in Windows Downloads

Mar 21, 2026 - 02:56

Mar 20 Extended Build

New experimental node with 44 patches at 512kbps. Packet loss tested not audible. Bitrate relocked. New download tab for experimental builds added.

Mar 16 2026 - 00:58

Patched discord_voice.node

New patches: StereoFlagJne1, StereoFlagJne3, StereoFlagJne4 + Fixed muted output issue.

Mar 16, 2026 - 20:28

Discord Update

Discord has reworked their .node. Installing a patched .node will return muted audio! Do not update until this has been fixed!

Mar 16, 2026 - 10:34

Updated Themes

WebGL animations were added with options. Users are now prompted if they wanna enable it if they visit this site.

Mar 9, 2026 - 21:27

Replaced a Section

Comparison between a lightcord and voice playground has been added.

Mar 7, 2026 - 21:02

Live Chat is Back

Live chat was broken, this issue has been fixed. 🤍

Mar 7, 2026 - 08:38

Reworked Settings

New options have been added to settings as well as XMR donation.

Mar 7, 2026 - 04:43

File Size

Each node download for windows should have it's own file size displayed.

Mar 7, 2026 - 00:41

Theme Settings

Added theme settings button on the page.

Mar 6, 2026 - 21:41

Improved Guide

Windows Installation Guide has been refreshed.

Mar 6, 2026 - 21:07

New Section

A new section has been added.

Mar 6, 2026 - 21:07

Download Link Updates

Users can now choose what bitrate they want to download. Index.js is now downloadable separately.

Mar 5, 2026 - 23:24

New Patches & Bitrate Lock

Repatched current node to lock 512kbps despite packet loss.

Mar 4, 2026 - 17:14

DAVE Protocol Warning

Discord has introduced DAVE protocol. Users will start seeing a warning on their screen. To ignore the warning, restart discord with CTRL + R.

Mar 1, 2026 - 05:18

Website Tweaks

Fixed Footer, theming & added time to news posting. Note that the time is configured to 24HR, not 12HR.

Feb 27, 2026

Live Chat

Live chat has been added for quicker support.

Feb 27, 2026

Link Shortener Provider

Discord-voice is no longer using kutt.it for link shortening. Now using spoo.me

Feb 27, 2026

ffmpeg.dll & openh264

openh264 will no longer be available to download separately.

Feb 27, 2026

Download Issue

Kutt.is is experiencing temporary outage. Join our server to download directly while we work on alternatives.

Feb 26, 2026

Discord Update

app-1.0.9226 stable has been released. Download links have not been changed as it doesn't impact the node.

Feb 26, 2026

MacOS Download

A download link for MacOS has been added and is maintained by MacOS voice devs.

Feb 24, 2026

Open Source Discord Alternative

Based on research, Fluxer has stereo by default. Privacy focused alternatives to Discord with stereo enabled, based on Electron.

Feb 24, 2026

MacOS Patcher

MacOS Patcher is in development and can be found here.

Feb 24, 2026

Website Cleanup

Corrected words and sentences to verified terms.

Feb 19, 2026

Indexless Progression

Further updates will no longer require index.js, However it will be kept up separately to download. It will no longer be bundled after app-1.0.9225.

Feb 19, 2026

Dynamic Site Theme

Custom Colour can be enabled in the footer.

Feb 19, 2026

New Patch

app-1.0.9225 patched to support DcReject & HighpasscutoffFilter.

Feb 19, 2026

MacOS Apple Sillicon Confirmed to Work

Apple Sillicon now accepts stereo input. It has been tested and validated.

Feb 18, 2026

Discord Stable Updated

Updated to app-1.0.9225 - no problems found.

Feb 17, 2026

MacOS Support Confirmed

macOS patched discord_voice.node is confirmed to work for MacOS x86 & apple silicon, developers welcome.

Feb 16, 2026

Linux support confirmed to work

Linux support has been confirmed to work, linux version has been published, please overwrite all files.

Feb 16, 2026

Possible Deprecation of openh264 and ffmpeg.dll Fix

openh264-2.2.0-win64 and ffmpeg.dll may no longer be required in future updates but will remain available for download for those wanting to prefer legacy methods.

Feb 16, 2026

Developers Required!

Linux/MacOS Research remains necessary to improve the voice modernisation project.

Feb 14, 2026

Linux Support in Development

Linux is currently in ALPHA STAGES. If you would like to contribute to Linux voice research, join our server.

Feb 13, 2026

MacOS Support in Development

MacOS Support is being worked on actively with our team, big thanks to @HorrorPills and his friends!

United Kingdom --:--:-- -- --- ----
Settings
#AFE37F

Analytics: Tracks anonymous pageviews (AnalyticsZ).

Download Tracking: Uses spoo.me for download analytics. Disable for direct links.

Both preferences are saved locally in your browser.

Scene
Resolution Scaling35%
FPS Capfps

Next-Gen Audio Subsystem for Discord

High-fidelity Studio-Grade Quality Within Discord's 48kHz Framework. Built with accessibility in mind: simple to install, reliable, and non-corrupting. Based on discord_voice.node (15/04/2026).

Full CTL Interface
High-Quality Bitrate
High-Fidelity 48kHz
Download for Windows Download for Linux (External) Download for MacOS (External)

Mega-Hosted Download • Windows 10/11/Linux/Mac • Open Source

Links not working? Please open live chat or join our Discord server for assistance.

🎉 What's New?
Index.js Date

Pushed to 15th April

Released 15th April node for those experiencing muted issues.

128kbps - 384kbps - 512kbps

Choose your bitrate node.

For full update history, join the discord server

Lightcord vs Voice Playground

Why Discord Voice Playground Surpasses Legacy Modifications

⚠️
Lightcord is DEPRECATED

Lightcord project has been officially marked as [DEPRECATED; DO NOT USE] as of 2024. discord_voice.xyz represents the next generation of Discord voice optimization with active maintenance and full offset coverage.

FeatureLightcordVoice Playground
Last Build DateDec 09, 2024Apr 15, 2026
Patch Coverage23% (7/30)100% (30/30)
Stereo Support❌ Partial✅ Full (9 patches)
Bitrate Control❌ Limited✅ 512 kbps Lock + Floor + GoogCC NOP
48kHz Emulation❌ Not Found✅ Implemented
Audio Filters❌ 2/6✅ 6/6
FEC / DTX / VBR❌ None✅ FEC forced, DTX blocked, VBR locked
Network Stability❌ None✅ BWE Audio + CwndPushback
Platform SupportWindows OnlyWin/Linux/Mac
Maintenance Status❌ Abandoned✅ Active
🔧

44 Patch Coverage

All critical voice, bitrate, network, FEC, video have been discovered and applied

📡

Packet Loss Eliminated

BWE audio/video params, CwndPushback, FEC forced-on & MinBitrateFloor prevent degradation

🔄

Future-Proof

Regularly updated for new Discord versions (app-1.0.9226+) with active development

📖

Open Source

MIT Licensed, transparent codebase on Codeberg with community contributions

⚠️ Important Considerations

  • Discord ToS: Using modified voice modules may violate Discord's Terms of Service
  • Update Compatibility: Future Discord updates may overwrite these files, requiring reapplication
  • DAVE Protocol: Discord has introduced DAVE protocol which may show warnings (restart with CTRL + R to ignore)
  • No Ban History: No previous bans have been recorded

Built for Audiophiles & Producers

Opus configuration has been tuned to input/output the highest quality

Audio Quality Comparison
Opus HD2.0 Mb/s / Multichannel
Opus Legacy510 Kb/s / Stereo
Stock96 Kb/s / Mono
Fixed bitrates delivered with: CPU ≥ 3.0 GHz quad-core with AVX2 support,
and stable network (≥5 Mbps upload).
Audio Samples
Opus HD2.0 Mb/s / Multichannel
448kbps, 16-bit/44.1kHz
Opus Legacy510 Kb/s / Stereo
384kbps, 16-bit/44.1kHz
Stock96 Kb/s / Mono
224kbps, 16-bit/44.1kHz
Samples are streamed in FLAC format - Source: 24-bit/48kHz - Input: A2DP SBC | Output: VC Audio
Source Audio24-bit/48kHz
1326kbps, 24-bit/48kHz
For fair-use educational and technical evaluation purposes only.
✅ Windows 10/11 ✅ Linux ✅ MacOS ✅ Discord Stable, PTB & Canary

Windows Installation Guide

Enable near-lossless HD audio in Discord with custom voice modules

1

Download Required Files

Download the following files from the official repository:

  • index.js (now, optional)
  • discord_voice.node (required)
  • ffmpeg.dll (legacy clients)

BETA OPTION: Check the Experimental tab in the download modal for the Mar 20 node with 44 patches.

⚠️ Note: Experimental builds may produce unexpected behaviour.

Download Files Here
2

Locate Your Discord Installation

Press ⊞ Win + R, paste the path below, and press Enter:

%LocalAppData%\Discord

This opens the main Discord folder where app versions are stored.

3

Identify the Active Voice Module

Navigate into the latest app folder (e.g., app-1.0.x), then go to:

app-x.x.xmodulesdiscord_voice-1 or discord_voice-2

Fully quit Discord before proceeding:

  • Right-click the Discord icon in the system tray → Exit Discord
4

Replace Module Files

  • index.js
  • discord_voice.node
5

Launch & Use

Reopen Discord and join a voice channel as usual.

⚠️ Future Discord updates may overwrite these files. Reapply after each major update.

experimental.node
C++ Source Code
Download
#include <napi.h>
#include <opus/opus.h>
#include <opus/opus_projection.h>
#include <vector>
#include <string>
#include <cmath>

class OpusHDEncoder : public Napi::ObjectWrap<OpusHDEncoder> {
public:
    static Napi::Object Init(Napi::Env env, Napi::Object exports);
    OpusHDEncoder(const Napi::CallbackInfo& info);
    ~OpusHDEncoder();
private:
    OpusProjectionEncoder* proj_enc_ = nullptr;
    int sample_rate_ = 48000;
    int channels_ = 225;
    int frame_size_ = 11520;
    bool int24_ = false;
    Napi::Value Encode(const Napi::CallbackInfo& info);
    Napi::Value Encode24(const Napi::CallbackInfo& info);
    Napi::Value Destroy(const Napi::CallbackInfo& info);
    Napi::Value CTL(const Napi::CallbackInfo& info);
    Napi::Value GetVersion(const Napi::CallbackInfo& info);
};

static bool valid_frame(int sr, int fs) {
    static const int base[] = {120, 240, 480, 960, 1920, 2880, 5760, 11520};
    for (int v : base) {
        if (fs == v) return true;
        if (sr == 48000 && fs == v * 2) return true;
    }
    return false;
}

static int get_application(const std::string& app) {
    if (app == "voip") return OPUS_APPLICATION_VOIP;
    if (app == "lowdelay") return OPUS_APPLICATION_RESTRICTED_LOWDELAY;
    return OPUS_APPLICATION_AUDIO;
}

OpusHDEncoder::OpusHDEncoder(const Napi::CallbackInfo& info)
    : Napi::ObjectWrap<OpusHDEncoder>(info) {
    Napi::Env env = info.Env();
    if (info.Length() < 1 || !info[0].IsObject()) {
        Napi::TypeError::New(env, "Options object required").ThrowAsJavaScriptException();
        return;
    }
    Napi::Object opts = info[0].As<Napi::Object>();
    sample_rate_ = opts.Get("sampleRate").As<Napi::Number>().Int32Value();
    channels_ = opts.Get("channels").As<Napi::Number>().Int32Value();
    frame_size_ = opts.Get("frameSize").As<Napi::Number>().Int32Value();
    int24_ = opts.Get("int24").As<Napi::Boolean>().Value();
    std::string app = opts.Get("application").As<Napi::String>().Utf8Value();
    int application = get_application(app);
    if (channels_ < 1 || channels_ > 255) {
        Napi::RangeError::New(env, "Channels must be 1-255").ThrowAsJavaScriptException();
        return;
    }
    if (!valid_frame(48000, frame_size_)) {
        Napi::RangeError::New(env, "Invalid frame size").ThrowAsJavaScriptException();
        return;
    }
    const int opus_sample_rate = 48000;
    int order = static_cast<int>(std::sqrt(channels_) - 1);
    if ((order + 1) * (order + 1) != channels_) {
        Napi::RangeError::New(env, "Channel count must be a perfect square").ThrowAsJavaScriptException();
        return;
    }
    int streams = 0, coupled_streams = 0, error = OPUS_OK;
    proj_enc_ = opus_projection_ambisonics_encoder_create(
        opus_sample_rate, channels_, order,
        &streams, &coupled_streams, application, &error);
    if (!proj_enc_ || error != OPUS_OK) {
        Napi::Error::New(env, std::string("Projection encoder creation failed: ") + opus_strerror(error)).ThrowAsJavaScriptException();
        return;
    }
    opus_projection_encoder_ctl(proj_enc_, OPUS_SET_BITRATE(2000000));
    opus_projection_encoder_ctl(proj_enc_, OPUS_SET_COMPLEXITY(10));
    opus_projection_encoder_ctl(proj_enc_, OPUS_SET_LSB_DEPTH(int24_ ? 24 : 16));
    opus_projection_encoder_ctl(proj_enc_, OPUS_SET_SIGNAL(OPUS_SIGNAL_MUSIC));
}

OpusHDEncoder::~OpusHDEncoder() {
    if (proj_enc_) { opus_projection_encoder_destroy(proj_enc_); proj_enc_ = nullptr; }
}

Napi::Value OpusHDEncoder::Encode(const Napi::CallbackInfo& info) {
    Napi::Env env = info.Env();
    if (info.Length() < 1 || !info[0].IsTypedArray()) {
        Napi::TypeError::New(env, "Float32Array required").ThrowAsJavaScriptException();
        return env.Null();
    }
    auto pcm = info[0].As<Napi::Float32Array>();
    size_t expected_length = static_cast<size_t>(frame_size_ * channels_);
    if (pcm.ElementLength() != expected_length) {
        Napi::RangeError::New(env, "PCM buffer length mismatch").ThrowAsJavaScriptException();
        return env.Null();
    }
    std::vector<unsigned char> out(65536);
    int ret = opus_projection_encode_float(proj_enc_, pcm.Data(), frame_size_, out.data(), static_cast<opus_int32>(out.size()));
    if (ret < 0) {
        Napi::Error::New(env, std::string("Encode failed: ") + opus_strerror(ret)).ThrowAsJavaScriptException();
        return env.Null();
    }
    return Napi::Buffer<unsigned char>::Copy(env, out.data(), ret);
}

Napi::Value OpusHDEncoder::CTL(const Napi::CallbackInfo& info) {
    Napi::Env env = info.Env();
    if (info.Length() < 2 || !info[0].IsString()) {
        Napi::TypeError::New(env, "CTL name and value required").ThrowAsJavaScriptException();
        return env.Null();
    }
    std::string ctl = info[0].As<Napi::String>().Utf8Value();
    int val = info[1].As<Napi::Number>().Int32Value();
    int ret = OPUS_OK;
    if (ctl == "SET_BITRATE") ret = opus_projection_encoder_ctl(proj_enc_, OPUS_SET_BITRATE(val));
    else if (ctl == "SET_COMPLEXITY") ret = opus_projection_encoder_ctl(proj_enc_, OPUS_SET_COMPLEXITY(val));
    else if (ctl == "SET_LSB_DEPTH") ret = opus_projection_encoder_ctl(proj_enc_, OPUS_SET_LSB_DEPTH(val));
    else if (ctl == "SET_SIGNAL") ret = opus_projection_encoder_ctl(proj_enc_, OPUS_SET_SIGNAL(val));
    else { Napi::TypeError::New(env, "Unsupported CTL command").ThrowAsJavaScriptException(); return env.Null(); }
    if (ret != OPUS_OK) { Napi::Error::New(env, std::string("CTL failed: ") + opus_strerror(ret)).ThrowAsJavaScriptException(); return env.Null(); }
    return Napi::Boolean::New(env, true);
}

Napi::Value OpusHDEncoder::GetVersion(const Napi::CallbackInfo& info) {
    return Napi::String::New(info.Env(), opus_get_version_string());
}

Napi::Value OpusHDEncoder::Destroy(const Napi::CallbackInfo& info) {
    if (proj_enc_) { opus_projection_encoder_destroy(proj_enc_); proj_enc_ = nullptr; }
    return info.Env().Undefined();
}

Napi::Object OpusHDEncoder::Init(Napi::Env env, Napi::Object exports) {
    Napi::Function func = DefineClass(env, "OpusHDEncoder", {
        InstanceMethod("encode", &OpusHDEncoder::Encode),
        InstanceMethod("ctl", &OpusHDEncoder::CTL),
        InstanceMethod("getVersion", &OpusHDEncoder::GetVersion),
        InstanceMethod("destroy", &OpusHDEncoder::Destroy)
    });
    exports.Set("OpusHDEncoder", func);
    exports.Set("OPUS_APPLICATION_AUDIO", Napi::Number::New(env, OPUS_APPLICATION_AUDIO));
    exports.Set("OPUS_APPLICATION_VOIP", Napi::Number::New(env, OPUS_APPLICATION_VOIP));
    exports.Set("OPUS_OK", Napi::Number::New(env, OPUS_OK));
    return exports;
}

Napi::Object InitAll(Napi::Env env, Napi::Object exports) {
    return OpusHDEncoder::Init(env, exports);
}

NODE_API_MODULE(experimental, InitAll)

Technical Targets

High-Performance Fidelity

End-to-end 24-bit/96kHz float32 audio processing with near-lossless Opus HD encoding at 2.0 Mbps.

24-bit API badge

DRED v2

DRED V2 greatly improves robustness to packet loss by embedding very low-bitrate redundancy into the Opus stream.

DRED v2 badge

Spatial Audio

225-channel Ambisonics (14th-order) with ACN/SN3D encoding.

Spatial Audio badge

Regular Updates

Continuously improved with new features, optimizations, and compatibility refinements.

Maintained badge

ML-Based BWE

Neural reconstruction of high-frequency speech (8-20 kHz) from wideband input.

ML BWE badge

Backwards Compatible

Legacy clients receive high-quality 48kHz/510kbps streams.

Compatibility badge

Platform Constraints

Discord enforces a hard 48kHz sample rate cap and mono/stereo channel limits.
Opus 1.6+ HD encoding (up to 2 Mbps) is supported, but end-to-end fidelity is limited by Discord's infrastructure.
This is an optimization within official boundaries.

Research Partners


🔬 A community dedicated to analyzing and improving multi-channel voice handling across Windows, macOS, and Linux.

Contribution

Open-source research framework & cross-platform compatibility testing

Collaborators


Platform
🍎 macOS Voice Engine
Contribution

macOS-specific voice module optimization & native integration


Platform
🪟 Windows Voice Engine
Contribution

Windows voice module engineering & performance optimization


Platform
🪟 Windows Voice Engine | Web Maintainer
Contribution

Enhancing index.js architecture & Maximising limits

Privacy & Data

The audio mod itself contains zero telemetry. All processing occurs locally.

This website uses two privacy-respecting services:

  • spoo.me - for link shortening and anonymised click analytics.
  • AnalyticsZ - a cookieless, GDPR-compliant analytics tool.

Neither service collects personally identifiable information.

DMCA

✉️ DMCA Email
ℹ️
DMCA Agent: This service designates [dmca@discord-voice.xyz] as its copyright agent under 17 U.S.C. §512(c).

Open Source

MIT License - free to use, modify, distribute.

Contributions welcome: bug reports, PRs, documentation.

Copyright © 2026 UNP Beats UK

Permission is hereby granted, free of charge, to any person obtaining a copy of the accompanying source files to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.

⚠️ This license applies ONLY to the open-source components provided by this project. No Discord-owned code is distributed herein.
The source code in this repository is licensed under MIT.
No Discord-owned binaries are distributed herein.
v2.77.0 BETA
Early Access

24-bit - Early Access

Distributed through our Discord server during early access. Join, grab the invite code from #24-bit-download, and unlock the download below.

Join Server
Access Granted
The 24-bit download is now unlocked.
Active Development

Join Our Discord Server

This project is under active development with frequent updates. 24-bit audio support is actively in development. 4k video support is actively in development. Traffic is moderately high. Join the community to stay informed of breaking changes, get notified of new releases, and receive direct support.

Access direct downloads in #audio-patches.
Get the @Audio Updates role in #encoder-updates to receive notifications about new releases.
Patch Alerts Live Support Community Feedback
Join Server