Talk to us about your music streaming platform.
Tell us your catalog size, your licensing requirements, and where existing platforms fall short. We will scope a streaming platform built around your rights model and your audience.
Spotify or Apple Music won't white-label for your specific catalog or use case?
Licensing rules differ by territory and your platform has no way to enforce them per stream?
Spotify and Apple Music will not white-label for your catalog or your use case. Generic video streaming platforms do not handle music licensing rules. Building a custom streaming platform is the only way to enforce your rights correctly, serve your catalog at scale, and deliver the experience your audience needs.
RaftLabs builds custom music streaming platforms -- audio delivery infrastructure, catalog management, territory-based rights enforcement, playlist and recommendation systems, and subscription billing -- designed around your catalog and your licensing requirements.
Audio delivery with adaptive bitrate streaming via CDN
Rights enforcement per track per territory at playback time
Subscription and pay-per-listen billing with trial and upgrade flows
Catalog management for large music libraries with metadata search and filtering
RaftLabs builds custom music streaming platforms with adaptive bitrate audio delivery, catalog management for large music libraries, territory-based licensing and rights enforcement, playlist and recommendation systems, and subscription or pay-per-listen billing. A focused white-label streaming MVP typically costs $25,000 to $60,000. A full music streaming platform with recommendation systems and subscription billing typically runs $75,000 to $200,000.
A streaming platform for music is not the same as a streaming platform for video. The rights model is different. A music track can have multiple rights holders across master recording and publishing. Licensing terms differ by territory, by use type, and by the deal struck with each rights holder. Generic streaming software does not model this. It approximates it or ignores it, and that creates licensing liability.
Audio delivery also has specific requirements. Lossless formats, adaptive bitrate switching, low-latency playback start, and gapless playback between tracks all require infrastructure decisions that a video streaming template does not address. We build streaming platforms where the audio delivery layer and the rights enforcement layer are designed together, not bolted on separately.
We have built streaming platforms for independent labels, sync licensing portals, and B2B catalog access tools. The architecture is designed for your catalog size, your rights structure, and your audience -- not the median streaming use case.
We build the audio delivery layer using adaptive bitrate streaming via CDN -- tracks are encoded at multiple quality levels using FFmpeg and the client switches automatically based on connection speed. The transcoding pipeline produces MP3 at 128 kbps for standard quality and 320 kbps for high quality, plus AAC-LC for mobile clients and ALAC or FLAC for lossless tiers. Adaptive delivery is implemented with HLS (HTTP Live Streaming) for Apple device compatibility and MPEG-DASH for cross-platform clients, with the web player selecting the appropriate protocol at runtime. CDN delivery is configured through Cloudflare or AWS CloudFront with edge caching so audio segments are served from the point of presence closest to the listener -- a user in Tokyo and a user in London both get sub-200ms segment delivery from regional edge nodes rather than pulling from a single origin. Playback start time is optimised via segment pre-fetching so listeners hear audio within seconds, not after a buffering screen. DRM protection uses Widevine L1 (hardware-backed decryption on Android and Chrome) and Widevine L3 (software fallback) for non-Apple devices, and FairPlay Streaming for Apple devices -- enabling DRM-protected delivery across iOS, Safari, Android, and Chrome without a separate pipeline. For lossless delivery, the DRM layer ensures audio cannot be intercepted as unencrypted PCM during decryption.
We build catalog management tools that handle track ingestion, metadata normalisation, artist and album linking, genre tagging, and ISRC assignment. ISRC (International Standard Recording Code) is stored per track and is the identifier used in royalty reporting to ASCAP, BMI, SESAC, and SoundExchange -- if your catalog lacks ISRCs on ingestion, we build a lookup step against the MusicBrainz API to resolve them where possible. Track metadata is stored following the ID3v2 tag standard (title, artist, album, track number, genre, year, BPM, and custom tags), normalised on ingest so the catalog is consistent even when source files arrive with inconsistent tagging. MusicBrainz IDs are linked to artists, albums, and recordings where available, giving the catalog verifiable canonical identifiers that power the recommendation engine and prevent duplicate entries for the same recording. Large catalogs -- tens of thousands to millions of tracks -- are indexed in a search database (Elasticsearch or equivalent) that makes full-text search, faceted filtering by genre, artist, release year, and BPM, and fuzzy matching for misspelled queries fast at scale. Catalog updates, takedowns, and re-releases are handled through an admin interface with bulk upload support and per-track status control. The catalog layer is the authoritative source that feeds streaming delivery, rights enforcement, playlist curation, and discovery features -- changes in the catalog propagate to all downstream systems without requiring separate updates in each.
Rights enforcement in music streaming means checking, at playback time, whether the requesting user has the right to hear a specific track in their territory on their device type. We build the rights engine that stores your licensing rules -- territory availability, device restrictions, and user subscription tier restrictions -- and applies them server-side before the CDN delivers any audio segment. A track licensed for US streaming but blocked in Germany is enforced by checking the user's resolved country against the track's territory permission set before a playback token is issued; the CDN URL is signed and time-limited so it cannot be shared cross-territory. PRO licensing compliance is handled at the reporting layer: every confirmed stream is logged with ISRC, user country, and timestamp in the format required for ASCAP, BMI, and SESAC royalty reporting. SoundExchange reporting for digital performance royalties is generated from the same stream log, formatted to the SoundExchange data delivery specification for sound recording rights holders and featured artists. Rights changes -- new territory deals, expired licences, label takedowns -- are applied through the admin interface and take effect immediately without a platform deployment. Blocked tracks are handled with graceful fallback: the client receives a clear reason code rather than a silent failure, and the playlist skips to the next available track with a user-visible message explaining the restriction.
We build playlist management tools where users create and manage their own playlists, and editorial teams manage curated playlists with scheduled publication and territory restrictions. Collaborative playlists -- where multiple users can add tracks in real time -- are implemented using Redis pub/sub for real-time sync: when User A adds a track, the updated playlist state is pushed to all co-editors and active listeners without a page refresh or polling. Waveform visualisation on the track detail view and in the player is rendered using the Web Audio API -- the waveform data (amplitude values across the track timeline) is pre-computed at ingest time and stored as a compact JSON array, then rendered as an SVG or canvas element on the client, giving listeners a visual representation of the audio structure without requiring real-time audio analysis. For recommendation systems, we build collaborative filtering -- recommending tracks based on what listeners with similar streaming behaviour enjoy -- combined with content-based signals from track metadata (genre, BPM, key, mode, energy, danceability from audio analysis at ingest). For new platforms with limited listening history, content-based recommendations from MusicBrainz metadata and audio feature similarity are the starting point; collaborative filtering is layered in as listening data accumulates. Radio-style continuous playback, related track suggestions, and new release recommendations are built as discrete features so you include what fits your use case and audience.
We integrate subscription billing with Stripe -- monthly and annual plans, free trial with configurable trial length, upgrade and downgrade handling with proration, and automated dunning for failed payments via Stripe's Smart Retries logic. Pay-per-listen and download purchase models are also supported as discrete billing events, charged immediately via Stripe PaymentIntents. The billing layer is directly connected to the rights enforcement engine: a user's active subscription tier is checked server-side at every playback request, so a user whose payment fails and whose subscription lapses is immediately restricted to the free tier or blocked from playback depending on your plan structure -- there is no window where a lapsed subscriber retains premium access. Stripe webhooks notify the platform in real time of subscription state changes (payment succeeded, payment failed, subscription cancelled, trial ending), so access tier changes take effect within seconds of the event rather than on the next daily sync. Revenue reporting shows monthly recurring revenue (MRR), annual recurring revenue (ARR), trial conversion rate, and churn rate by plan type in a dashboard your finance team can use without pulling raw Stripe data. Subscriber counts, new subscriptions, and cancellations are broken down by plan and acquisition channel so marketing and finance have the numbers they need in one place.
We build analytics that track streams per track, per artist, per playlist, and per territory in the format and granularity your rights holders and licensing partners require. A stream event is logged only when a qualifying play threshold is met -- typically 30 seconds of confirmed playback, consistent with ASCAP, BMI, and SoundExchange royalty reporting thresholds -- so stream counts reflect real listens rather than accidental plays or skips. Stream counts feed into the royalty calculation system so earnings are calculated from verified play data per ISRC per territory per period, not estimates. PRO royalty reports (ASCAP, BMI, SESAC) and SoundExchange digital performance royalty reports are generated from the same stream log, formatted to each organisation's data specification, and can be exported on a monthly or quarterly cycle. Platform-level analytics show listener retention curves by track and playlist (what percentage of listeners reach the 30s, 60s, and full-track mark), skip rates by track, playlist completion rates, and new vs. returning listener ratios by acquisition channel. Artist and label dashboards give rights holders access to their own stream data, territory breakdown, and royalty estimates without requiring access to the full platform admin. All analytics data is retained in the time-series event store for at least 36 months to support retroactive royalty audits.
Frequently asked questions
Audio delivery uses a CDN -- Cloudflare or AWS CloudFront -- with audio files cached at edge nodes closest to the listener. Tracks are encoded at multiple bitrates during ingest using FFmpeg: 128 kbps and 320 kbps MP3, plus AAC-LC for mobile, and optionally FLAC or ALAC for lossless tiers. The streaming client receives an HLS manifest (for Apple clients and Safari) or an MPEG-DASH manifest (for other browsers and Android) listing the available quality segments. The client requests the appropriate segment based on measured connection bandwidth and switches mid-stream if conditions change -- this is adaptive bitrate streaming. CDN URLs are signed and time-limited, generated only after the rights engine confirms the requesting user is permitted to play the track in their territory on their device. The signed URL expires after the playback session, so it cannot be shared or replayed outside the platform. DRM protection adds a second layer: Widevine L1/L3 for Android and Chrome, FairPlay for iOS and Safari, ensuring that even if a segment URL were intercepted, the audio cannot be decrypted without a valid licence from the platform's DRM licence server. The CDN handles traffic spikes without manual scaling intervention.
Territory licensing is one of the most technically demanding parts of music streaming. A track can have different rights holders in different territories -- the master recording may be licensed to one distributor in the US and a different distributor in Germany, each with their own streaming rights and royalty terms. Licensing rights can change when a label deal expires, when a new territory agreement is signed, or when a takedown request is received. The rights engine stores per-track, per-territory rules: a permission set that specifies which countries can play a track, which subscription tiers have access, and whether download or offline play is permitted. At playback request time, the engine resolves the user's country from their IP address or billing address, checks it against the track's territory permission set, and issues a signed CDN playback token only if the check passes. Rights updates take effect immediately through the admin interface without a platform deployment -- there is no CDN cache invalidation gap because the rights check happens before a signed URL is issued, not at the CDN layer. We model the rights data structure before writing a line of delivery code, because the rights model determines how catalogs, user records, and CDN delivery are all structured.
Yes. Recommendation systems for music streaming typically use collaborative filtering -- recommending tracks based on what listeners with similar behaviour enjoy -- combined with content-based signals from track metadata. The approach that works best depends on your catalog size and the amount of listening data you have. For new platforms with limited listening history, we start with content-based recommendations driven by genre, tempo, and artist similarity. As the platform grows and listening data accumulates, we layer in collaborative filtering. We build the recommendation engine as a separate service so it can be improved without touching the core streaming infrastructure.
A focused white-label streaming MVP -- catalog management, audio delivery, basic playlist support, and subscription billing -- typically costs $25,000 to $60,000 and delivers in 10 to 14 weeks. A full streaming platform with territory rights enforcement, a recommendation engine, editorial tooling, and detailed streaming analytics typically costs $75,000 to $200,000 depending on catalog scale and licensing complexity. We scope each project before pricing it. You know what is included and what the fixed cost is before development starts.
What clients say
Three-year average engagement. Founders and operators describing the work in their own words. No marketing varnish.

I was pleased with RaftLabs team quality, consistency and execution.
01 / 02
Tell us your catalog size, your licensing requirements, and where existing platforms fall short. We will scope a streaming platform built around your rights model and your audience.