Sortify reads your Spotify streaming history and turns it into statistics you can explore. It shows your top tracks, artists and albums, how your listening changed over time and year by year, and how it breaks down by hour of the day and day of the week. It ships as a single portable .exe so there is no installation.
- Top tracks, artists and albums, ranked by listening time, play count, or the first time you played them.
- Charts throughout the app: bar charts for top tracks, artists and albums, a donut showing each artist's share of your listening, a line chart of listening over time (daily, weekly or monthly), a day-of-week vs. hour-of-day heatmap, and breakdowns by hour and by day of the week.
- An Overview tab that opens with your headline totals and your top five tracks, artists and albums.
- A Compare tab that puts two periods side by side (it starts with your last 12 months against the 12 before): listening time, plays, artists and the rest with how much each changed, your artists and tracks ranked in both with how far they climbed or fell, and the artists that are new in the second period or gone from it. One click swaps the periods or makes the first one the stretch just before the second. Every sidebar filter except the date range applies to both.
- A Years tab with a per-year rollup: listening time, plays, unique artists and tracks, and your top artist and track for every year.
- Year in review image: right-click a year on the Years tab (or use the button in a year's detail view) for a 1080 × 1350 card with your minutes, plays, artists, new artists, longest streak, top five artists and tracks, and biggest month and day. Save it as a PNG or copy it. It follows the light or dark theme, and says so on the card when other filters are on.
- Compare artists, on the Trends tab: up to five artists' listening month by month (or week by week) on one chart. It starts with your top three; type a name to add another.
- Your #1 each month, on the Trends tab: every month's top artist and top track, and which artist topped the most months.
- A Podcasts tab covering podcasts and audiobooks: total time and plays, how many shows and episodes, top shows and top episodes, and sortable tables for both. Double-click a show or episode (or an audiobook or chapter) for its own detail view, whether or not podcasts count toward your music stats.
- Insights: longest and current listening streaks, your longest break, your biggest day, listening sessions (count, average and longest), weekday vs. weekend split, favorite time of day, skip rate, completion rate, repeat rate, discovery rate, how much of your time goes to a single artist, most skipped tracks, a chart of new artists discovered per month, and a donut of why plays ended (finished, skipped, and so on).
- Milestones, also in Insights: your first play, the plays that reached 1,000, 10,000, 50,000 (and so on) plays and 100, 500, 1,000 (and so on) hours, and the first time you heard your top artist.
- Forgotten favorites, also in Insights: tracks you played at least 20 times and artists you played at least 50 times that have gone quiet for the last six months of your history. Copy the tracks as links to hear them again.
- Playback context, also in Insights: your shuffle rate, how much you listened offline or in private sessions, and donuts breaking listening down by device (desktop, mobile, web player, speaker, car) and by country.
- Light and dark themes, switchable from the toolbar (Ctrl+T) or set to follow Windows (including when you switch Windows' mode while Sortify is open).
- Sortable tables. Click any column header to reorder by that field; right-click a row to copy it or exclude that track/artist. Ctrl- or Shift-click to pick several rows and copy or exclude them all at once. Each table has its own filter box that narrows the rows instantly, without re-running the analysis.
- Make a playlist from your stats: on the Tracks tab, Copy as links puts the top 25, 50 or 100 rows (in whatever order the table is sorted) or the rows you picked on the clipboard as Spotify links. Paste them into a playlist in the Spotify desktop app. Set the date filter to a year first to get that year's most played songs. Only the extended streaming history records track links.
- Double-click any track, artist, album or year row to open a detail view: listening time, plays, active days, first and last listen, a monthly chart, an hour-of-day profile, its tracks and albums, and a button that opens it in Spotify. Double-click a track, album or artist inside a detail view, or click the artist's name under a track or album, to open that one in turn.
- Right-click any chart to copy it to the clipboard or save it as a PNG.
- Click a bar in the track, artist, album, show, episode or most-skipped charts, or a year on the Years chart, to open its detail view. Click a square on the heatmap to narrow everything to that hour of that day.
- Filters that update every chart and table as you change them, with a chip row showing which ones are active. The x on a chip clears just that filter:
- Minimum play duration. The default is five seconds, which drops skips.
- Whether podcasts and audiobooks count toward your track, artist and album statistics. Off by default, since a few long shows will otherwise outrank your music. The Podcasts tab shows them either way.
- Date range, typed in or picked with one click: all time, the last 30 days or 12 months of your history, or any single year. Right-click a year on the Years tab to filter everything to it.
- Search by track, artist or album name.
- An exclude list for specific artists or tracks.
- Time of day and day of week. Time ranges may cross midnight, for example 22:00 to 02:00.
- Playback: count only shuffled, offline or private-session plays, or leave them out, and untick any device or country you want left out. Older exports don't record any of this, so their plays always count unless one of the lists is set to "Only".
- Saved filters: name the current filters at the top of the sidebar and pick them from the list later to put them all back. Exclusions (unticked devices and countries included), the minimum play duration, and the podcast and private-session settings are kept between launches on their own; date ranges, searches, time windows and the shuffle and offline settings reset each time you open Sortify.
- Load data your way: open the ZIP Spotify sends without unzipping it, pick individual JSON files (both with Ctrl+O), point at the extracted export folder (Open Folder, Ctrl+Shift+O), reopen one of the last eight exports from Recent, or just drag & drop the ZIP, the files or the whole folder onto the window.
- Reads both the extended streaming history (
Streaming_History_Audio_*.json) and the older account-data export (StreamingHistory*.json). Load both together and each play is still counted once: account-data plays the extended history already has are left out, and the newer ones are kept, so a recent account-data export can top up an older extended one. Loading the same export twice doesn't double anything either. - Reopens the folder you used last time when it starts, remembers your window size and layout, and caches the parsed history so an unchanged export loads instantly instead of being re-read.
- Export a text summary, a Markdown report, everything as JSON, or tracks, artists, albums, years and shows as CSV. The text, Markdown and JSON exports say which filters they were made under.
- Settings for the theme, chart animations, how long a break has to be before it starts a new listening session, and clearing the cache.
| Shortcut | Action |
|---|---|
Ctrl+O / Ctrl+Shift+O |
Open the export ZIP or files / open a folder |
F5 |
Re-read the files from disk, ignoring the cache |
Ctrl+1 … Ctrl+9 |
Jump to a tab |
Ctrl+K |
Jump to any artist, track, album or podcast by name and open its detail view |
Ctrl+F |
Focus the current table's filter box (Esc clears it) |
Enter |
Open the detail view for the selected track, artist, album or year row |
Ctrl+E / Ctrl+M / Ctrl+J |
Export text / Markdown / JSON |
Ctrl+B |
Show or hide the filter sidebar |
Ctrl+T |
Switch between the light and dark themes |
Ctrl+R |
Reset every filter |
- Request your extended streaming history from Spotify. When it arrives, download the ZIP. There's no need to extract it.
- Download the latest
Sortify.exefrom the releases page and run it. - Drag the ZIP onto the window, or click Open Files and pick it. An extracted folder works too: use Open Folder, or drop the folder or its JSON files onto the window.
- Browse the Overview, Tracks, Artists, Albums, Years, Podcasts, Trends, Insights and Compare tabs, adjust the filters on the left, and export your results if you want a copy.
Analysis is quick unless your history is unusually large.
You need the .NET 8 SDK.
dotnet run --project Sortify/Sortify.csproj
# 64-bit (recommended for most systems)
dotnet publish Sortify/Sortify.csproj -c Release -r win-x64
# 32-bit (for older or 32-bit-only Windows installs)
dotnet publish Sortify/Sortify.csproj -c Release -r win-x86The published Sortify.exe lands in Sortify/bin/Release/net8.0-windows/<rid>/publish/, where <rid> is win-x64 or win-x86 depending on which you built.
To run the test suite, and to check formatting the way CI does:
dotnet test
dotnet format --verify-no-changes- Sortify is not affiliated with Spotify.
- Everything runs locally on your machine. The only files it writes outside your exports are a settings file, a cache of your parsed history and an error log (plus the previous log once it passes 1 MB), all in
%LOCALAPPDATA%\Sortify; deleting that folder resets everything. Settings → Open data folder takes you there. - Please review the code before you download and run it.
Released under the GNU AGPLv3 license.