# 📸 SnapRec
**SnapRec** is a lightweight screen recorder for Windows, macOS, and Linux — built in Python with a modern, dark GUI. Record your full screen, a browser window, or a custom area, with or without audio, and get YouTube-ready files in one click.
---
## ✨ Features
- 🖥 **Three recording modes**
- **Fullscreen** — record your entire primary screen
- **Browser** — pick a specific browser window (Chrome, Edge, Firefox, Brave, Opera)
- **Select area** — draw a rectangle anywhere on screen
- 🎚 **Fully configurable video**
- FPS: 15, 24, 30, or 60
- Resolution: Original up to 4K (3840×2160), plus 1440p, 1080p, 720p, 480p, 360p
- Quality: Low, Medium, High, Ultra
- 🎵 **Audio recording** (requires `sounddevice` + `soundfile`)
- Freely choose any input device (microphone, loopback, VB-Cable, etc.)
- Automatic muxing into MP4 via FFmpeg
- ▶ **YouTube preset** — one click sets 1080p @ 30 FPS, High quality, and audio on
- 📁 **Custom filenames** with placeholders: `{date}`, `{time}`, `{datetime}`, `{mode}`
- 💾 **Settings auto-saved** to `~/.snaprec_config.json`
- 🔔 **Desktop notifications** when a recording finishes
- 🌙 **Modern dark theme** — nothing unnecessary, no distractions
---
How to record
Choose a folder where the recording will be saved (click 📁 Choose)
Pick a mode:
Click Fullscreen, Browser, or Select area
For Browser: select the desired window from the dropdown
For Select area: draw a rectangle with your mouse, press Esc to cancel
(Optional) Open ⚙ Settings to fine-tune FPS, resolution, quality, audio, and filename
Click Start recording — the app minimizes itself
Click Stop recording in the SnapRec window when you're done
Find the file in the chosen folder — or click 📂 Open folder
⚙️ Settings
Setting Options Default
FPS 15 / 24 / 30 / 60 30
Resolution Original, 4K, 1440p, 1080p, 720p, 480p, 360p Original
Quality Low, Medium, High, Ultra High
Audio On / Off Off
Audio device All input devices First available
Filename template Text with {date}, {time}, {datetime}, {mode} recording_{datetime}_{mode}
Filename placeholders
Placeholder Meaning Example
{date} Today's date 20260214
{time} Current time 143052
{datetime} Date + time 20260214_143052
{mode} Recording mode fullscreen, browser, area
Example: youtube_{date}_{time}_{mode} → youtube_20260214_143052_browser.mp4
▶ YouTube Preset
Click Apply in Settings under YouTube Preset to automatically set:
FPS: 30
Resolution: 1920 × 1080
Quality: High
Audio: On
Filename: youtube_{date}_{time}_{mode}
Perfect for gameplay, tutorials, screencasts, and streams.
🔊 System Audio (Loopback)
SnapRec records input devices — not system audio directly. To capture what comes out of your speakers:
Windows: Install VB-Cable and select "CABLE Output" as input
macOS: Use BlackHole or Loopback
Linux: Use PulseAudio's monitor source (typically pick Monitor of ... in the device list)
🛠 Troubleshooting
Problem Solution
"No browser windows found" Make sure the browser is open and not minimized. Install pygetwindow if missing.
No audio in video Verify FFmpeg is installed and in PATH. Run ffmpeg -version in your terminal.
Video stutters Lower FPS or resolution. Recording 4K @ 60 FPS requires powerful hardware.
Huge file size Set Quality to Medium or Low, or use a lower resolution.
GUI scaling looks off (Windows) SnapRec automatically sets DPI awareness — make sure you're on the latest version.
Recording is black Some games and DRM-protected apps can't be captured via mss. Try another mode.
📋 Files & Data
Config file: ~/.snaprec_config.json — created automatically
Temporary audio files: .tmp_audio_<timestamp>.wav in the chosen folder, deleted after muxing
Output format: MP4 (H.264 / mp4v codec)