zarzet 34a004f96f refactor(analysis): move the pure FFmpeg builders and parsers to a service
The audio analysis card mixed FFmpeg argument builders, astats and
metadata parsers and the spectral cutoff estimator with widget state.
Move them verbatim into lib/services/audio_analysis_ffmpeg.dart so the
runner and cache can depend on them without importing a widget.

The parsers return ChannelAnalysisStats, so the two public result
models (AudioAnalysisData, ChannelAnalysisStats) move verbatim from the
widget's models part into lib/services/audio_analysis_models.dart. The
per-run private records stay in the part for now.

Only two names change: the unsupported-codec exception loses its
leading underscore because the widget and the future runner live in
different libraries, and the in-class _parseChannelStats becomes the
top-level parseChannelStats. The widget re-exports both service files,
so tests and importers are unchanged.
2026-10-19 00:59:24 +07:00
2026-10-17 16:18:41 +07:00
2026-04-04 13:27:33 +02:00
2026-04-04 13:27:33 +02:00
2026-04-04 13:27:33 +02:00
2026-04-04 13:27:33 +02:00

Download the latest release Help translate on Crowdin

Telegram channel Telegram community

Screenshots

SpotiFLAC Mobile screens: Home, Library, Now Playing and Equalizer

Features


Built-in player

Full-screen cover art, a detailed audio quality label, queue controls and a sleep timer. AutoMix blends tracks with its own beat detection, and home screen widgets on Android and iOS follow your wallpaper colors.


Hi-res output

USB bit-perfect playback on Android 14 and later, AAudio exclusive mode for DAPs at each track's original rate, and a direct USB driver with native DSD on compatible DACs.


Equalizer and loudness

A multiband equalizer with presets (beta), volume normalization, and ReplayGain scanning based on EBU R128 for single tracks or whole selections.


Lyrics

Synced lyrics with word-by-word timing, optional translation and romanization lines, and a reorderable chain of lyrics providers, including SpotiFLAC-Mobile Lyrics. Files without lyrics can search online from the player. Pick up to five lines and share them as a card.


Local library

Scan your music folders and browse songs, albums, artists and playlists. Review duplicates, edit metadata and export collections as M3U8.


Network storage

Play music from SMB, WebDAV and HTTP / HTTPS servers. HTTPS connections can trust a single approved certificate fingerprint.


Made for you

Rewind recaps your listening, personalized autoplay learns on your device, music haptics let you feel the beat, and artist pages show upcoming concerts.


Your look

Material 3 Expressive or the Mornye theme, Dynamic Color, an AMOLED mode, Material Symbols and layouts for tablets and large screens.


Extensions

Add metadata and lyrics sources from community extension repositories, then choose their priority. Building one? See the extension documentation.


Yours to keep

Back up and restore settings, history and playlists. The app is open source, available in 20 languages, and offers an AltStore / SideStore source on iOS.


Development

SpotiFLAC Mobile combines a Flutter/Dart UI, a Rust backend from rust_backend/, and thin Android/iOS platform bridges.

See the Contributing Guide for setup, Android and iOS builds, Full/Lite variants, crash symbols, validation, and pull request guidelines.


SpotiFLAC (Desktop)

Download music in true lossless FLAC from extension-provided sources on Windows, macOS & Linux.

SpotiFLAC (Python Module)

Python library for SpotiFLAC integration, maintained by @BartolomeoRusso9.


FAQ

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

SpotiFLAC Mobile uses a decentralized extension repository system. Extensions are hosted independently rather than on a built-in server, so anyone can create and host a compatible repository. In the Repo tab, tap Add Repository and enter a GitHub repository URL that contains a registry.json file to browse and install its extensions.

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

The track may not be available from your enabled providers. Under Settings > Extensions > Provider Priority, reorder providers and choose which download extensions may be used as a fallback; the app tries them from top to bottom. You can also install more download extensions from the Repo tab.

Why are some tracks downloading in lower quality?

Quality depends on what is available from the source and the installed download extension. Pick your preferred service and quality under Settings > Download, and check each extension's quality options and service notes in the app.

Can I download whole albums and playlists?

Yes. Paste an album or playlist link into the search bar on Home and the app fetches every track and queues it. An artist link opens the artist page, where Download Discography queues their releases. To bring in a list from elsewhere, tap the search bar and use the import button to load a CSV or M3U playlist file.

Can I play music I already have?

Yes. Add your music folders under Settings > Local Library. The app scans them, merges them with your downloads in the Library tab, and plays everything in the built-in player. It can also point out duplicates.

Can I play music from my NAS or home server?

Yes. Open Settings > Network storage and connect to an SMB, WebDAV or HTTP / HTTPS server, then browse its folders and play from it. Sign-in details are stored securely on your device.

Why doesn't the equalizer change the sound?

Bit-perfect, Direct USB and exclusive Hi-Res outputs bypass the equalizer so the audio reaches your DAC untouched. Turn bit-perfect output off to use the equalizer. External players also apply their own effects instead. The equalizer lives in Settings > Playback and in the Now Playing menu.

How do I get bit-perfect playback on a USB DAC?

Turn on Hi-res and bit-perfect audio under Settings > Playback, then choose the direct USB driver or AAudio exclusive mode. Without either, Android USB output needs Android 14 or later. Direct USB can be much louder than normal playback and the phone's volume buttons may not control it, so lower your DAC or amplifier volume before you press play.

Where do the lyrics come from?

From the providers in Settings > Lyrics > Lyrics Provider Priority, tried top to bottom until one has the song. By default that is Apple Music (through Paxsenix), lrc.red, SpotiFLAC-Mobile Lyrics, LyricsPlus and LRCLIB; you can reorder them or turn on others. Lyrics already in a file always come first. If a file has none, tap Search online on the player's lyrics page.

Where are my listening statistics stored?

Only on your device. Listening statistics and Rewind record plays from the built-in player; pauses, buffering and seeking add no listening time, and a play counts after 30 seconds.

Which download folder should I choose?

On Android, App Folder saves to Music/SpotiFLAC by default. You can instead pick any folder with the system folder picker. If Android later revokes access to that folder, select it again under Settings > Files & Folders.

Is this app safe?

SpotiFLAC Mobile is open source, so its code and build workflows can be inspected directly in this repository.

Why is downloading not working in my country?

Some countries have restricted access to certain streaming service APIs. If downloads are failing, try a VPN to connect through a different region. For the Home feed only, Settings > Extensions > Home feed country shows another country's recommendations without a VPN.

Can I add SpotiFLAC Mobile to AltStore or SideStore?

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

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

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

Note

If SpotiFLAC Mobile 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

Paxsenix  ·  lrc.red  ·  LyricsPlus  ·  LRCLib  ·  BetterLyrics  ·  Deezer  ·  MusicBrainz  ·  Song.link  ·  UniTune  ·  Squigly


Disclaimer

This repository and its contents are provided strictly for educational and research purposes. The software is provided "as-is" without warranty of any kind, express or implied, as stated in the MIT License.

  • No copyrighted content is hosted, stored, mirrored, or distributed by this repository.
  • Users must ensure that their use of this software is properly authorized and complies with all applicable laws, regulations, and third-party terms of service.
  • This software is provided free of charge by the maintainer. If you paid a third party for access to this software in its original form from this repository, you may have been misled or scammed. Any redistribution or commercial use by third parties must comply with the terms of the repository license. No affiliation, endorsement, or support by the maintainer is implied unless explicitly stated in writing.
  • SpotiFLAC Mobile is an independent project. It is not affiliated with, endorsed by, or connected to any other project or version on other platforms that may share a similar name. The maintainer of this repository has no control over or responsibility for third-party projects.
  • The author(s) disclaim all liability for any direct, indirect, incidental, or consequential damages arising from the use or misuse of this software. Users assume all risk associated with its use.
  • If you are a copyright holder or authorized representative and believe this repository infringes upon your rights, please contact the maintainer with sufficient detail (including relevant URLs and proof of ownership). The matter will be promptly investigated and appropriate action will be taken, which may include removal of the referenced material.

Tip

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

Languages
Dart 71%
Rust 19.3%
Kotlin 7.2%
Swift 1.1%
JavaScript 0.5%
Other 0.8%