Wavekeep was previously called Deezy. Updating keeps your settings, download history, themes and saved logins (the startup warning shows once more); see Upgrading from Deezy.
A modern desktop Deezer and Spotify downloader. Search for tracks, albums, artists, and playlists, paste music URLs for direct download, and save audio with full metadata and cover art.
This tool is for educational and personal use only. By using Wavekeep, you acknowledge and agree to the following:
- Deezer Account Required – You need a Deezer account (Free or Premium) for the Deezer source. The ARL token is tied to your account.
- Free accounts are limited to MP3 128 kbps downloads
- Premium accounts can download MP3 320 kbps or FLAC
- The Spotify source needs its own Spotify account and uses a browser OAuth login; it does not need an ARL. Wavekeep does not check the account type. Premium is recommended: it is the account type librespot is built for, and the 320 kbps and lossless FLAC options depend on what Spotify offers per track and account. Whether Spotify serves audio to Free accounts is not guaranteed and has not been verified for this build; if a download fails, the diagnostic log (see Reporting a problem) shows the step that was refused. Quality is limited to the formats Spotify returns for each track, and the best match for the selected setting is used.
- A custom Spotify Client ID (Development-mode app) may have its own restrictions on Spotify's side, such as limited user access or a Premium requirement for the app owner; these are Spotify's rules and are not enforced or checked by Wavekeep.
- Terms of Service – Downloading music may violate the Deezer or Spotify terms of service. Use at your own risk.
- Account Blocking Risk – Your account may get suspended. Deezer and Spotify can detect unusual download activity.
- Copyright Laws – Respect copyright laws in your jurisdiction. Downloaded content is for personal use only and must not be redistributed.
- No Warranty – This software is provided "as is". The authors are not responsible for any misuse or legal consequences.
By using this software, you accept full responsibility for your actions.
- Search – Find tracks, albums, artists, and playlists on Deezer or Spotify with debounced search
- Spotify source – Download through librespot with full metadata and cover art; at each bitrate OGG Vorbis is preferred over MP3; FLAC is only requested for the Lossless setting, and if a track has none of the usual formats, whatever Spotify offers (such as AAC) is used
- URL download – Paste full
deezer.comoropen.spotify.comtrack, album, artist, or playlist URLs to add their content to the queue - Audio preview – Play 30-second Deezer previews before downloading
- Smart queue – 1 to 10 simultaneous downloads (3 by default) with drag-and-drop reordering, pause/resume, and retry
- Your library – Open your Loved Tracks and your own playlists, including private ones, next to the search tabs
- Album & playlist download – Download all tracks with one click, or open an album or playlist to pick individual tracks
- Skip existing files – Tracks whose audio file is already at the destination are skipped, even after clearing history
- Download pacing – Optional pause between downloads and a total speed limit, including presets that match playback speed
- Quality options – Deezer MP3 128, MP3 320, or FLAC; Spotify 96/160/320 kbps or lossless FLAC, with format fallback
- Full metadata – Title, artist, album, year, track and disc number, and cover art embedded; Deezer downloads also fill the album-artist tag (with the track's main artist), which Spotify downloads do not
- Folder structure – Organize downloads as Flat, Artist/Track, Artist/Album/Track, Album/Track, or with a custom template
- Tag editor – Edit metadata and cover art on any local MP3, FLAC, OGG, or M4A file (including Spotify downloads); files with an unreadable tag are reported and left untouched instead of being overwritten
- Download history – Persistent history with CSV/JSON export and open-in-file-manager
- Themes – Light, Dark, System, and fully custom JSON themes
- Internationalization – English, Spanish, French, German, Portuguese, and Italian
- Info & FAQ – A warning about terms of service, account risk and credentials appears at startup (with a "Don't show this again" option), and the Info & FAQ button in the sidebar reopens it with a short FAQ and buttons to copy or open the local diagnostic log for bug reports, in all six languages
- Keyboard shortcuts – (Cmd instead of Ctrl on macOS) Ctrl+F, Ctrl+1/2/3, Ctrl+, (Settings), Ctrl+H (minimize to tray; on macOS the system Cmd+H hides the app instead), Esc (clear search / go back), Space, Shift+? and more
- System tray – Minimize to tray with download status and quick controls; closing the window hides it to the tray by default (turn off Close to tray in Settings to quit instead)
- Manual updates – Install Windows releases from GitHub or rebuild from source on macOS and Linux
- Secure credentials – ARL replacements are authenticated before storage, normally kept in the OS credential store, and redacted from
settings.json; when secure storage is unavailable, a clearly indicated fallback keeps the ARL in plain text insettings.json(owner-only permissions on macOS and Linux)
These docs describe the current source. Changes under Unreleased may not yet be included in the latest installer.
Your settings, download history, custom themes, saved Deezer and Spotify logins, and downloaded music all carry over. The first time Wavekeep starts, it moves them from Deezy's data folder and credential entries (com.pierr.deezy) to its own (com.pierr.wavekeep).
.msiinstaller: upgrades the existing Deezy installation in place..exeinstaller: installs Wavekeep next to Deezy, because it is keyed on the app name. Start Wavekeep once before you uninstall Deezy, so your data has been moved; after that, uninstalling Deezy is safe. If you uninstall Deezy first and tick "Delete the application data", its uninstaller deletes your settings, history and themes before Wavekeep can move them. Your music files are not affected either way.- Once moved, the data belongs to Wavekeep: the old Deezy app starts with default settings and no saved logins.
Download the latest installer from the Releases page:
.exe(NSIS installer) — recommended.msi(MSI package)
No pre-built binaries are available yet. Install the Tauri prerequisites for your operating system, plus Bun, Node.js with npm (the Tauri build runs npm run build), and the stable Rust toolchain, then build from source:
git clone https://github.com/PierrunoYT/Wavekeep.git
cd Wavekeep/deezy
bun install --frozen-lockfile
bun run tauri buildInstall the output from src-tauri/target/release/bundle/ (.dmg on macOS, .deb / .rpm / .AppImage on Linux).
Update note: Wavekeep does not currently include an automatic updater. Pull the latest source, run
bun install --frozen-lockfile, and runbun run tauri buildagain to update a source-built installation.
Amp automatically runs the executable .agents/setup script when creating a fresh orb. It installs the Linux packages and toolchains required by Tauri (including Node.js 22 with npm when no Node 20+ is present, since Tauri runs npm run dev/npm run build), installs the locked frontend dependencies, and fetches the Rust dependencies. On resume, .agents/resume verifies that the toolchains and frontend dependencies are ready; Wavekeep has no background services to restart.
- Log into deezer.com
- Open DevTools (
F12) → Application (Chrome) or Storage (Firefox) → Cookies →https://www.deezer.com - Copy the complete value of the
arlcookie
Treat the ARL like a password. Wavekeep normally stores it in Windows Credential Manager, macOS Keychain, or Linux Secret Service and excludes it from
settings.json. If secure storage is unavailable or cannot be read (for example, no running Secret Service on Linux), Wavekeep can use a clearly indicated fallback that keeps the ARL in plain text insettings.json(restricted to your user on macOS and Linux; on Windows only the normal per-user folder permissions apply). A replacement is authenticated before the working credential is changed. The ARL can expire or be invalidated and may need to be updated.
Open Settings → Spotify and click Connect Spotify. Complete the browser OAuth login, then select Spotify as the music source in Search. No Deezer account or ARL is required. Spotify OAuth tokens are stored separately from the ARL in the OS credential store when available.
Wavekeep normally uses librespot's shared Client ID. Because every librespot install shares its Web API quota, search can hit 429 rate limits. To avoid that, add http://127.0.0.1:5588/login as a redirect URI in your own Spotify Developer Dashboard app, paste its Client ID into Settings → Spotify Client ID, and reconnect. Your ID is used only for search and library requests; downloads still use the default ID, since Spotify rejects track metadata requests from other Client IDs. Connecting with a custom ID opens the browser login twice — approve both. Changing the saved ID while connected disconnects you, and clearing the field restores the default.
Track metadata, downloads, Loved Tracks and the tracks of a playlist or album go through the AP session independently of Web API search quotas, but search itself (and playlist search and your playlist list, which have no fallback) uses the Web API and its quota. A Pathfinder search fallback exists for rate-limited track, album, and artist searches, but Spotify currently refuses it, so a custom Client ID is the reliable fix for 429 errors.
- Setup – For Deezer, paste your ARL token and click Save & Login; for Spotify, use Connect Spotify. Choose a download folder and source-specific quality
- Search – Switch to Search (Ctrl+1), choose Deezer or Spotify, type a query, and press Enter. The Loved Tracks and My Playlists tabs list your own library
- Paste URLs – Paste a full
deezer.comoropen.spotify.comtrack, album, artist, or playlist URL to add its content to the queue - Preview – Click ▶ to preview a Deezer track; Space bar to play/pause
- Download – Click the download button on a track, or Download All on an album or playlist. Click an album or playlist title, including albums in an artist's discography, to see its tracks
- Manage Queue – Drag to reorder, pause/resume, or remove pending downloads (Ctrl+2)
- History – View completed downloads, open files in Explorer/Finder, or export history
- Customize – Change theme, language, folder structure, notifications, skipping of existing files, simultaneous downloads, download pacing, Spotify quality, and Spotify Client ID in Settings (Ctrl+3)
- Updates – Download the latest Windows installer from GitHub Releases, or pull and rebuild on macOS and Linux
- Tray – Minimize to tray (Ctrl+H, or the system Cmd+H on macOS); left-click the icon to show or hide the window
Pausing cancels the current transfer; resuming downloads the track again from the beginning. Saved interrupted downloads appear as paused after restarting. Pending queue entries are not persisted. Clearing history preserves active and queued rows and does not delete downloaded files.
Deezer album, playlist, and artist loaders follow API pagination. If a later page fails, the operation reports an error instead of silently returning an incomplete list. Spotify lists can be shorter than on Spotify itself: unavailable tracks are skipped, and an artist discography shows at most 120 releases.
Choose Custom in Settings and use a template such as:
{artist}/{release_date} - {album}/{track_number} - {title}
Supported placeholders are {artist}, {album}, {title}, {track_number}
({track}), {disc_number} ({disc}), {release_date}, and {release_year}
({year}). Template / and \ separators create directories; separators in
metadata are sanitized, so an artist such as AC/DC stays in one directory.
Open Info & FAQ in the sidebar, press Copy recent log, and paste it with a short description into a GitHub issue or the Discord server. Open log folder shows the whole file, wavekeep-debug.log in Wavekeep's logs folder (%LOCALAPPDATA%\com.pierr.wavekeep\logs on Windows, ~/Library/Logs/com.pierr.wavekeep on macOS, and ~/.local/share/com.pierr.wavekeep/logs on Linux). The system does not clean that folder up on its own.
Privacy:
- Local only. The log stays on your computer; Wavekeep never uploads it, and the app sends nothing to the developer (no analytics, telemetry or crash reports).
- Never in the log: passwords, your ARL, login tokens, and what you search for. Every line is also cleaned before it is saved: your home folder appears as
~, web addresses lose their query part, and long token-like strings become[redacted]. - Track details are your choice. By default the log includes track names, artists and file paths, which makes reports easier to follow. Turn off Track Details in Log in Settings to write
[hidden]instead. - You control it. Copy recent log copies the last 300 lines, Delete log removes the log and its rotated copy (
wavekeep-debug.old.log, created once the log passes 1 MB), and you can read the file before sharing it.
See What does Wavekeep collect or send? for everything Wavekeep stores and how to remove it.
Install the Tauri prerequisites, stable Rust, Bun, and Node.js with npm. Run all
application commands from deezy/:
bun install --frozen-lockfile
bun run tauri devBefore submitting a change:
npm test
npm run check
npm run build
cargo test --manifest-path src-tauri/Cargo.tomlSee Development guide for the module layout, state ownership, test coverage, and release checklist.
MIT – see LICENSE for details.
- FAQ – Common questions about setup, security, and legal use
- Changelog – Full version history
- Development guide – Setup, architecture, testing, and releases
- Code review – September 2026 fixes and validation limits