Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON, RISC-V RVV)
See the code
https://kfr.dev https://docs.kfr.dev
KFR is an open source C++ DSP framework that contains high performance building blocks for DSP, audio, scientific and other applications. It is distributed under GPLv2+ and a commercial license.
π New: Explore benchmark results from the LIGO, Virgo, and KAGRA collaborations, comparing KFR performance against FFTW for signal processing in gravitational-wave research: https://ar5iv.labs.arxiv.org/html/2503.14292
ngfft: low-overhead FFT API with manual memory managementaudio_filter for independent multi-channel FIR, IIR, and convolution filtering of planar audio_datafiltfilt)π£ Brisk is a cross-platform C++20 GUI framework featuring MVVM architecture, reactive capabilities, and scalable, accelerated GPU rendering. (GPL/Commercial)
π’ CxxDox β C++ documentation generator. (Apache-2.0)
Compiler support:
KFR has no external C++ dependencies beyond a C++20-compatible standard library. CMake is used as the build system.
Since KFR 7.1, KFR provides the same level of support for Clang, GCC, and MSVC. DFT can be slower with MSVC 2022, while MSVC 2026 generally provides good performance. Use Clang or GCC when maximum performance is required.
Clang can be used to build Visual Studio projects, either for selected targets or as the primary compiler, while maintaining full compatibility with code built by Visual Studio.
ARM, ARM64, and RISC-V targets require Clang or GCC.
| Platform | ABI / compiler | Compiler command | Support | Performance |
|---|---|---|---|---|
| Linux | GCC | g++ | β Supported | β Full performance |
| Linux | Clang | clang++ | β Supported | β Full performance |
| macOS | Clang | clang++ | β Supported | β Full performance |
| Android | Clang | clang++ | β Supported | β Full performance |
| iOS | Clang | clang++ | β Supported | β Full performance |
| Windows | MSVC ABI / MSVC | cl.exe | β Supported on x86* | β οΈ May be lower, especially for DFT and complex algorithms |
| Windows | MSVC ABI / Clang | clang-cl.exe | β Supported | β Full performance |
| Windows | MinGW / GCC | g++.exe | β Supported | β Full performance |
| Windows | MinGW / Clang | clang++.exe | β Supported | β Full performance |
| WebAssembly | Emscripten | em++ | β Supported | β Full performance |
* MSVC support is limited to x86 and x86-64 targets.
Other operating systems, compilers, and CPUs may work but are outside the regular test matrix.
β‘οΈ See Installation docs for more details
| Package manager | Package name | Version | Command | Comments |
|---|---|---|---|---|
| Homebrew | kfr | 7.1.0 | brew install kfr | Prebuilt. Bottles exist for macOS on Apple Silicon (Golden Gate, Tahoe, Sequoia, Sonoma), macOS on Intel (Sonoma only), and Linux ARM64 and x86_64. Boost and CMake are needed only when building from source. |
| vcpkg | kfr | 6.3.1 (the page may lag behind the registry) | vcpkg install kfr (classic mode) or vcpkg add port kfr (manifest mode) | Built from source (no binary cache by default). Optional features: dft and capi. Supported on Windows, Linux and macOS, except Windows ARM64 and Xbox. |
pacman (Arch Linux, official extra repo) | kfr | 7.1.0-1 | sudo pacman -S kfr | Prebuilt. x86_64 only. Depends only on glibc. |
| FreeBSD pkg / ports | math/kfr | 6.3.1 | pkg install kfr (or build with cd /usr/ports/math/kfr && make install clean) | Prebuilt packages for aarch64 and amd64 on FreeBSD 13β16. Only armv7 on FreeBSD 14 has older builds (6.3.0 on latest, 6.2.0 on quarterly). |
Conda (community channel hep-forge) | kfrlib | 7.0.1 | conda install hep-forge::kfrlib | Prebuilt, but only for linux-64. Not an official or conda-forge package, and the channel is community-run. |
β‘οΈ See also How to apply FFT with KFR
sin, log and cosh built on top of SIMD primitivesvec<T, N> class and related functions that abstracts cpu-specific intrinsicsvec<float,1>, vec<unsigned,3>, vec<complex<float>, 11> all are valid vector types in KFRThe multiarchitecture mode enables building algorithms for multiple architectures with runtime dispatch to detect the CPU of the target machine and select the best code path
C API is available and includes a subset of KFR features including FFT and filter processing.
Powers of 2, from 16 to 16777216 (Higher is better)

Prime numbers from 17 to 127 (Higher is better)

Small numbers from 18 to 119 (Higher is better)

Random sizes from 120 to 30720000 (Higher is better)

See fft benchmark for details about benchmarking process.
(Higher is better)
Documentation homepage: https://docs.kfr.dev/
Symbol reference: https://docs.kfr.dev/_gen/
Built with
dev - current development version. Pull requests should go to dev.
main - current stable version passing all compiler/architecture tests.
v6 - previous version of KFR (no new features, fixes only)
KFR is dual-licensed, available under both commercial and open-source GPLv2+ license.
If you want to use KFR in a commercial product or a closed-source project, you need to purchase a Commercial License.
(top 24 of 29)
1,054 followers Β· starred Jan 2025
376 followers Β· starred Aug 2026
126 followers Β· starred Feb 2023
80 followers Β· starred Jul 2018
Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON, RISC-V RVV)
See the code
https://kfr.dev https://docs.kfr.dev
KFR is an open source C++ DSP framework that contains high performance building blocks for DSP, audio, scientific and other applications. It is distributed under GPLv2+ and a commercial license.
π New: Explore benchmark results from the LIGO, Virgo, and KAGRA collaborations, comparing KFR performance against FFTW for signal processing in gravitational-wave research: https://ar5iv.labs.arxiv.org/html/2503.14292
ngfft: low-overhead FFT API with manual memory managementaudio_filter for independent multi-channel FIR, IIR, and convolution filtering of planar audio_datafiltfilt)π£ Brisk is a cross-platform C++20 GUI framework featuring MVVM architecture, reactive capabilities, and scalable, accelerated GPU rendering. (GPL/Commercial)
π’ CxxDox β C++ documentation generator. (Apache-2.0)
Compiler support:
KFR has no external C++ dependencies beyond a C++20-compatible standard library. CMake is used as the build system.
Since KFR 7.1, KFR provides the same level of support for Clang, GCC, and MSVC. DFT can be slower with MSVC 2022, while MSVC 2026 generally provides good performance. Use Clang or GCC when maximum performance is required.
Clang can be used to build Visual Studio projects, either for selected targets or as the primary compiler, while maintaining full compatibility with code built by Visual Studio.
ARM, ARM64, and RISC-V targets require Clang or GCC.
| Platform | ABI / compiler | Compiler command | Support | Performance |
|---|---|---|---|---|
| Linux | GCC | g++ | β Supported | β Full performance |
| Linux | Clang | clang++ | β Supported | β Full performance |
| macOS | Clang | clang++ | β Supported | β Full performance |
| Android | Clang | clang++ | β Supported | β Full performance |
| iOS | Clang | clang++ | β Supported | β Full performance |
| Windows | MSVC ABI / MSVC | cl.exe | β Supported on x86* | β οΈ May be lower, especially for DFT and complex algorithms |
| Windows | MSVC ABI / Clang | clang-cl.exe | β Supported | β Full performance |
| Windows | MinGW / GCC | g++.exe | β Supported | β Full performance |
| Windows | MinGW / Clang | clang++.exe | β Supported | β Full performance |
| WebAssembly | Emscripten | em++ | β Supported | β Full performance |
* MSVC support is limited to x86 and x86-64 targets.
Other operating systems, compilers, and CPUs may work but are outside the regular test matrix.
β‘οΈ See Installation docs for more details
| Package manager | Package name | Version | Command | Comments |
|---|---|---|---|---|
| Homebrew | kfr | 7.1.0 | brew install kfr | Prebuilt. Bottles exist for macOS on Apple Silicon (Golden Gate, Tahoe, Sequoia, Sonoma), macOS on Intel (Sonoma only), and Linux ARM64 and x86_64. Boost and CMake are needed only when building from source. |
| vcpkg | kfr | 6.3.1 (the page may lag behind the registry) | vcpkg install kfr (classic mode) or vcpkg add port kfr (manifest mode) | Built from source (no binary cache by default). Optional features: dft and capi. Supported on Windows, Linux and macOS, except Windows ARM64 and Xbox. |
pacman (Arch Linux, official extra repo) | kfr | 7.1.0-1 | sudo pacman -S kfr | Prebuilt. x86_64 only. Depends only on glibc. |
| FreeBSD pkg / ports | math/kfr | 6.3.1 | pkg install kfr (or build with cd /usr/ports/math/kfr && make install clean) | Prebuilt packages for aarch64 and amd64 on FreeBSD 13β16. Only armv7 on FreeBSD 14 has older builds (6.3.0 on latest, 6.2.0 on quarterly). |
Conda (community channel hep-forge) | kfrlib | 7.0.1 | conda install hep-forge::kfrlib | Prebuilt, but only for linux-64. Not an official or conda-forge package, and the channel is community-run. |
β‘οΈ See also How to apply FFT with KFR
sin, log and cosh built on top of SIMD primitivesvec<T, N> class and related functions that abstracts cpu-specific intrinsicsvec<float,1>, vec<unsigned,3>, vec<complex<float>, 11> all are valid vector types in KFRThe multiarchitecture mode enables building algorithms for multiple architectures with runtime dispatch to detect the CPU of the target machine and select the best code path
C API is available and includes a subset of KFR features including FFT and filter processing.
Powers of 2, from 16 to 16777216 (Higher is better)

Prime numbers from 17 to 127 (Higher is better)

Small numbers from 18 to 119 (Higher is better)

Random sizes from 120 to 30720000 (Higher is better)

See fft benchmark for details about benchmarking process.
(Higher is better)
Documentation homepage: https://docs.kfr.dev/
Symbol reference: https://docs.kfr.dev/_gen/
Built with
dev - current development version. Pull requests should go to dev.
main - current stable version passing all compiler/architecture tests.
v6 - previous version of KFR (no new features, fixes only)
KFR is dual-licensed, available under both commercial and open-source GPLv2+ license.
If you want to use KFR in a commercial product or a closed-source project, you need to purchase a Commercial License.
(top 24 of 29)
1,054 followers Β· starred Jan 2025
376 followers Β· starred Aug 2026
126 followers Β· starred Feb 2023
80 followers Β· starred Jul 2018