Skip to content

Repository files navigation

mp3fy

Turn any video link into a local audio file. Paste a link, pick a format, get an mp3 — or m4a, opus, flac, wav, or the video itself. Everything runs on your own device, over your own connection: there is no server in the middle.

Desktop app for macOS, Windows and Linux, built with SvelteKit, Tauri 2 and MoreThanUI.

The Home screen with a link ready to download

Install

Grab the file for your platform from the latest release.

Platform File Notes
macOS (Apple Silicon + Intel) mp3fy_<version>_universal.dmg Drag to Applications
Windows 10/11 mp3fy_<version>_x64-setup.exe or _x64_en-US.msi Either installer works
Linux (Debian/Ubuntu) mp3fy_<version>_amd64.deb sudo apt install ./mp3fy_*.deb
Linux (any distro) mp3fy_<version>_amd64.AppImage chmod +x then run
Linux (Fedora/RHEL) mp3fy-<version>-1.x86_64.rpm sudo dnf install ./mp3fy-*.rpm
Android 7+ mp3fy_<version>_android.apk Sideload; see below. _arm32 / _x86_64 builds exist for old phones and emulators — you almost certainly want the plain one

The bundles are not code-signed — signing needs paid Apple and Windows certificates — so both systems will warn you the first time:

  • macOS: "mp3fy is damaged" or "unidentified developer" → open Terminal and run xattr -dr com.apple.quarantine /Applications/mp3fy.app, then launch it normally. (Or right-click the app → Open → Open.)
  • Windows: SmartScreen shows "Windows protected your PC" → More infoRun anyway.
  • Linux (AppImage): builds on Ubuntu 24.04, so it needs glibc 2.39 or newer. On older distros use the .deb/.rpm, or build from source.
  • Android: it is not on Play, so download the APK on the phone and open it; Android asks once for permission to install from that source. The file is signed with the project's own key — an upgrade over a differently-signed build (e.g. one you built yourself) needs an uninstall first.

There is no iOS build. It is possible — iOS forbids running a separate process, but yt-dlp is Python and could be embedded in-process — and the blocker is distribution: Apple has no equivalent of "download the file and open it". docs/ios.md has the research.

What it downloads on first run

mp3fy fetches yt-dlp (and ffmpeg, if your system doesn't already have one) into its own app-data folder the first time you use it, and keeps yt-dlp updated from then on. Nothing is installed system-wide, and no download is proxied — yt-dlp runs locally, from your IP.

Finished files land in Downloads/mp3fy.

Using it

  • Home — paste or type a link, choose the format and quality under Options, press Get audio.
  • Convert — turn a video or audio file already on your device into another format.
  • Library — everything mp3fy has produced. Audio plays in place (with a full-screen player, playlists, shuffle and repeat); video hands off to your file manager.
  • Settings — theme (light/dark/system), app language (English/العربية, with full RTL), default format and quality, and under Developer a tools panel (what yt-dlp and ffmpeg are installed, where each came from, and the update check) plus the log viewer.

Sharing a link into mp3fy

mp3fy registers the mp3fy:// URL scheme. Open one and the app comes to the front and starts the download immediately — no pasting, no extra click:

mp3fy://https://www.youtube.com/watch?v=VIDEO_ID
mp3fy://open?url=https%3A%2F%2Fyoutu.be%2FVIDEO_ID

Links shared while another download is running queue up behind it. See docs/sharing.md for what this looks like per platform and how to wire it to a browser button or a share menu.

Build from source

Needs Node 22+, pnpm and Rust (plus Tauri's system prerequisites on Linux). make with no target lists everything.

make setup    # check tools, install dependencies
make dev      # run the desktop app with hot reload
make web      # run only the UI in a browser on :1420
make check    # type-check the frontend and the Rust backend
make build    # bundle the app for the current platform
make android  # build the APK (MODE=debug for a fast arm64 build)
make release  # tag a version and let CI build every platform

Android additionally needs a JDK 21, the Android SDK and an NDK; make android finds them and says what is missing. Unlike desktop, the Android app does not download yt-dlp — it ships inside the APK, because Android does not allow executing anything from an app's own storage; the copy in the APK ages, so the app replaces it at launch. See docs/android.md, and run make clean when you are done — a day of Android builds is over 12 GB.

Releases are cut by pushing a v* tag: GitHub Actions builds macOS, Windows and Linux bundles and attaches them to the release. See docs/releasing.md.

Privacy

No accounts, no telemetry, no server. The app talks to the site you gave it a link to, to GitHub for yt-dlp updates, and to nothing else. History, playlists and settings live in the app's own local storage; the audio lives in your Downloads folder.

Downloading media you don't have the rights to may be against a site's terms of service or your local law — that call is yours.

License

MIT. Powered by yt-dlp and ffmpeg, which carry their own licenses.

About

Turn any video link into a local audio file — desktop app (macOS, Windows, Linux) powered by yt-dlp, built with SvelteKit + Tauri

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages