snipcat
A terminal YouTube downloader that removes sponsor segments.
Paste a link, see exactly which sponsor/intro/self-promo segments exist, toggle what you want gone, and download a clean cut, all from your terminal.
_____ _ _____ _
/ ___| (_) / __ \ | |
\ `--. _ __ _ _ __ | / \/ __ _| |_
`--. \ '_ \| | '_ \ | | / _` | __|
/\__/ / | | | | |_) || \__/\ (_| | |_
\____/|_| |_|_| .__/ \____/\__,_|\__|
| |
|_|
Requirements
Install
Go
go install github.com/Degen7/snipcat/cmd/snipcat@latest
From source
git clone https://github.com/Degen7/snipcat
cd snipcat
go build -o snipcat ./cmd/snipcat
Install dependencies
macOS
brew install yt-dlp ffmpeg
Ubuntu / Debian
sudo apt install yt-dlp ffmpeg
Arch
sudo pacman -S yt-dlp ffmpeg
Windows
winget install yt-dlp.yt-dlp Gyan.FFmpeg
Usage
snipcat
- Paste a YouTube URL or bare video ID and press
enter
- snipcat fetches video info and SponsorBlock segment data in parallel
- The preview screen shows every sponsor/intro/self-promo segment and how much total time they add up to. Toggle any segment on or off with
space
- Adjust mode, quality, and destination at the bottom of the preview screen
- Press
d to download
- The file lands in your destination folder
Background downloads
While a download is in progress, press n to send it to the background and return to the input prompt. Queue up more videos; snipcat runs them concurrently (default: 4 simultaneous downloads, configurable).
A live progress grid appears at the bottom of the screen showing every background download with its title, percentage, and status. Completed jobs show a green checkmark and auto-dismiss after a few seconds.
Playlists
Paste any YouTube link that contains a list= parameter — either a /playlist?list=… URL or a /watch?v=…&list=… URL — and snipcat detects it as a playlist.
The playlist settings screen shows the playlist title, total video count, and the seven SponsorBlock categories as checkboxes. These categories apply to every video in the playlist. Toggle them, set your mode/quality/destination, then press enter to queue the entire batch.
Every video becomes a background job. The first max_workers start immediately; the rest wait in the grid and auto-promote as slots free up. You are returned to the input prompt right away so you can queue another playlist or single video while the grid works in the background.
Keyboard shortcuts
| Key |
Action |
enter |
Start fetch / confirm |
d |
Start download |
n |
Send to background (during download) / download another (after done) |
o |
Open destination folder (after done) |
c |
Open config screen (from input) |
space |
Toggle segment on/off |
↑ / ↓ |
Move cursor |
← / → |
Cycle option value |
esc |
Go back / cancel |
q / ctrl+c |
Quit (with confirmation if downloads are active) |
y / n |
Confirm / cancel quit |
Options
Each video lets you set three options from the preview screen:
| Option |
Values |
Default |
| Mode |
video, audio |
video |
| Quality |
best, 1080p, 720p, 480p, smallest |
best |
| Quality (audio) |
best, 128k |
best |
| Destination |
any path |
~/Downloads |
snipcat shows segments from every SponsorBlock category. The defaults for which are toggled on per video:
| Category |
Default |
| Sponsor |
✓ on |
| Self-Promo |
✓ on |
| Interaction reminder |
✓ on |
| Intro |
off |
| Outro |
off |
| Preview |
off |
| Music (off-topic) |
off |
Toggle any category per video on the preview screen. Change the defaults permanently in the config file.
Configuration
snipcat writes a config file on first run:
- macOS:
~/Library/Application Support/snipcat/config.toml
- Linux:
~/.config/snipcat/config.toml
- Windows:
%AppData%\snipcat\config.toml
Press c from the main screen to edit it in-app, or open the file directly:
[defaults]
mode = "video" # "video" | "audio"
quality = "best" # best | 1080p | 720p | 480p | smallest
destination = "~/Downloads"
audio_format = "mp3" # output format for audio-only mode
max_workers = 4 # concurrent background downloads (1–CPU count)
[sponsorblock]
# which categories are toggled ON by default for each new video
sponsor = true
selfpromo = true
interaction = true
intro = false
outro = false
preview = false
music_offtopic = false
[ui]
theme = "cozy"
mascot = true # set false to hide the cat
A note on cut accuracy
Sponsor removal delegates to yt-dlp + ffmpeg and cuts at keyframe boundaries, which is fast but can leave a small seam at cut points. This is normal and expected.
Privacy
SponsorBlock segments are fetched using the hash-prefix privacy endpoint. Only the first 4 hex characters of a SHA-256 hash of your video ID are sent to the server, so SponsorBlock never learns exactly which video you queried.