Large Library Support: 30K+ Tracks, Zero Freezes
SetFlow now handles DJ libraries of 30,000+ tracks without breaking a sweat. We've rebuilt the import pipeline, moved set generation off the main thread, and parallelised library loading — so large collections feel as fast as small ones.

The Problem: Large Libraries Hit a Wall
DJs with serious collections — 10,000, 20,000, even 30,000+ tracks — were running into three issues:
- Import failures — Traktor and Rekordbox collections with comma-separated genre tags (common with tools like Lexicon, DJCU, and MusicBrainz Picard) were rejected by our validation layer
- UI freezes during set generation — the algorithm scored every candidate track on the main thread, locking the browser for 1–2 seconds on large libraries
- Slow library loading — on page refresh, tracks were fetched 500 at a time in sequential requests, taking 6–10 seconds for a 30K library
Fix 1: Import Validation for Real-World Collections
Real DJ collections are messy. Traktor supports comma-separated genre tags, so a single track might have a genre like “Downtempo, Ambient, Chillout, Chillwave, Electro, Electronic, Electronica, Idm, Instrumental, Synthwave, Techno” — that's 111 characters. Our validation had a 50-character limit.
When any track in a 1,000-track import batch failed validation, the entire batch was rejected. For a library with 87 tracks exceeding the limit, most batches would fail — making the import appear completely broken.
We've raised the genre limit to 200 characters and the file path limit to 1,000 characters (for deeply nested folders and URL-encoded Rekordbox paths). The database has no length limit on these fields, so this was purely a validation-layer fix.
Fix 2: Set Generation Moves Off the Main Thread
The set generation algorithm is computationally intensive — for each position in your set, it scores every candidate track for harmonic compatibility, BPM proximity, energy fit, and artist diversity. With 30,000 tracks, that's millions of comparisons.
Previously, this ran synchronously on the main thread. The browser couldn't update the UI until generation finished, which made the spinner freeze and the page appear unresponsive.
Now, set generation runs in a dedicated Web Worker — an isolated background thread. The UI stays fully responsive: the spinner animates, you can scroll, and the page feels alive while your set is being built. If the Worker isn't available (rare), SetFlow falls back to main-thread generation automatically.

Fix 3: Parallel Library Loading
On every page refresh, SetFlow syncs your library from the server. Previously, this happened in sequential batches of 500 tracks — for a 30K library, that meant 60 back-to-back network requests taking 6–10 seconds.
Now, SetFlow fetches tracks in parallel batches of 10,000. A 30K library requires just 3 requests instead of 60, and they run simultaneously. Loading time drops from 6–10 seconds to under 1 second.
Before & After
Before
- 60 sequential API requests
- 6–10 seconds to load library
- UI freeze during set generation
- Import failed for multi-genre tags
After
- 3 parallel API requests
- <1 second to load library
- Smooth, responsive UI throughout
- All genre formats supported
Clean BPM Display
One more thing: Traktor stores BPM values with full floating-point precision (e.g. 127.999252). Previously, SetFlow displayed these raw values, making the library table look cluttered. BPM values are now rounded to whole numbers at import time — because DJs think in whole BPMs. Existing tracks will update on your next re-import.
Try It Now
These improvements are live for all users. If you previously had trouble importing a large collection, try again — it should work smoothly now. Head to your Library and re-import your collection to get the clean BPM values and faster loading.
New to SetFlow? Start your free trial and import your full DJ library today — no matter how big it is.
What's New
- ✓Import collections with 30,000+ tracks from Traktor and Rekordbox
- ✓Multi-genre tags (comma-separated) fully supported up to 200 characters
- ✓Set generation runs in a background Web Worker — no UI freezes
- ✓Library loads 10x faster with parallel batch fetching
- ✓Clean, whole-number BPM display across the entire app
Ready to build better sets?
Import your Rekordbox library and generate perfectly mixed DJ sets in seconds.
Try SetFlow Free