A tiny, beautiful macOS app that downloads YouTube and Instagram videos.
Paste a link, pick a format, done.
- Paste & go — drop in a YouTube or Instagram link and download.
- MP4 or MP3 — best-quality video, or audio-only extraction.
- Highest quality — automatically grabs the best video + audio streams and merges them.
- Self-installing — on first launch it checks for its dependencies and, with your permission, downloads them privately into the app's own folder. No Homebrew required.
- Live progress — real-time progress bar and a "Show in Finder" shortcut when done.
- Saves to
~/Downloads— no setup, no preferences to dig through.
Open the .dmg and drag VideoGrab to your Applications folder.
On first launch, right-click the app → Open to get past Gatekeeper (the build is unsigned).
All versions are on the Releases page. Prefer to build it yourself? See Build from source below.
- macOS 13 (Ventura) or later
- Apple Silicon or Intel
VideoGrab uses two open-source tools under the hood:
| Tool | Purpose |
|---|---|
yt-dlp |
Downloads videos from YouTube and Instagram |
ffmpeg |
Converts to MP3 and merges high-quality video |
If they're already installed (e.g. via Homebrew), VideoGrab finds and uses them.
Otherwise it offers to download them on first launch into
~/Library/Application Support/VideoGrab/ — nothing is installed system-wide.
open VideoGrab.xcodeprojThen press ⌘R. The project is ad-hoc signed (Sign to Run Locally), so no
Apple Developer account is needed.
./build.sh
open VideoGrab.appThis compiles the app, generates the icon, and assembles VideoGrab.app.
VideoGrab/
├── Sources/VideoGrab/
│ ├── VideoGrab.swift # The entire app (UI + logic)
│ └── Assets.xcassets/ # App icon catalog
├── VideoGrab.xcodeproj/ # Xcode project
├── tools/
│ ├── generate_icon.swift # Core Graphics icon renderer
│ └── make_icons.sh # Builds .icns + asset catalog
├── build.sh # Command-line build script
└── VideoGrab.icns # App icon
VideoGrab is a SwiftUI front-end around yt-dlp. It launches yt-dlp as a
subprocess, parses its progress output line-by-line, and renders it in the UI.
- MP4:
bestvideo+bestaudiomerged withffmpeginto a single.mp4. - MP3: audio extracted at the highest quality.
A YouTube change occasionally breaks downloads. The fix is usually to update yt-dlp:
~/Library/Application\ Support/VideoGrab/bin/yt-dlp -U(or brew upgrade yt-dlp if you installed it with Homebrew).
- Built with SwiftUI. No third-party Swift dependencies.
yt-dlpis released under the Unlicense;ffmpegunder the LGPL/GPL.- Private or login-only Instagram content may require cookies — out of scope for this minimal version.