SpotiFLAC Mobile v4.8.5
Requirements: 7.0+
Overview: music in FLAC format without quality loss from Deezer, Tidal, Qobuz, and Amazon Music.
Mobile music utility built with Flutter and Go. High-quality audio management for your personal library. No ads, no subscription.
✓ High-quality sound selection
✓ Ability to download entire albums
✓ Ability to create playlists
✓ Many settings
✓ Embedding lyrics in FLAC files
✨Features
Everything you need to build a high-quality music library on your phone.
True Lossless FLAC
Download in up to 24-bit/192kHz quality. No transcoding, no quality loss. Pure studio-grade audio files.
Multiple Providers
Download from Tidal, Qobuz, Deezer, and more via extensions. Automatic fallback if a source is unavailable.
Extensions
Community-built extensions add new music sources and features. Install from the built-in Store with one tap.
Search by Link or Name
Paste a Spotify, Tidal, Qobuz, or Deezer link. Or just search by song name — it handles the rest.
Batch & Playlist Download
Download entire albums and playlists at once. Smart queue management with concurrent downloads.
Rich Metadata
Full metadata embedding — album art, lyrics, genre, label, copyright, and more. All embedded in the FLAC file.
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
Open the “Repo” (Store) tab in the app
Enter https://github.com/zarzet/SpotiFLAC-Extension/tree/main/extensions into the “Repository URL” and press on “Add Repository” button
Browse and install extensions with one tap
Or download a .spotiflac-ext file by clicking on it and pressing on “Raw” button and install manually via “Settings” tab > “Extensions”
Enable extensions under “Settings” tab > “Extensions” > “Installed Extensions”
Configure extension settings if needed
Set provider priority under “Settings” tab > “Extensions” > “Provider Priority”
Developing Extensions
ℹ️ Note
Want to build your own extension? Extension Development Guide has everything you need.
➡ Untouched apk with Original Hash Signature
➡ Certificate MD5 digest: e316523c63417a22727c732c524df0a8
➡ No changes were applied
➡ CPU architectures: arm64-v8a, armeabi-v7a
➡ Screen DPIs: 160dpi, 240dpi, 320dpi, 480dpi, 640dpi
What’s New:
New Features
● settings: Reveal nested search results
● settings: Search nested options
● metadata: Show current cover dimensions
● metadata: Add embedded cover resize options
● navigation: Add go to album actions
● player: Polish actions and synced lyrics
● settings: Polish search and navigation layout
● settings: Add searchable settings index
● collections: Unify selection-aware screens
● l10n: Localize settings search
● details: Add adaptive cover palettes
● theme: Add shared design tokens
● album: Batch download selected tracks
● metadata: Choose extension for online autofill
● library: Add quality label display modes
● library: Highlight high-bitrate quality badges
● library: Show a trailing fade on the filter chips row
● library: Playlists filter view and configurable default view
● player: Animate track changes and open queue with a swipe up
● tutorial: Fit pages on short viewports and fix page indicator visibility
● setup: Make language list scrollability obvious and center step content
● tablet: Cap wide-layout margins at 80dp so content uses the screen
● appearance: Manual toggle to force backdrop blur on lower device tiers
● queue: Long-press menu with move up/down for queued items
● metadata: Show average bitrate for lossless files in the track screen
● library: Add missing-ISRC metadata filter
● android: Home-screen download queue widget
● metadata: Manual MusicBrainz lookup in the tag editor
● player: Add repeat off/all/one modes
● queue: Offer one-tap retry when connectivity returns
● ux: Unify added-to-queue snackbars and add fetch retry
● library: ISRC duplicate detection beyond FLAC with review sheet
● track: Add Open on… platform links sheet
● l10n: Merge Crowdin updates, enable Korean at 98%
● library: M3U8 playlist import and export
● library: M3U8 playlist import and export
● player: Restore playback session after process death
● queue: Add download-next action on queued items
● extensions: Verify decentralized package integrity
● audio: Use VHQ settings for SoXR resampling
Bug Fixes
● ci: Align APK targets with supported ABIs
● search: Expose go to album for sparse tracks
● database: Make playback session migration idempotent
● metadata: Keep header details legible in light theme
● player: Refresh lyrics after automatic track changes
● metadata: Preserve WAV and AIFF tags
● analysis: Guard unsupported AC-4 codec
● lyrics: Reject empty embedded payloads
● metadata: Support extension custom search
● analysis: Detect full-band spectral cutoff
● ui: Refine track action spacing
● ui: Align track play button hitboxes
● player: Restore lyrics after cold start
● session: Enforce provider retry modes
● session: Block challenged session generations
● session: Honor canonical gateway error contracts
● session: Coordinate verification across parallel downloads
● selection: Keep modal sheets above selection bar
● player: Restore playback position reliably
● download: Make picker drag dismissal natural
● player: Preserve audio quality across track changes
● a11y: Improve compact control readability
● android: Stop forcing display mode at startup
● download: Suffix only colliding quality variants
● metadata: Fetch maximum cover for online autofill
● metadata: Verify maximum cover candidates
● storage: Recover from unwritable download folders
● ui: Sanitize user-facing errors
● analysis: Detect effective spectral cutoff
● library: Retain history during active downloads
● metadata: Dismiss autofill preview and surface feedback
● album: Overlay selection bar above navbar
● metadata: Align source picker with edit sheet
● analysis: Isolate metrics from active downloads
● download: Always alert for verification pauses
● download: Reject mismatched provider tracks
● download: Honor explicitly selected provider
● extensions: Serialize verification callbacks
● library: Retain cached rows across refresh
● library: Backfill local audio bitrates
● library: Keep rows visible during refresh
● library: Persist lossless bitrate metadata
● download: Swap local track variant actions
● home: Keep search visible during provider changes
● library: Retain records when deletion fails
● download: Complete quality variants reliably
● audio: Wait for complete analyzer metrics
● library: Keep track count readable next to filter actions
● store: Center add-repository state and keep submit button above keyboard
● download: Restore fast SQL-only duplicate check so huge playlists queue again
● queue: Keep cancelled downloads retryable across every cancel path and app restarts
● queue: Give completion-bridge cells swipe navigation into the library list
● extensions: Anchor URL handler patterns to the host
● extensions: Enforce minAppVersion and requiredRuntimeFeatures on load
● extensions: Isolate invalid registry checksums
● reenrich: Preserve release identity in batch actions
● verification: Recover signed-session bootstrap failures
● reenrich: Allow correcting stale release metadata
● download: Avoid unsafe automatic range resume
● config: Refresh announcements and remote content
● ci: Download pinned Gradle for native tests
● ci: Install Android 37 platform package
Performance
● metadata: Avoid SAF copies during quality probes
● android: Skip unused download widget work
● ui: Scope scan rebuilds, aspect-bound MediaQuery, lazy duplicate list
● history: Coalesce index bumps and batch per-row exists lookups
● metadata: Cache MusicBrainz ISRC lookups in the finalize path
● go: Cut redundant signed-session writes, progress-callback churn, tombstone growth
● assets: Instance GoogleSansFlex to the wght axis only
Refactoring
● ui: Standardize error and empty states
● extensions: Share extension rows
● settings: Unify settings components
● selection: Share bottom bar behavior
● library: Unify track cards
● ui: Standardize modal sheets
● ui: Unify sliver page headers
● metadata: Split cover cache, display helpers, and options menu into part files
● extensions: Split manifest models and provider-priority logic into part files
● library: Split row models and queue union SQL into part files
● analysis: Split models, info card, and spectrogram into part files
● android: Split replaygain journal, snapshots, and network policy out of DownloadService
● android: Split media, ffmpeg, and SAF publish helpers out of NativeDownloadFinalizer
● go: Split per-format scanners and incremental scan out of library_scan.go
● go: Split result/overlay helpers and output builders out of extension_fallback.go
● go: Split deezer models, cache upkeep, and browse endpoints out of deezer.go
● go: Split lyrics provider config, LRC codec, and search matching out of lyrics.go
● queue: Fold duplicated final-embed blocks into one helper
● queue: Decompose single-item god-method into _DownloadRun pipeline class
● queue: Move single-item download pipeline into a part file
● android: Split SAF scan and URI IO helpers out of MainActivity
● artist: Split section builders and dialogs into a part file
● go: Split package validation and VM lifecycle out of extension_manager.go
● history: Split models and startup maintenance into part files
● home: Split explore, recent, import, and search-results into part files
● queue: Split progress, verification, and connectivity into part files
● go: Split Ogg parsing and cover-art extraction out of audio_metadata.go
● go: Split M4A/MP4 tagging out of metadata.go
● Consolidate lyrics builders, cancel registries, and priority plumbing
● go: Consolidate duplicated track maps, selectors, and small helpers
● dart: Consolidate duplicated lookup, filename, and search-provider helpers
● ffmpeg: Remove dead conversion cluster and speculative decryption fields
● library: Drop unwired DB pagination providers
● Remove orphaned bridge, database, and queue helpers
● bridge: Remove dead cross-layer platform bridge methods
● ios: Isolate and test extension callbacks
● android: Extract native finalization policies
● dart: Extract queue search and media policies
Documentation
● release: Add 4.8.5 changelog
● extensions: Document the .sflx package suffix
● extensions: Document file download recovery options
● extensions: Add current development guide
Styling
● settings: Restore connected group layout
● dart: Apply repository formatting
● go: Apply Go 1.26 formatting
Testing
● ui: Cover search and player action consistency
● ui: Cover shared design system contracts
● go: Close output handle before cleanup
Dependencies
● deps: Update Flutter and Go dependencies
● deps: Update FFmpeg and notifications
Chores
● Update AltStore source to v4.8.0 by @github-actions[bot]
● release: Bump version to 4.8.5
● repo: Improve contributor experience
● release: Bump version to 4.8.1
● analysis: Enable unreachable_from_main lint
● about: Credit blackgold8282 (Korean) and BrandQc (French) as translators
● altstore: Describe extension-based providers instead of Amazon
This app has no advertisements
More Info:https://spotiflac.zarz.moe
https://github.com/zarzet/SpotiFLAC-Mobile
Download Instructions:
armeabi-v7a:
https://ouo.io/YX1naU
Mirrors:
https://ouo.io/2BvA3V
https://ouo.io/WgJgRf
arm64-v8a:
https://ouo.io/AEr3gi
Mirrors:
https://ouo.io/Qf8fUs
https://ouo.io/13tGCy
