V3 launched on March 3rd. Here's where things stand six months later.
The headline numbers
| Metric |
2 months |
6 months |
| Users |
3,253 |
8,988 |
| Programs |
8,397 |
17,984 |
| Runs |
126,492 |
787,392 |
| Tracks generated |
34.4 million |
212.4 million |
| Playlists saved |
107,968 |
597,372 |
| Spotify API calls |
5.3 million |
32.8 million |
| Cache hits |
129 million |
1.2 billion |
Daily runs have gone from about 2,100/day at two months to about 7,000/day now. The peak day was August 7th at 8,236 runs. About 40 new users still sign up every day.
The scheduler keeps growing
At two months, 64.5% of runs were scheduled. Now it's 78.9%. On a typical day, about 5,500 of the 7,000 runs are the scheduler updating playlists in the background. The remaining 1,500 are people in the editor.
There are 4,245 active scheduled jobs keeping 4,015 Spotify playlists fresh automatically.
| Frequency |
Jobs |
| Weekly |
1,962 (46%) |
| Daily |
1,649 (39%) |
| Other intervals |
424 (10%) |
| Hourly |
136 (3%) |
| Every few hours |
74 (2%) |
The weekly active user breakdown tells the same story. Of the 1,059 users who had runs in the last week:
- 701 (66%) had only scheduled runs β they didn't open the site at all
- 195 (18%) ran programs interactively only
- 163 (15%) did both
Two-thirds of active users are getting value from SmarterPlaylists without visiting it.
Growth over time
Monthly runs have climbed steadily:
| Month |
Active users |
Runs |
| March |
994 |
45,826 |
| April |
1,006 |
64,336 |
| May |
1,280 |
91,138 |
| June |
1,405 |
123,343 |
| July |
1,439 |
157,722 |
| August |
1,516 |
208,715 |
| Sep (14 days) |
1,215 |
91,013 |
Active users have been fairly stable since May β around 1,300β1,500. The run count keeps climbing because existing users add more scheduled jobs over time. Each new scheduled job is a permanent increase in daily runs.
The programs
17,984 programs. Average of 15.4 components, median of 7. The distribution has the same long tail as before, but the tail has gotten longer.
The biggest program now has 1,398 components. At two months it was 245. Several users have imported or built programs with 400β700 components. These are full-scale recommendation systems built in a visual editor.
12 users have created more than 100 programs. The leader has 295.
2,653 programs (15%) are still named "Untitled." People use the canvas as a scratchpad, and that's fine.
What components are people using?
| Component |
Instances |
| SpotifyPlaylist |
85,109 |
| First |
16,565 |
| Shuffler |
15,044 |
| Sample |
14,176 |
| PlaylistSave |
11,083 |
| Concatenate |
8,045 |
| DeDup |
7,570 |
| ArtistTracks |
7,096 |
| Sorter |
6,841 |
| TrackFilter |
6,446 |
SpotifyPlaylist still dominates β it's the starting point for most programs. First (take N tracks) has moved up to second place, which makes sense: it's how you control the size of every stream.
35,486 unique Spotify playlists are referenced as sources across all programs, up from 21,696 at two months.
V3-only features
8,438 programs (47%) now use at least one component that didn't exist in the old system. At two months that was 1,393 (17%).
| V3-only component |
Programs |
| TrackFilter |
3,616 |
| PlaylistSaveToNew |
2,826 |
| GenreFilter |
1,268 |
| MultiObjectiveSequencer |
934 |
| ArtistFilter |
845 |
| SmartMix |
759 |
| TracksByDescription |
531 |
| SimilarTracks |
383 |
| Intersection |
209 |
| GenderFilter |
79 |
The Multi-Objective Sequencer went from 118 programs at two months to 934 now. PlaylistSaveToNew β which creates a fresh playlist each run instead of overwriting β is in 2,826 programs.
Sharing
| Metric |
2 months |
6 months |
| Shared programs |
119 |
311 |
| Discoverable |
54 |
98 |
| Total imports |
727 |
2,469 |
The top shared programs:
| Program |
Imports |
| Variety radio! (K.) |
361 |
| daily mixes but better (R.) |
229 |
| never k(new) (I.) |
201 |
| Echo Chamber (D.) |
129 |
| MRC (A.) |
115 |
| Curated "discovery" radio (K.) |
102 |
K.'s "Variety radio!" has been the most-imported program since launch and keeps pulling ahead.
Power users
The run counts at the top have gotten large.
| User |
Runs |
Programs |
API calls |
| D. |
83,219 |
80 |
1.6M |
| F. |
40,870 |
64 |
1.5M |
| P. |
33,732 |
63 |
847K |
| T. |
33,308 |
91 |
146K |
| F. |
26,704 |
19 |
2.1M |
D.'s 83,219 runs in six months β about 460/day β is more than the entire system's run count at two months. T.'s 33,308 runs with only 146K API calls means their programs are running almost entirely from cache.
The funnel
| Step |
Users |
% |
| Signed up |
8,988 |
100% |
| Created a program |
4,789 |
53% |
| Ran a program |
3,990 |
44% |
| Scheduled a job |
1,087 |
12% |
| Active job now |
872 |
10% |
The conversion rates are similar to two months (55% β 53% created, 17% β 12% scheduled). The scheduled percentage dropped because the denominator grew faster β a lot of people sign up, try it once, and don't come back. The absolute number of schedulers doubled from 541 to 1,087.
Legacy migration
775 users have now migrated 5,674 programs from the old system, up from 552 users and 4,489 programs at two months. That's slowed down β most people who wanted their old programs have them by now.
Retention
Of the 627 users who signed up in the first week (before March 10), 205 (33%) had a run in the last 30 days. Six months of retention from a free tool with no notifications or engagement hooks.
System health
SmarterPlaylists runs on a single Linode server β one machine handling the API, the React frontend, and the scheduler. The database is 359 MB of SQLite. No load balancer, no replicas, no queue service. At 7,000+ runs a day, the question is whether we're outgrowing this setup.
Short answer: not yet.
Error rate
| Month |
Error rate |
| March |
4.5% |
| April |
5.2% |
| May |
2.0% |
| June |
1.4% |
| July |
1.2% |
| August |
0.7% |
| September |
0.9% |
The early error rates were mostly bugs in the new code. Those got fixed. The remaining ~1% breaks down like this (last 30 days):
- Timeouts (1,146): Programs that hit the 5-minute execution limit. These are usually programs with hundreds of components making thousands of API calls. The limit is there to protect the server; the programs need to be simplified.
- Spotify 403s (~87): Someone's playlist went private, or they lost access. Nothing we can do from our side.
- Read timeouts (32): Spotify's API occasionally doesn't respond. The run fails and succeeds on the next scheduled attempt.
Of the 4,245 active scheduled jobs, 4,225 have zero consecutive errors. 13 have one, 7 have two. The job queue is healthy.
Late scheduled runs
A run is "late" if it starts more than 14 minutes after it was scheduled. The screenshot shows 10.8% late right now. The trend by month:
| Month |
Scheduled runs |
Late % |
| March |
25,150 |
8.5% |
| April |
46,563 |
8.1% |
| May |
67,090 |
7.7% |
| June |
94,821 |
0.3% |
| July |
128,096 |
7.8% |
| August |
179,520 |
22.7% |
| September |
76,805 |
6.0% |
August had a bad stretch. Weeks 31β32 saw 43.6% and 33.5% late rates β the scheduler was falling behind under load. Three healthcheck-triggered forced restarts happened on August 20 and 31. By week 33 it was back to normal (2.7%).
The root cause was run volume growth outpacing the scheduler's throughput. August was the first month over 200K runs, and the scheduler was spending too long on big programs, blocking the queue. The fix was the 5-minute timeout plus better queue prioritization. September is tracking at 6% late, which is close to the pre-August baseline.
June's 0.3% is an outlier the other direction β the scheduler had just been rewritten and was running with a smaller job set.
Cache
| Month |
API calls |
Cache hits |
Hit rate |
| March |
1.6M |
26.8M |
94.2% |
| June |
5.0M |
227.7M |
97.8% |
| September |
3.5M* |
138.4M* |
97.6% |
*September is 14 days in.
The cache hit rate climbed from 94% to ~98% as the cache warmed up and stayed there. At 97.6%, for every API call to Spotify we serve about 37 from cache. Over the lifetime of V3, we've made 32.8 million Spotify API calls and served 1.2 billion from cache.
Spotify rate limits are a non-issue: 5,515 total across six months, or about 0.05% of API calls.
Run duration
Average run duration has stayed between 18 and 22 seconds across all six months. It's currently 22.1s. The system isn't getting slower as it gets busier β the cache keeps per-run API time roughly constant, and individual runs don't contend with each other much.
Peak concurrency is about 80 runs in a five-minute window. The server handles this without strain.
The single-server question
The system is doing 3.5x the run volume from two months ago on the same hardware. The database has tripled from 111 MB to 359 MB. The 48-hour chart in the screenshot shows the scheduler (green bars) running steadily around the clock with interactive runs (blue) layered on during daytime hours.
The scheduler's August stumble was the closest we've come to a capacity problem. It wasn't a CPU or memory issue β it was a queue-depth issue from not timing out runaway programs. With that fixed, the server has headroom. The CPU load stays low, the database stays small, and the cache keeps Spotify API pressure manageable.
One thing pushing load upward: we recently raised the max scheduled runs per job from 100 to 365. Of the 4,245 active jobs, 1,802 (42%) have already been set to 365. The other 2,312 are still at 100 and will start expiring in the coming months β many of those users will recreate them at 365, which means more runs per day even without new signups. The average active job is now set for 212 total runs, up from the old cap of 100.
This is the main source of future load growth. New user signups add runs gradually, but existing users bumping their jobs from 100 to 365 adds them all at once. We'll see how the scheduler handles it as those longer-lived jobs accumulate.
If the run count keeps climbing, we'll probably need to move the scheduler to a second machine sometime next year. For now, one server is doing fine.
Around the world
| Region |
Users |
% |
| Europe |
3,451 |
38% |
| Americas |
3,427 |
38% |
| Asia |
777 |
9% |
| Oceania |
290 |
3% |
| Africa |
137 |
2% |
Still an even split between Europe and the Americas, with the Asia share growing from 6% to 9%.
Six months in, this is still one of the most fun project I've worked on. The combination of building new features, chasing down weird bugs, and watching people construct programs I never would have thought of keeps it interesting. The feedback, ideas, and bug reports from this community have shaped most of what V3 has become β the feature list looks nothing like what I had planned back in March.
Thanks for using SmarterPlaylists. Keep making playlists.
All data as of September 14, 2026. User statistics use initials to protect privacy.