Search • Watch • Download YouTube videos directly from the terminal
No official YouTube API required.
sYT is a lightweight terminal-based YouTube client that lets you:
- 🔎 Search videos
▶️ Watch instantly- ⬇️ Download content
- 🎛 Select quality interactively
All from your terminal — without using the official YouTube API.
Designed for keyboard-driven workflows and minimal environments.
- API-free YouTube searching
- Terminal-native UI (fzf / dmenu / bemenu)
- Instant playback via
mpv - Multi-video downloads
- Quality selection
- Thumbnail preview support
- Multiple scraping algorithms
| Tool | Purpose |
|---|---|
| Python ≥ 3.5 | scraping logic |
| ueberzugpp | image preview |
| fzf / dmenu / bemenu | interactive menu |
| jq | JSON formatting |
| mpv | video playback |
| yt-dlp | stream extraction |
| aria2c | downloading |
echo 'export PATH=$HOME/.local/bin:$PATH' >> ~/.bashrcecho 'set PATH ~/.local/bin $PATH' >> ~/.config/fish/config.fishRestart shell afterwards.
Install build dependencies:
libxres openslide cmake chafa libvips libsixel python-opencvBuild:
pip uninstall -y cmake
git clone https://github.com/jstkdng/ueberzugpp.git
cd ueberzugpp
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
mv ./ueberzug ./ueberzugppgit clone https://github.com/glowfi/sYT
cd sYT
mkdir -p ~/.local/bin
cp sYT.py ~/.local/bin/
cp sYT.sh ~/.local/bin/
chmod +x ~/.local/bin/sYT.py
chmod +x ~/.local/bin/sYT.sh
cd ..
rm -rf sYT| Algorithm | Description |
|---|---|
v1 |
Pure web scraping (no dependencies, slower) |
v2 |
Invidious API backend (fast, default) |
sYT.sh -p fzf
sYT.sh -p dmenu
sYT.sh -p bemenusYT.sh -a v1
sYT.sh -a v2sYT.sh -d true -p fzf
sYT.sh -d true -p fzf -ml trueOptions:
| Flag | Description |
|---|---|
-p |
menu provider |
-d |
download instead of play |
-ml |
multi-download |
Single link:
sYT.sh -fl "https://youtube.com/abcdef" -p fzfMultiple links:
sYT.sh -flm "url1 url2" -p fzfdmenu / bemenu prompt mode:
sYT.sh -p dmenu -dl trueMerge audio + video:
sYT.sh -d true -mav truesYT.sh -h- Depends on YouTube frontend changes
- Uses scraping + Invidious instances
- Respect YouTube terms of service
Improvements and fixes are welcome.
Small focused PRs preferred.
GPL-3.0