自行构建需要 Android Studio Hedgehog 2023.1.1 以上、JDK 17 和 Android SDK 35,且普通 checkout 构建会缺少无损中继和 Last.fm 代理;首次同步大曲库开启下载可能耗时约一小时;部分国产手机(三星、小米、一加、华为)会因省电策略杀掉后台同步,需把电池设为不受限制。

Stash
rawnaldclarkGPL-3.0活跃维护把 Spotify 和 YouTube Music 的歌单、每日推荐同步到本地,支持无损 FLAC 与 Hi-Res 离线播放的安卓音乐播放器。
Your Spotify + YouTube Music library & daily mixes. Free and open source forever.
从最新 release 下载 Stash.apk 安装;自行构建:git clone https://github.com/rawnaldclark/Stash.git && cd Stash && ./gradlew assembleDebug需要 Android 8.0 或更高版本的手机,并拥有 Spotify 和/或 YouTube Music 账号;README 未说明其他硬件或显存要求。
把 Spotify 和 YouTube Music 的歌单同步到安卓手机,可下载可流式播放
把 Spotify 和 YouTube Music 的歌单、每日推荐同步到本地,支持无损 FLAC 与 Hi-Res 离线播放的安卓音乐播放器。
核心能力
- 合并 Spotify 与 YouTube Music 的喜欢歌曲、歌单和每日推荐
- 支持下载歌单离线播放,也可选择流式播放节省空间
- 音质可选 Lossless、AAC 320 或 Opus,FLAC 最高到 Hi-Res
- 逐词高亮的同步歌词,自动获取无需配置
- 支持 Chromecast 投播、Last.fm 记录和 Listen Together 同步听歌
容易踩的坑
- v0.9.124Stash v0.9.124最新正式版2026-11-09 · 2026-11-09 16:55 UTC
Stash is half the size. Downloads pick up where they left off, with Pause and Resume. Various UI/UX and backend improvements.
What's new
- Downloads keep going on their own, and you can pause them. Songs a sync queued now download even after the sync is over: when you open Stash, when a lost connection comes back, and a couple of minutes after a sync. The download notification's button is now Pause, and tapping the notification opens Downloads. Paused stays paused, even after a restart, until you tap Resume downloads, Sync now or download something. The Downloads screen (the Downloads row on the Sync tab) says what the queue is doing, like "Waiting for Wi-Fi", "Trying again at 14:20" or "Paused: your phone is out of space", and Failed downloads has Retry all failed. Automatic downloads follow Wi-Fi only on the Sync tab. When YouTube slows Stash down or your phone runs out of space, downloads stop and wait instead of failing song after song.
- Long-press on Because you like and New from your artists. Long-press a song for Play Next, Add to Queue, Start radio, Save to playlist and Download. Long-press an album for Play, Shuffle, Play Next, Add to Queue, View Album and View Artist. A tap still plays the song or opens the album.
- Daily Discover is all fresh finds. All 40 songs are now recommendations. The 5 downloaded songs that sat at the bottom and never changed are gone. In Offline mode the card now says "Go Online for today's finds". Mixes you make yourself fill their full length too.
- Stash is half the size. The download goes from 176 MB to 94 MB, with no feature removed. The release now ships for ARM phones only, which is nearly every Android phone; Intel and AMD Chromebooks and emulators can no longer install it.
- Lossless now comes from Tidal. The shared Qobuz pool is retired, and Tidal serves FLAC and Hi-Res for everyone, with 300 lossless songs a day free and unlimited for supporters. You can still sign in with your own Qobuz subscription in Settings → Audio & Quality → Lossless sources. If you run your own Tidal server, the daily allowance and the supporter offer no longer show, since neither applies to you.
- More than one Spotify account. In Settings → Accounts → Spotify, tap Add another Spotify account to sync the playlists of up to three more accounts, such as a partner's or an old one. They're read-only: hearts still go to your main account. Each card says if its sign-in stops working, with Sign in again.
- More than one Google Drive account. The Drive card has Add another Google account, and each account gets its own card. Folders and Now Playing's signal path show which account a song belongs to, and one account's trouble, like a full Drive, never holds up another's uploads.
- Play your phone's queue on a linked browser. Now Playing's cast button is now Play on. Pick a linked browser and your queue plays there, with the phone as the remote. The remote card also shows as soon as you link a browser, instead of after a restart.
- Resume when headphones reconnect. Turn it on in Settings → Playback → Headphones, and music that paused when your headphones disconnected starts again when they're back. Thanks @aojedao.
- Word-synced lyrics from Spicy Lyrics for more songs, with the person who synced them credited in the lyrics view. Thanks @ParaliyzedEvo.
UX polish
- The Sync tab's Stop now also pauses downloads, so stopped stays stopped until you resume.
- The custom Qobuz relay field and the squid.wtf captcha are gone from Lossless sources.
- The Online/Offline sheet now has one short line under each choice instead of a paragraph.
- Settings' Support card has a small Star button beside Donate.
- The Sync tab's song count and storage card is back, counting what your mode plays.
- Use your record in mixes now sits on Daily Discover's page, and it's off unless you turned it on yourself.
- With Full art i
- v0.9.123Stash v0.9.1232026-11-03 · 2026-11-03 20:46 UTC
查看更新说明
Control the web player from your phone. A home screen widget. Data saver optimized. Saved albums fix + many more improvements.
What's new
- Control the web player from your phone. When the web player is open in a linked browser, Home and Library show a card above the mini player with what's on there. Play, pause and skip from the card, or tap it for a seek bar and the browser's volume.
- A home screen widget. Add Stash's Now playing widget from your home screen's widget list, wide or square, and resize it as you like. It shows the cover and title with play/pause and next, and a tap on the cover or title opens Now Playing. Play picks up where you left off even after Stash was closed, and Next always starts the next song playing.
- Data saver really saves data, and leaves beta. Data saver in Settings → Audio & Quality now works on mobile data and metered Wi-Fi only: songs stream in lower quality instead of FLAC, pictures are smaller, and nothing is fetched ahead. On Wi-Fi nothing changes, and downloads are never affected. The song already playing finishes as it started; the change applies from the next one.
- Library → Albums now holds your saved albums. Each album you've saved, whether in Stash, from a pasted link, on YouTube Music or on Spotify, shows there with its songs in album order, each song once. Songs that aren't on a saved album stay in Songs and Artists. Spotify sync now brings in your saved albums too (switch it off on Sync's Spotify page, under Albums). Saved albums no longer crowd Playlists or Add to playlist, and they don't show in the web player yet.
- Moods and genres in Search. Before you type, Search now shows Moods & moments and Genres as colour tiles with covers. A tile opens its playlists, and a genre's page now has Songs and Albums rows too. The keyboard waits until you tap the field, and your recent searches show then. Don't want them? Turn off Settings → Appearance → Moods & genres in Search.
- Likes reach Spotify, YouTube Music and Last.fm reliably, and leave beta. Every heart is kept until it's sent, so a like made offline or before a restart still goes through. If a song was already liked on the service, un-hearting it in Stash leaves it liked there. Each switch in Settings → Accounts & Sync now shows whether everything has gone through, and likes you make in the web player reach those services too, through the same switches on your linked phone.
- Fewer duplicate songs. After the update, Stash tidies up repeat copies of the same song once, in the background, and tells you how many it merged; plays, likes and playlist places move to the copy that stays. Pairs it isn't sure about wait for you in Settings → Library & Storage → Library Health → Possible duplicates, where you choose Merge or Not a duplicate. A song you already have is never downloaded twice: tapping Download on it says "Already on your phone."
- Fix a wrong match yourself. On the Sync tab, open the songs that couldn't be matched and tap one: a search box opens with its artist and title, showing YouTube Music's results first and then the rest of YouTube. Preview a result and tick it to use it. In Now Playing, ⋮ → Flag as Wrong Match → Find a better match now takes you straight there.
- New on Home: Because you like, and New from your artists. Because you like ‹song› picks a song you play a lot or liked lately and shows songs related to it, mostly ones you don't have yet; tap one to play the row. New from your artists shows this year's and last year's releases from the artists you play most. Both fill in once you've listened for a while, show while you're Online, and can be moved or hidden in Settings → Appearance → Home layout.
- Import a playlist file. Library → + → Import a playlist file turns an M3U, XSPF, CSV or TXT playlist into a playlist of your own, matched to songs you already have. Importing a newer copy later adds only what'
- v0.9.122Stash v0.9.1222026-10-31 · 2026-10-31 17:24 UTC
查看更新说明
Paste links from Spotify, YT, or Soundcloud. Sync & play your SoundCloud library. Sync tab OVERHAUL. Reorganize your playlists. Update Stash from the app itself. + many more improvements.
What's new
-
The Sync tab, rebuilt. A fresh install asks once how your music should arrive, with Stream everything picked, and then one sync puts your whole Spotify and YouTube Music on Home and in Library. The tab shows your newest mixes as art; Sync now and Play something new are the big buttons. Each account gets its own page with Playlists, Mixes and Liked, a search, and an In your library check per playlist. History, blocked songs, undo and the log live behind one History row.

-
SoundCloud. Connect your SoundCloud account in Settings → Accounts, or just give Stash a public profile. It syncs your likes, the playlists you made and the mixes SoundCloud makes for you, which show on Home under Made for you. Paste or share a SoundCloud track, set, mix or profile link to add it. Songs play as the exact upload you liked, never a look-alike, and a download keeps the whole recording. A song SoundCloud only lets you preview shows a Preview badge and can't be downloaded. SoundCloud songs stay on the phone: they don't go to the web player.
-
Your record, in the app. The listening record from stashfm.app now lives in Stash, built from this phone's plays and working offline, with its card on Home under Daily Discover. Bring in your Spotify history and your Last.fm scrobbles, see your top artists and songs, what's not in your Stash yet, and mixes only your years can make. Your record feeds your mixes too, and shows your own album art.

-
Paste or share a link. Share a Spotify or YouTube link to Stash, or paste one into the Library's + menu or into Search, and the playlist, album or song is added to your library, downloaded if you like. Paste it again later and Stash adds only what's new.
-
Your own playlist order. Tap Edit order above a playlist's songs and drag them where you want. The order is yours from then on: songs a sync brings in land at the bottom, and a button at the end takes you back to Spotify's, YouTube's or the album's order.
-
Stash updates itself. When a new version is out, a sheet shows what's new and how big it is; Update now downloads and installs it in one tap. Later asks again tomorrow. The first time, Android asks you to allow installs from Stash.
-
Download mode is offline again. With the switch on Download, Stash lists only the songs on your phone and never streams. Tap a song that isn't downloaded and it tells you to switch to Stream only. Stream only is unchanged.
UX polish
- The Downloads screen shows how many songs are really downloading, no longer lists songs that were never going to download, and gets Clear queue and Clear history.
- Artist pages open About with a row of the artist's photos; tap one for a full-screen viewer. The banner falls back to the artist's album covers, and the header's links are tidier.
- Full art shows the next song's cover the moment you skip, and keeps its page when Cycle album art is off.
- More of Settings and the Sync tab can now be translated on Crowdin. Thanks to @ParaliyzedEvo.
Bug fixes
- Censored versions. Songs with explicit lyrics often played their clean versions. There were three causes: Spotify syncs never read the parental advisory, so every synced song counted as clean; songs in mixes borrowed the wrong length from Last.fm, so the radio edit was asked for; and when the clean and explicit versions tied, search order decided.
-
- v0.9.121Stash v0.9.1212026-10-26 · 2026-10-26 09:53 UTC
查看更新说明
Full art: Now Playing's art fills the screen, and the album's pages turn behind the controls as the song plays.
What's new
- Full art. Now Playing's cover now fills the top of the screen, fading into the controls below. As the song plays, the art moves on to the back cover and the pages inside, drifting slowly across each one so you see all of it. Swipe across the art to turn a page yourself. Prefer the square cover? Tap the arrows button at the top of Now Playing to switch, and Now Playing remembers which way you left it.
- Make full art yours. In Settings → Appearance → Full art, choose how close the art is (zoom all the way out to see the whole cover), how fast it drifts (or stop the drift), and whether it fades into a blur of the art or a solid color.
- The title, your way. The song title now sits on the left. In Settings → Appearance → Now Playing you can put it back in the center, and choose the button beside it: the sleep timer, nothing at all, or a shortcut like Lyrics, Queue, Radio or Share.
- Discogs art is your call. Some back covers and inside pages come from Discogs, where people upload their own photos, and some of those are low quality. Turn off Settings → Appearance → Now Playing → Discogs art to see only the scans from the Cover Art Archive.
- Stash in your language. Stash now follows your phone's language, or pick one in Settings → Appearance → Language. Settings is translated into 13 languages so far, including Arabic, Chinese, French, German, Hindi, Korean, Portuguese, Russian and Spanish; the rest of the app will follow. Thanks to @ParaliyzedEvo and everyone translating on Crowdin.
UX polish
- Lyrics open smoothly over full art, and the live lyrics line sits right on the art.
- The artist and album under the song title get the full width, so long album names aren't cut short.
- Stash now fills in missing albums only for songs you've played or saved, so it does less work in the background.
Bug fixes
- After the art had cycled to the back cover, turning it over and back could leave it stuck on the back. It now always comes back to the front.
- An artist page opened without a connection stayed blank for hours, even after you were back online. It now shows a Retry button that loads the page. Thanks to @ddanialb.
- Tapping an artist from a song could open a different artist with a similar name. It now opens the right one, or tells you it couldn't find them. Thanks to @ddanialb.
Install
Download
Stash.apkbelow and open it on your Android device. If you've got a previous Stash release installed, this upgrades in place — your library, sync history, and settings are preserved.Requires: Android 8.0 (API 26) or newer.
See the README for first-time setup.
What's Changed
- Last.fm proxy: cache "not found", answer unfindable lookups itself by @rawnaldclark in https://github.com/rawnaldclark/Stash/pull/700
- Now Playing: full art, title and art settings, Discogs switch by @rawnaldclark in https://github.com/rawnaldclark/Stash/pull/701
- Fix artist pages stuck empty after a failed load, and wrong-artist resolution by @ddanialb in https://github.com/rawnaldclark/Stash/pull/698
- Add in-app language picker by @ParaliyzedEvo in https://github.com/rawnaldclark/Stash/pull/699
- Now Playing: the owner's setup as the default; artist line gets the full width by @rawnaldclark in https://github.com/rawnaldclark/Stash/pull/702
New Contributors
- @ddanialb made their first contribution in https://github.com/rawnaldclark/Stash/pull/698
Full Changelog: https://github.com/rawnaldclark/Stash/compare/v0.9.120...v0.9.121
- v0.9.120Stash v0.9.1202026-10-25 · 2026-10-25 08:55 UTC
查看更新说明
Turn the album over: Now Playing now shows the back cover and the pages inside the album.
What's new
- Flip the cover. Tap the album art on Now Playing to turn it over to the album's real back cover. While it's turned, swipe left or right to page through the inside: the booklet, the gatefold and the inner sleeve. Tap again to turn it back. Swiping to skip and double-tapping to seek work as before on the front.
- Look up close. Pinch the cover, the back or any page and it lifts off the art to fill the screen. Pinch and drag to read the small print, then tap or press back to put it down.
- Cycle album art. While Now Playing is open, the art slowly fades from the front to the back and through the inside pages, then round again. Touch the art to stay on a page. It's on for everyone; turn it off in Settings → Appearance → Cycle album art.
- Albums for every song. Songs from Last.fm playlists and mixes often came in with no album, so they had no album page and no back cover. Stash now asks Last.fm which album each one is on, and fills in only the ones that were blank.
- Your whole listening history, for the web. Settings → Library & Storage → Stash on the web can now include every play on this phone in the saved file, for Your record in the web player.
UX polish
- The art for the next song is looked up while the current one plays, so the flip is usually ready the moment it starts.
- Back covers and inside pages come from the Cover Art Archive, and from Discogs for albums the archive doesn't have. Pages from Discogs say "Data provided by Discogs" and link to the album there.
- Deluxe editions, anniversary reissues and remasters find the original album's art.
Known limitations
- Albums from smaller artists often have no back cover yet: nobody has scanned one into the Cover Art Archive or Discogs.
- Discogs doesn't say which photo is the back, so Stash picks the likeliest one. Now and then the "back" is a gatefold's inside.
Install
Download
Stash.apkbelow and open it on your Android device. If you've got a previous Stash release installed, this upgrades in place — your library, sync history, and settings are preserved.Requires: Android 8.0 (API 26) or newer.
See the README for first-time setup.
What's Changed
- Export your whole listening history for Your record on the web by @rawnaldclark in https://github.com/rawnaldclark/Stash/pull/693
- Now Playing: flip the art to the album's back and inside pages by @rawnaldclark in https://github.com/rawnaldclark/Stash/pull/696
Full Changelog: https://github.com/rawnaldclark/Stash/compare/v0.9.119...v0.9.120
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Stash (stashfm.app)
your Spotify + YouTube Music library, on your phone or browser
Download · Features · Setup · FAQ · Support
Stash grabs your Spotify and YouTube Music playlists and mirrors them on your Android phone. Download them, stream them. Hi-res when it exists.
No Stash account, no analytics, your logins stay encrypted on your phone. Free and open source, forever.
What it does
Your library, one place
- Spotify + YouTube Music together: liked songs, playlists, daily mixes
- Your listening wrapped: top songs, stats, and a recap of your month
- Got your own music in Dropbox, OneDrive or Google Drive? Connect it to stream or download it.
Download or stream
- Download your playlists or just stream them.
- Pick your quality: Lossless, AAC 320 or Opus
Sound
- Real FLAC, up to Hi-Res
- 5-band EQ, bass boost, crossfade, normalizer
- Cast to Chromecast and Nest speakers
Lyrics
- Synced lyrics that light up word by word
- Pulled automatically, no setup
Finding new stuff
- Daily Discover, Stash Mixes and radios
- Last.fm recommendations
- Share songs and mixes as links, follow your friends' mixes
Social
- Listen Together, in sync with friends
- Last.fm and ListenBrainz scrobbling
- Discord status (what you're playing, with the art)
Dark, light and pure black themes. Everything optional is off until you turn it on.
Dark
Light
Install
Easiest: grab Stash.apk from the latest release, open it, tap Install. If Android grumbles about unknown sources, allow it for your browser and try again.
Want auto-updates? Use Obtainium and add https://github.com/rawnaldclark/Stash. It'll ping you when there's a new version.
You need Android 8.0 or newer, and a Spotify and/or YouTube Music account.
git clone https://github.com/rawnaldclark/Stash.git
cd Stash
./gradlew assembleDebug
# APK lands in app/build/outputs/apk/debug/
You'll need Android Studio Hedgehog (2023.1.1) or later, JDK 17, and Android SDK 35. A build from a plain checkout skips the project's lossless relay and Last.fm proxy. CONTRIBUTING.md has the rest.
First-time setup
Open Settings, tap Spotify or YouTube Music under Accounts, tap Connect and sign in like normal. That's it. Then hit the Sync tab, pick the playlists and mixes you want, and tap Sync Now.
The first sync is the slow one (a big library with Download on can take an hour). After that it only grabs what's new. Turn on Auto-sync and forget about it.
Stash doesn't use Spotify's or YouTube's official APIs, because they don't let apps like this exist. It uses your login instead, the same way your browser does. Your login stays on your phone, encrypted, and only ever goes back to Spotify or YouTube.
- On a computer, open open.spotify.com and make sure you're logged in.
- Press F12 to open Developer Tools.
- Open the Application tab (it's Storage on Firefox). Click the
>>arrows if you don't see it. - In the left sidebar, expand Cookies → click
https://open.spotify.com. - Find the cookie named
sp_dc, double-click its value and copy it. - In Stash: Settings → Spotify → Connect → Paste cookie (top right).
- Paste it and tap Connect.
Tip: cookies from incognito windows sometimes don't work. Use a normal window.
- On a computer, open music.youtube.com and make sure you're logged in.
- Press F12 and click the Network tab.
- Refresh the page (F5).
- Type
browsein the filter box and click any request in the list. - Under Request Headers, find the line starting with
cookie:and copy everything after it. It's long, that's normal. - In Stash: Settings → YouTube Music → Connect, paste it, tap Connect.
Same incognito tip as Spotify.
Discord has no official way for a phone app to show what you're playing, so Stash does it through your own account's session (the same trick PreMiD and similar tools use). It's not a bot and it only sets your status.
Heads up: Discord calls this kind of thing a self-bot in its Platform Manipulation Policy, and its support article says it can get an account banned. In practice they go after spam, not music statuses, so the risk is low. But it's your account, so it's your call. The app asks before connecting, and everything else in Stash works fine without it.
To connect: Settings → Discord → Connect, and sign in. If that fails, tap Paste token: sign in at discord.com/login on a computer, open DevTools (F12) → Application → Local Storage → https://discord.com, and copy the token value.
Disconnecting clears your status right away and deletes the token from your phone.
FAQ
Flip Download on (Sync tab) and your playlists get saved to your phone so they play with no signal. Leave it off and they stream, taking almost no space. Either way, any single playlist has its own Download button. Stream on mobile data by turning on Stream on cellular in Settings.
Qobuz and Tidal. Stash looks every song up there. If you have a Qobuz account you can connect it in Settings and it uses yours. If not, it uses the project's relays, which hand your phone a link and the audio comes straight from Qobuz or Tidal. Everyone gets 300 lossless songs a day, which is a lot. No lossless copy? It plays AAC or Opus instead, and Now Playing tells you where it came from. The full details are in PRIVACY.md.
Your logins live on your phone, encrypted, and only ever get sent back to the service they came from. There's no Stash server holding your stuff and no analytics. Want every single host Stash talks to and why? It's all in PRIVACY.md. Yes, all of it.
Google Play doesn't allow apps that save audio from YouTube. So it lives here.
Stash never downloads audio from Spotify. It reads your Spotify library with your login and finds each song somewhere else. It isn't affiliated with any of the services it connects to, and you're responsible for how you use it.
Some phones (looking at you, Samsung, Xiaomi, OnePlus, Huawei) kill apps to save battery. Go to phone Settings → Apps → Stash → Battery and set it to Unrestricted. Still dying? dontkillmyapp.com has a fix for your exact phone.
Bugs and ideas go in Issues. For everything else, come hang out in the Discord. We're in there a lot and answer fast.
Support Stash
Stash is free and always will be. If it's earned a spot on your phone and you want to chip in, it genuinely helps. Thank you 💜
Can't donate? A star, a bug report or telling a friend helps just as much.
Star history
Help out
Code: pull requests welcome. CONTRIBUTING.md has how to build it and a map of the code. For anything big, open an issue first so we can talk it through.
Translations: want Stash in your language? Ask for translator access here and then access the Weblate Project here.
Security: found a hole? Please follow SECURITY.md instead of opening a public issue.
Everyone who's helped build Stash:
Thanks to
Stash stands on a lot of great open-source work:
- yt-dlp, the YouTube extraction backbone, and youtubedl-android, its Android bindings
- QuickJS-NG, a tiny JS engine for YouTube's signature challenges
- Media3 / ExoPlayer for playback
- ytmusicapi, the YouTube Music reverse-engineering reference
- Spicy Lyrics, the reference for the word-synced lyrics look
- paxsenix's lyrics API and itunes.apple.com for word-synced Apple Music lyrics
- Bungee Shade, the wordmark font, by David Jonathan Ross (SIL OFL)
- Discord logo from Simple Icons (CC0)
Legal disclaimer
Stash is an independent, unofficial project. It is not affiliated with, endorsed by, or sponsored by Spotify, YouTube, Google, Qobuz, Tidal, Apple, Deezer, Discord, Last.fm, ListenBrainz, MusicBrainz, JioSaavn, KuGou, LRCLIB, or any other service it connects to. Third-party names and logos here are used only to identify the services they belong to, and all trademarks belong to their respective owners.
Stash is a tool for managing your own music library. You're responsible for complying with the Terms of Service of any music service you use Stash with. Downloading copyrighted content without a license may be illegal in your jurisdiction. The Stash project accepts no responsibility for misuse.
Takedown and abuse reports
Rights holders, service operators, and anyone else with a takedown or abuse report: email [email protected], which reaches the maintainer directly. You can also open an issue on GitHub Issues or, if the report shouldn't be public, file a private security advisory. Reports are read, and a source can be removed from the app in a release.
License
Copyright © 2026 Rawnald Clark
Stash is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the LICENSE file for the full text.