5 min read

Buzz: Transcribe Audio Offline With Whisper (GitHub, Scanned)

A desktop app that transcribes and translates audio and video offline with Whisper, no account needed.

Buzz logo
✅
Scan: safe. Nothing malicious. Two things to know: every launch sends an app_launched event with your OS details to PostHog, which only the BUZZ_DISABLE_TELEMETRY environment variable stops, and the Windows build bundles an SDL2 DLL committed as a binary. Scanned Oct 2, 2026; the full report is below.

Buzz puts OpenAI's Whisper behind a normal desktop window. Drop in an audio or video file or paste a YouTube link and it transcribes on your own computer and can translate the result; turn on the microphone and it transcribes live, with a presentation window for showing captions at an event. It can separate speech from background noise first, identify speakers, and export to TXT, SRT or VTT subtitle files.

It earns its place by making Whisper usable for people who will never open a terminal, while staying entirely offline. It supports several backends (Whisper, Whisper.cpp with Vulkan acceleration on most GPUs, and Whisper-type models from Hugging Face), with CUDA on NVIDIA cards and Apple Silicon support on Macs. A searchable transcript viewer with playback controls, a watch folder that transcribes new files automatically, a command-line interface and a plugin system round it out.

Buzz was created by Chidi Williams, has about 22,000 stars and is MIT-licensed. Version 1.4.5, from August 2026, is the last release for Intel Macs; newer macOS builds need Apple Silicon.

Who it is for

Journalists, researchers, students and podcasters who transcribe interviews and lectures, video makers who need subtitles, and anyone whose recordings are too private for an online transcription service.

Getting started

1. Linux, from Flathub (Snap and AppImage are also offered)

flatpak install flathub io.github.chidiwilliams.Buzz

2. macOS (Apple Silicon) and Windows: download the installer from SourceForge

open https://sourceforge.net/projects/buzz-captions/files/

3. Or any platform with Python 3.12 and ffmpeg installed

pip install buzz-captions && python -m buzz

The Windows installer is unsigned, so SmartScreen will ask you to choose More info and Run anyway. Whisper models download the first time you use each size; larger models are more accurate and much slower without a GPU.

Safety scan

We cloned chidiwilliams/buzz at commit 100589f on Oct 2, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.

  • No secrets, no pattern hits and no bare-IP URLs across 439 files and about 53,000 lines, 49,000 of them Python. The only installer script is a five-line Flatpak launcher.
  • We read the telemetry in buzz/widgets/application.py: on startup it posts one app_launched event to PostHog with the Buzz version, locale, OS name, release, version and machine type, keyed to a per-install identifier. No audio, file names or transcripts. There is no switch in the interface; the environment variable is the only off switch in this code.
  • Two committed binaries. dll_backup/SDL2.dll (2.5 MB) is copied by the Makefile into the Windows whisper.cpp build, so the release trusts a prebuilt SDL2 library that a scan cannot match to source. testdata/ggml-tiny.bin (575 KB) is a small Whisper model used by the tests.
  • 292 known advisories, 5 critical. 147 are in docs/package-lock.json, the Docusaurus documentation site, including three criticals (Babel, shell-quote, websocket-driver) that never reach the app. The other 145 are in uv.lock, which pins the app's Python stack exactly: anyio 4.12.0 (critical, a TLS host-name issue) and GitPython 3.1.45 (critical, arriving with the wandb logging library as a transitive dependency), plus many highs, so fixes arrive only with a Buzz release.
  • 4 workflows, none using pull_request_target; none of the 21 third-party actions is pinned to a commit. Licence, contributing guide and code of conduct present; no security policy, Dependabot or CodeQL. The README notes the Windows installer is unsigned.

What the scanner counted

CheckResult
SecretsNone found.
Suspicious codeNone found.
Install-time code1 installer script
Committed binaries2 executable or compiled objects committed; listed under the raw findings.
CI workflows4 workflows. None use pull_request_target. 21 of 21 third-party actions pinned to a tag rather than a commit.
Network hosts13 distinct hosts referenced from source; most often github.com, huggingface.co, stackoverflow.com, chidiwilliams.github.io. No URLs to bare IP addresses.
Known vulnerabilities292 advisories across 1,329 pinned packages: 5 critical, 139 high, 111 moderate, 36 low, 1 unrated. docs/package-lock.json: 1,108 packages, 147 advisories; uv.lock: 301 packages, 145 advisories.
Project hygieneHas licence file, contributing guide. Missing security policy, automated dependency updates, CodeQL.
OpenSSF ScorecardNot scored: the project is not in Scorecard's weekly index.

The raw findings

Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.

Installer scripts (1)
Committed binaries (2)
  • dll_backup/SDL2.dll: PE (Windows executable), 3 MB
  • testdata/ggml-tiny.bin: .bin, 575 KB
Worst known vulnerabilities (24 of 292)
AdvisorySeverityPackageSummary
GHSA-67hx-6x53-jw92critical@babel/traverse@7.22.5Babel vulnerable to arbitrary code execution when compiling specifically crafted malicious code
GHSA-w7jw-789q-3m8pcriticalshell-quote@1.8.1shell-quote quote() does not escape newlines in object .op values
GHSA-xv26-6w52-cph6criticalwebsocket-driver@0.7.4websocket-driver: Message corruption via abuse of protocol length headers
GHSA-82r6-8w77-94w6criticalanyio@4.12.0AnyIO: TLSStream IDNA 2003 host name encoding enables potential TLS certificate spoofing
GHSA-284h-m62q-gf8wcriticalgitpython@3.1.45GitPython: Dormant multi-line git-config values are corrupted into live injected directives (e.g. core.hooksPath) on any…
GHSA-c2qf-rxjj-qqgwhighsemver@6.3.0semver vulnerable to Regular Expression Denial of Service
GHSA-fv7c-fp4j-7gwphigh@babel/plugin-transform-modules-systemjs@7.22.5@babel/plugin-transform-modules-systemjs generates arbitrary code when compiling malicious input
GHSA-c2qf-rxjj-qqgwhighsemver@5.7.1semver vulnerable to Regular Expression Denial of Service
GHSA-3g43-6gmg-66jwhighaxios@0.25.0axios Vulnerable to Credential Theft and Response Hijacking via Prototype Pollution Gadget in Config Merge
GHSA-43fc-jf86-j433highaxios@0.25.0Axios is Vulnerable to Denial of Service via __proto__ Key in mergeConfig
GHSA-6chq-wfr3-2hj9highaxios@0.25.0Axios: Header Injection via Prototype Pollution
GHSA-hfxv-24rg-xrqfhighaxios@0.25.0Axios: Regular Expression Denial of Service (ReDoS) via Cookie Name Injection
GHSA-j5f8-grm9-p9fchighaxios@0.25.0Axios: Proxy-Authorization header leaks to redirect target when proxy is re-evaluated to direct connection
GHSA-jr5f-v2jv-69x6highaxios@0.25.0axios Requests Vulnerable To Possible SSRF and Credential Leakage via Absolute URL
GHSA-p92q-9vqr-4j8vhighaxios@0.25.0Axios: Proxy-Authorization Credential Leak to Origin Server Across HTTP-to-HTTPS Redirect in Axios Node.js HTTP Adapter
GHSA-pf86-5x62-jrwfhighaxios@0.25.0Axios: Prototype Pollution Gadgets - Response Tampering, Data Exfiltration, and Request Hijacking
GHSA-pjwm-pj3p-43mvhighaxios@0.25.0axios's shouldBypassProxy does not recognize IPv4-mapped IPv6 addresses, allowing NO_PROXY bypass (incomplete fix for CV…
GHSA-pmwg-cvhr-8vh7highaxios@0.25.0Axios: Incomplete Fix for CVE-2025-62718 - NO_PROXY Protection Bypassed via RFC 1122 Loopback Subnet (127.0.0.0/8) in Ax…
GHSA-qwcr-r2fm-qrc7highbody-parser@1.20.1body-parser vulnerable to denial of service when url encoding is enabled
GHSA-3jxr-9vmj-r5cphighbrace-expansion@1.1.11brace-expansion: DoS via exponential-time expansion of consecutive non-expanding {} groups
GHSA-6j4f-fj2g-mc7phighbrace-expansion@1.1.11brace-expansion: DoS via uncontrolled recursion in parseCommaParts causing stack exhaustion
GHSA-mh99-v99m-4gvghighbrace-expansion@1.1.11brace-expansion: DoS via unbounded expansion length causing an out-of-memory process crash
GHSA-qhr7-859c-m2p7highbrace-expansion@1.1.11brace-expansion: DoS via uncontrolled recursion on nested brace groups causing stack exhaustion
GHSA-rgw5-rvv9-x895highbrace-expansion@1.1.11brace-expansion: DoS via unbounded intermediate arrays, bypassing the CVE-2026-14257 mitigation

By the numbers

Stars21.8K
Forks1,614
Contributors45
Commits787
Open issues18
Open pull requests2
Releases48
Latest releasev1.4.5
LicenceMIT
Main languagePython
Project age4 years
Last pushOct 2, 2026
Tracked files439
Lines of code53.4K
Checkout size16 MB

Lines by language: Python 48.9K, Markdown 2,178, YAML 961, JSON 841, TOML 187, Shell 184.

Questions

Is Buzz free?

Yes. Buzz is MIT-licensed and free on macOS, Windows and Linux, with no account, usage limit or subscription. The Whisper models it downloads are free as well, and transcription runs on your own hardware, so there is no per-minute cost.

Does Buzz work offline?

Yes. Once a model has been downloaded, transcription and translation run entirely on your computer and audio never leaves it. You need a connection only to download models or to fetch a YouTube video you paste in. When online, Buzz does send an anonymous app_launched event with your OS details to PostHog at startup; setting the BUZZ_DISABLE_TELEMETRY environment variable stops it.

Does Buzz support GPUs?

Yes. It uses CUDA on NVIDIA GPUs, Apple Silicon acceleration on Macs, and Vulkan through Whisper.cpp on most other GPUs, including many integrated ones. From version 1.4.6 on, once it is released, NVIDIA users can install CUDA acceleration from Help > About Buzz.


This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.