SproutVideo

sproutvideo.com

ALMOST

A weekend of work, and real gaps remain.

Business video hosting: a player you control, privacy settings, viewer analytics and delivery from a network.

Promptfree, for everyone, and the only version there is
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

$0

Self-hosted video platform with transcoding and a player.

Chocobozzz/PeerTubefree · open source

hls.js

$0

Adaptive playback in browsers without native HLS.

video-dev/hls.jsfree · 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

Interest · last 30 days

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

All 25 in Screen recording & video

Not sending yet

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

Esc