- click > soundcloud-likes-sync-to-playlist
- click > sc.squid.wtf
- Done.
** download your soundcloud likes with sc.squid.wtf in high quality 320kbps.** One easy page to make a playlist of your soundcloud likes: soundcloud-likes-sync-to-playlist Then paste the playlist link here: https://sc.squid.wtf/ > Offers legal 320 kbps downloads of SoundCloud playlists by fetching publicly available audio streams without bypassing DRM. Since the service does not crack protection and relies on data already accessible to users. How convenient wow!
SoundCloud treats your "Liked" tracks as a separate collection — not a playlist. You can't share your likes as a playlist, you can't queue them properly, soundcloud devs are totaly cracked and what not and there's no built-in way to convert them, wow awesome! If you want your liked tracks in a real, shareable playlist, SoundCloud's UI gives you one option: add them manually, one by one. We Love 1 hour manual labour!
For 500+ tracks, that's not a solution. That's a punishment for your taste in music or something.
Existing solutions like /ashwalk33r/soundcloud-likes-to-playlist take a UI-automation approach. They simulate clicking through SoundCloud's interface for every single track. You must scroll to the very bottom of your likes page to load all tracks into the DOM. Then the script clicks the "..." menu on each track, clicks "Add to Set", clicks the playlist button, and closes the modal — for every single track.
With hardcoded delays of ~5 seconds per track, 500 tracks takes 40+ minutes. It depends on brittle CSS selectors that break whenever SoundCloud updates their frontend. It requires your display language set to English. And SoundCloud's 500-track playlist limit means you need to manually configure a SKIP_FIRST counter and run the script multiple times.
It works — credit where credit is due — but there's a fundamentally better way for anyone who likes convenience.
This script skips the UI entirely and talks directly to SoundCloud's API. It reads your auth from the existing browser session (OAuth token from cookies, client ID from page data), fetches all liked tracks via paginated API calls, and creates or updates a playlist with a single PUT or POST request containing every track ID.
That's it. No DOM manipulation. No button clicking. No modals. No scrolling.
| UI Scraping | sc-likes-sync | |
|---|---|---|
| Time for 500 tracks | ~40 minutes | ~15 seconds |
| Requires scrolling | Yes (must load all tracks) | No |
| Requires English UI | Yes | No |
| Breaks on SC updates | Likely (CSS selectors) | Unlikely (API is stable) |
| Clicks per track | 4-5 | 0 |
| Total API requests | 0 (all UI) | ~5 (fetch pages + 1 write) |
| Error recovery | Start over | Re-run (idempotent) |
| Dependencies | None | None |
Step 1: Go to soundcloud.com and make sure you're logged in.
Step 2: Open the browser console — F12 then Console tab (or Ctrl+Shift+J / Cmd+Option+J on Chrome, Ctrl+Shift+K / Cmd+Option+K on Firefox).
Step 3: Copy the contents of sc-likes-sync.js, paste into the console, and press Enter.
You'll see live progress:
[sc-likes-sync] Initializing...
[sc-likes-sync] Auth acquired.
[sc-likes-sync] Fetching user info...
[sc-likes-sync] Logged in as: YourName (ID: 12345678)
[sc-likes-sync] Total likes count: 532
[sc-likes-sync] Fetching liked tracks (this may take a moment)...
[sc-likes-sync] Page 1: 200 tracks collected so far...
[sc-likes-sync] Page 2: 400 tracks collected so far...
[sc-likes-sync] Page 3: 475 tracks collected so far...
[sc-likes-sync] ✅ Fetched 475 unique liked tracks.
[sc-likes-sync] Looking for existing playlist "Liked Tracks"...
[sc-likes-sync] Creating new playlist: "Liked Tracks"...
[sc-likes-sync] ✅ Playlist created with 475 tracks!
[sc-likes-sync] ✅ URL: https://soundcloud.com/yourname/sets/liked-tracks
[sc-likes-sync] All done. Enjoy your playlist! 🎵
Step 4: Done. Your playlist is live. Refresh SoundCloud to see it.
Edit the CONFIG object at the top of the script before running:
const CONFIG = {
// Name for the target playlist
PLAYLIST_NAME: "Liked Tracks",
// true = update existing playlist with this name
// false = always create a new playlist
UPDATE_EXISTING: true,
// Make the playlist private?
PRIVATE: false,
};Q: Will this affect my actual likes? A: No. This script only reads your likes and writes to a playlist. Your liked tracks remain liked.
Q: Why are there fewer tracks than my likes count shows? A: Your likes count includes both tracks and playlists/albums you've liked. This script only syncs individual tracks — liked playlists are skipped since they can't be added as single entries.
Q: Can I run this on someone else's likes? A: The script uses your authenticated session, so it operates on your own account. However, the API allows reading public likes from other users — feel free to fork and modify.
Q: Is this against SoundCloud's ToS? A: This script uses SoundCloud's own API with your own authenticated session to organize your own content. It doesn't scrape, download, or redistribute anything.
Q: SoundCloud has a 500 track limit per playlist. What happens with more? A: SoundCloud's current API accepts playlists beyond 500 tracks. If you hit a limit, the script will report the error — you can split into multiple playlists by modifying the script.
The script leverages two things already present in your browser when you're logged into SoundCloud:
oauth_token cookie — SoundCloud stores your OAuth bearer token as a browser cookie. The script reads this to authenticate API calls.
__sc_hydration global — SoundCloud's frontend hydrates the page with a JavaScript object containing the API client ID. The script reads this instead of hardcoding a client ID that might rotate.
With these two pieces, the script makes standard REST calls to SoundCloud's v2 API:
GET /me — identify the logged-in user
GET /users/{id}/likes?limit=200 — paginated fetch of all likes
GET /users/{id}/playlists — find existing playlists
PUT /playlists/{id} or POST /playlists — write tracks to playlist
The key discovery: playlists accept track IDs as a flat array of integers, not objects. One request. All tracks. Done.
MIT — do whatever you want with it.
Built out of frustration with SoundCloud's missing "likes to playlist" feature, and a refusal to click 500 buttons.