Mobile music utility built with Flutter and Go. High-quality audio management for your personal library. - open source, no ads, no subscription.
Find a file
zarzet bfb0cad603 feat: add field selection dialog for bulk re-enrich metadata
Add a bottom sheet dialog that lets users choose which metadata field
groups to update during bulk re-enrich (cover, lyrics, album/album
artist, track/disc number, date/ISRC, genre/label/copyright).

Backend (Go):
- Filter FLAC Metadata struct and FFmpeg metadata map by selected
  update_fields so non-selected groups preserve existing file values
- Guard Deezer extended metadata fetch with shouldUpdateField(extra)
- Title/Artist are never overwritten by re-enrich (search keys only)
- enrichedMeta response only includes selected field groups

Frontend (Dart):
- New re_enrich_field_dialog.dart bottom sheet with checkboxes
- FFmpegService embed methods gain preserveMetadata param that uses
  -map_metadata 0 instead of -1 to preserve non-selected tags
- Hide selection overlay/bar before showing dialog, restore on cancel
- Fix setState-after-dispose guard in cancel branches

Cleanup:
- Remove dead code in library_tracks_folder_screen.dart
- Fix use_build_context_synchronously in main_shell.dart
- Suppress false-positive use_null_aware_elements lints
- Update l10n label from 'Title, Artist, Album' to 'Album, Album Artist'
2026-04-13 23:32:13 +07:00
.github fix: prefer local file for cover/lyrics save and update build dependencies 2026-04-13 23:32:13 +07:00
android fix: prefer local file for cover/lyrics save and update build dependencies 2026-04-13 23:32:13 +07:00
assets/images Center the images 2026-04-04 13:27:33 +02:00
go_backend feat: add field selection dialog for bulk re-enrich metadata 2026-04-13 23:32:13 +07:00
ios fix: prefer local file for cover/lyrics save and update build dependencies 2026-04-13 23:32:13 +07:00
lib feat: add field selection dialog for bulk re-enrich metadata 2026-04-13 23:32:13 +07:00
scripts Initial commit: SpotiFLAC Android/iOS app 2026-01-01 19:28:15 +07:00
site feat: move Amazon Music to extension, fix Deezer download timeout 2026-03-08 04:15:28 +07:00
.fvmrc fix: prefer local file for cover/lyrics save and update build dependencies 2026-04-13 23:32:13 +07:00
.gitattributes feat: add multi-select share and batch convert in downloaded/local album screens 2026-02-18 18:05:48 +07:00
.gitignore fix(i18n): localize hardcoded strings in bulk playlist download and fix trailing newlines 2026-03-16 20:35:57 +07:00
analysis_options.yaml refactor: enable strict analysis options and fix type safety across codebase 2026-03-27 19:28:42 +07:00
AndroidManifest.xml chore: rebuild dev history without streaming-era commits 2026-02-27 13:48:44 +07:00
apps.json chore: update AltStore source to v4.2.2 2026-04-06 07:38:35 +00:00
CHANGELOG.md fix: delay iOS folder picker after sheet dismiss and update Afkar hosts 2026-03-16 20:35:59 +07:00
cliff.toml feat: add Deezer entry in provider priority UI and improve release changelog 2026-03-12 02:51:37 +07:00
CODE_OF_CONDUCT.md docs: add code of conduct and contributing guidelines 2026-01-19 18:58:25 +07:00
CONTRIBUTING.md Update CONTRIBUTING.md 2026-03-16 20:35:57 +07:00
crowdin.yml v3.1.1: Lyrics caching, duration matching, Deezer cover upgrade, live extension search, Russian language, fix race conditions and scroll exceptions 2026-01-18 03:15:20 +07:00
devtools_options.yaml perf: optimize state management, add HTTPS validation, improve UI performance 2026-01-03 00:46:34 +07:00
icon.png Center the images 2026-04-04 13:27:33 +02:00
icon_android.png Center the images 2026-04-04 13:27:33 +02:00
icon_foreground_android.png Center the images 2026-04-04 13:27:33 +02:00
l10n.yaml feat: add multilanguage support (i18n) for English and Indonesian 2026-01-16 05:50:11 +07:00
LICENSE v1.1.1: UI fixes, MIT license, history persistence improvements 2026-01-01 22:29:40 +07:00
logo.svg Center the images 2026-04-04 13:27:33 +02:00
pubspec.lock fix: prefer local file for cover/lyrics save and update build dependencies 2026-04-13 23:32:13 +07:00
pubspec.yaml chore: bump version to 4.1.3 (build 120) 2026-04-13 23:32:13 +07:00
README.md Revert "docs: move badges below screenshots in README" 2026-03-27 03:56:57 +07:00
renovate.json chore: add Renovate config targeting dev branch with automerge 2026-02-07 14:35:37 +07:00

GitHub Release VirusTotal Crowdin

Telegram Channel Telegram Community

Screenshots


Extensions

Extensions let the community add new music sources and features without waiting for app updates. When a streaming service API changes or a new source becomes available, extensions can be updated independently.

Installing Extensions

  1. Open the Store tab in the app
  2. On first launch, enter an Extension Repository URL when prompted
  3. Browse and install extensions with one tap
  4. Or download a .spotiflac-ext file and install manually via Settings > Extensions
  5. Configure extension settings if needed
  6. Set provider priority under Settings > Extensions > Provider Priority

Developing Extensions

Note

Want to build your own extension? The Extension Development Guide has everything you need.


SpotiFLAC (Desktop)

Download music in true lossless FLAC from Tidal, Qobuz & Amazon Music available for Windows, macOS & Linux.

SpotiFLAC (Python Module)

Python library for SpotiFLAC integration, maintained by @ShuShuzinhuu.


FAQ

Why does the Store tab ask me to enter a URL?

Starting from version 3.8.0, SpotiFLAC uses a decentralized extension repository system extensions are hosted on GitHub repositories rather than a built-in server, so anyone can create and host their own. Enter a repository URL in the Store tab to browse and install extensions.

Why is my download failing with "Song not found"?

The track may not be available on the streaming services. Try enabling more providers under Settings > Download > Provider Priority, or install additional extensions like Amazon Music from the Store.

Why are some tracks downloading in lower quality?

Quality depends on what's available from the streaming service and its extensions. Built-in providers:

  • Tidal up to 24-bit/192kHz
  • Qobuz up to 24-bit/192kHz
  • Deezer up to 16-bit/44.1kHz
Can I download playlists?

Yes! Just paste the playlist URL in the search bar. The app will fetch all tracks and queue them for download.

Why do I need to grant storage permission?

The app needs permission to save downloaded files to your device. On Android 13+, you may need to grant All files access under Settings > Apps > SpotiFLAC > Permissions.

Is this app safe?

Yes SpotiFLAC is open source and you can verify the code yourself. Each release is also scanned with VirusTotal (see badge above).

Why is downloading not working in my country?

Some countries have restricted access to certain streaming service APIs. If downloads are failing, try using a VPN to connect through a different region.

Can I add SpotiFLAC to AltStore or SideStore?

Yes! Add the official source to receive updates directly within the app. Copy this link:

https://raw.githubusercontent.com/zarzet/SpotiFLAC-Mobile/refs/heads/main/apps.json

In AltStore/SideStore, go to Browse > Sources, tap +, and paste the link.

Note

If SpotiFLAC is useful to you, consider supporting development:

Ko-fi


Contributors

Thanks to everyone who has contributed to SpotiFLAC Mobile!

We also appreciate everyone who helped with translations on Crowdin, reported bugs, suggested features, and spread the word.

Interested in contributing? Check out the Contributing Guide to get started!


API Credits

hifi-api music.binimum.org qqdl.site squid.wtf spotisaver.net
dabmusic.xyz AfkarXYZ LRCLib Paxsenix Cobalt
qwkuns.me SpotubeDL Song.link IDHS

Tip

Star the repo to get notified about all new releases directly from GitHub.