Note: This README describes the latest version of Bleep That Sh*t! — a 100% browser-based, privacy-first web app. For the legacy Python/Streamlit version, see the Legacy Branch.
Make someone sound naughty 😈 or make your content more Ad-friendly.
Bleep That Sh*t! lets you instantly transcribe and censor words in your audio or video files, with full control over what gets bleeped. No uploads, no servers, no installs — everything happens right in your browser.
- Upload your audio (MP3) or video (MP4) file.
- Transcribe using Whisper ONNX models (transformers.js) — all in-browser.
- Censor: Pick words to bleep (exact, partial, or fuzzy match).
- Preview & Download: Hear the result and save your censored file.
All processing is done locally in your browser using cutting-edge technologies. Your media and transcripts stay private — nothing is sent to a server unless you opt in.
- Rails 8 + Vite + Vanilla JS: Modern, responsive web app with step-by-step UX
- transformers.js + ONNX Whisper: In-browser speech-to-text with word-level timestamps
- ffmpeg.wasm: Audio/video extraction and muxing, all in-browser
- Web Audio API: Precise audio editing and bleep insertion
- Plyr: Beautiful, interactive media playback
- No Python, Docker, or ffmpeg install required
- No server/cloud processing by default — privacy-first, local-only by design
Some examples of the end product (make sure to turn volume on, its off by default).
bleep-that-sht-examples.mp4
Let's look more closely at the last example above - below is a short clip we'll bleep out some words from using the pipeline in this repo. (make sure to turn on audio - its off by default)
bleep_test_og_cropped_low_res.mp4
Now the same clip with the words - "treetz", "ice", "cream", "chocolate", "syrup", and "cookie" - bleeped out
bleep_test_processed_cropped_low_res.mp4
Just open the app in any modern browser — no installation or setup required.
- Go to https://bleep-that-sh-t.app (or your self-hosted instance)
- Upload your file, follow the step-by-step workflow, and download your censored result
The app guides you through:
- Uploading audio or video
- Selecting language and model
- Transcribing to generate a word-level transcript
- Entering words and matching modes (exact, partial, fuzzy)
- Running matching to find words to censor
- Choosing a bleep sound
- Previewing and downloading the censored result
The UI is modern, privacy-first, and works on desktop and mobile.
You can run the app locally in two ways:
This is the easiest way to run the app without installing dependencies on your machine.
-
Clone the repository:
git clone https://github.com/neonwatty/bleep_that_sht.git cd bleep_that_sht
-
Start the app with Docker Compose:
docker compose up
-
Visit http://localhost:3000 in your browser.
The app will be available at localhost:3000
. You can stop the app with Ctrl+C
and remove containers with docker compose down
.
If you prefer to run the app directly on your machine:
-
Clone the repository:
git clone https://github.com/neonwatty/bleep_that_sht.git cd bleep_that_sht
-
Install Ruby dependencies:
bundle install
-
Install Node.js dependencies:
npm install
-
Set up the database:
bin/rails db:create db:migrate
-
Start the Rails server:
bin/rails server
-
Visit http://localhost:3000 in your browser.
- For Docker: Docker and Docker Compose installed
- For Native: Ruby 3.4+, Node.js 18+, and PostgreSQL