A desktop app for macOS that grabs audio from the web: paste a URL or upload an MP4 file, optionally trim and adjust speed, and save as MP3. No browser, no extra installs — everything is bundled.
Experimental. This app was built exclusively using Cursor.
- Download audio/video from supported video and audio hosting sites, or upload an MP4 file
- Convert to MP3 format
- Trim audio by specifying start and end times (in HH:MM:SS format)
- Adjust playback speed (0.25x to 2x)
- Clean, minimal dark-themed UI
- Native macOS app — no browser needed
- Node.js (v16 or higher) — only needed if you want to develop or build the app locally. End users who install the built
.dmgdo not need Node, FFmpeg, or any other tools; everything is bundled.
- Install dependencies:
npm install- For development, run:
npm run devThis will start the Vite dev server and launch the Electron app.
To build a distributable macOS app:
npm run build
npm run build:electronThe build step will automatically download the yt-dlp binary (via prebuild → npm run download-yt-dlp) if it is not already in bin/yt-dlp. FFmpeg is provided by the ffmpeg-static dependency — no system install needed.
This will create a .dmg file (e.g. in dist/) that you can install on your Mac. The packaged app is self-contained: no Node, FFmpeg, or yt-dlp installation required for end users.
Before building or committing, the project runs:
- ESLint — TypeScript/JavaScript linting (rules in
eslint.config.mjs) - Prettier — Formatting (tabs, quotes, etc. in
.prettierrc)
Scripts:
npm run lint— Run ESLint (fails on errors or warnings with--max-warnings 0)npm run lint:fix— Run ESLint with auto-fixnpm run format— Format code with Prettiernpm run format:check— Check formatting without writingnpm run check— Run both lint and format check
Pre-commit: Husky runs lint-staged on every git commit, so only staged files are linted and formatted. To skip hooks (e.g. WIP commits), use git commit --no-verify.
Build: npm run build runs npm run lint first; the build fails if lint fails.
- Launch the app (either via
npm run devfor development or the built app) - Enter a video or audio URL, or upload an MP4 file
- Optionally specify:
- A custom title for the output file
- Start and end times in HH:MM:SS format to trim the audio
- Playback speed (0.25x to 2x)
- Click "Download MP3"
- The file will be automatically downloaded when processing is complete
- The app uses
yt-dlpto download audio/video from various platforms ffmpegis used to convert and trim the audio to MP3 format- Files are temporarily stored during processing and automatically cleaned up
- Built with Electron for native macOS integration
- React + Vite for a modern, fast UI
npm run dev— Start Vite dev server and launch Electron (hot reload). On first run, ifbin/yt-dlpis missing, the app will try to download it to app userData.npm run download-yt-dlp— Download the yt-dlp binary intobin/for bundling (also runs automatically beforenpm run build).npm run build— Build the React app for production.npm run build:electron— Package the macOS app (DMG).npm start— Run the built Electron app (after building).
This software is provided for convenience only. You are responsible for ensuring your use complies with applicable laws and the terms of service of the sites you use. Only download content you have the right to download—for example, your own uploads, public domain material, or content you have explicit permission to use. The author does not encourage or endorse copyright infringement or violation of any platform's terms of service.
- Processing time depends on the video length and your internet connection; large files may take longer.
- Temporary files are stored in the app's user data directory and cleaned up after processing.
- Bundled dependencies: The built app includes FFmpeg (via
ffmpeg-static) and yt-dlp (inbin/). You do not need to install them on your system for development or for end users.