SproutVideo
A weekend of work, and real gaps remain.
Business video hosting: a player you control, privacy settings, viewer analytics and delivery from a network.
Build me the video hosting I actually need instead of SproutVideo. The economics decide the design: **transcoding is CPU and delivery is bandwidth, and bandwidth is the bill.** Build the pipeline, rent the network. STACK - Node 20+ with Fastify - SQLite through better-sqlite3, WAL mode - ffmpeg on a worker for transcoding - Object storage plus a cheap delivery network — Bunny is the usual answer - hls.js in the browser, or the native player where HLS is supported - Caddy in front THE DATA MODEL - videos: id, title, source_path, duration_ms, status, visibility, created_at - renditions: id, video_id, height, bitrate, path, bytes, status - playlists: id, video_id, path — the HLS manifest - views: id, video_id, viewer_hash, started_at, seconds_watched, max_position, device, referrer - heatmap: id, video_id, second, count — **built from positions, and it is the most useful thing this data produces** THE PIPELINE - Upload direct to storage, presigned and multipart, never through your server - Probe with ffprobe, then transcode to a ladder: 360p, 540p, 720p, 1080p, only up to the source resolution. **Never upscale** — it costs CPU and bandwidth to make the picture worse - HLS with segments of a few seconds and a master playlist - A poster frame, and a sprite sheet for scrub previews, which is one ffmpeg command and makes the player feel expensive - A queue with a concurrency cap and a priority: a short video must not wait behind a two-hour one DELIVERY AND COST - Everything served from the network, never from your origin. The origin is hit once per segment per region - Long immutable cache headers on segments; the manifest short - **Measure bytes per view and set a per-video and per-account cap.** A single popular video on an uncapped bandwidth bill is the story everybody in this category has PRIVACY, WHICH IS WHY BUSINESSES BUY THIS - Signed expiring URLs with a token tied to the viewer's session, and the signature covering the path - Domain restriction checked at the network edge, not only in your player. **A player check is a suggestion; anybody can request the manifest directly** - An option to watermark the viewer's identity into the picture for genuinely sensitive material THE PLAYER - hls.js where needed, native where possible. Keyboard controls, captions, playback speed, and remembered position - Captions from whisper.cpp, free, and required rather than optional — **a business video without captions excludes people and is unwatchable on a phone in public** ANALYTICS WORTH HAVING - Play rate, completion, and a retention curve from recorded positions - The drop-off point is the finding: it says which forty seconds of your video lose the audience - Hashed viewer identity, retention with a sweeper, and nothing sent anywhere else WHAT MATTERS MOST Edge-enforced signing and a bandwidth cap. One makes the privacy real; the other stops success becoming an invoice.
What you lose
- Transcoding into a full quality ladder, done for you
- Adaptive delivery from a global network
- A player maintained across every browser and device
- Per-viewer analytics down to the second watched
If you would rather not build
- Bunny Stream or Mux, if renting the whole pipeline is acceptable
The escape hatch
open source · no votes, no paid placement
PeerTube
$0Self-hosted video platform with transcoding and a player.
Chocobozzz/PeerTubefree · open source
Why this verdict
our own opinion · changed only by a person
56/100
Verdict kinda at 56: ffmpeg and a rented network do this well. Enforcing access at the edge rather than in the player is the detail that makes private video actually private.
History
tracked since 14 Aug 2026 · nothing is ever overwritten
Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.
Questions about SproutVideo
answered from the record above
Is SproutVideo free?
No — the plan we track is $24.99 a month. Seed at $24.99/month with storage and bandwidth allowances.
Can you replace SproutVideo by building your own?
ALMOST. A weekend of work, and real gaps remain. Replacement score 56 out of 100, build time a weekend. Read what you lose before you decide.
How much does SproutVideo cost?
$24.99 a month on Seed — $299.88 a year. Recorded 14 Aug 2026.
What do you lose by replacing SproutVideo?
Transcoding into a full quality ladder, done for you; Adaptive delivery from a global network; A player maintained across every browser and device; Per-viewer analytics down to the second watched. If any of those carry weight for you, keep paying.
Is there an open-source alternative to SproutVideo?
Yes: PeerTube, hls.js. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

