Records your screen and camera and turns it into a link you can send. The point is the round trip: hit record, stop, and the video is already uploaded, transcribed and watchable — with viewer counts and comments underneath.
Build me screen recording that replaces Loom — and know exactly why this is ALMOST. The round trip is the product: hit stop and the link is already ready. What makes it hard is the two halves you are taking on. **A desktop recorder** that handles system audio, several monitors and the permission dialogs on both macOS and Windows is fiddly platform work. **A transcoding pipeline and a CDN** is where the recurring cost lives — this is a video hosting business now, and video is expensive. STACK - A browser recorder using getDisplayMedia and getUserMedia, which avoids the desktop problem entirely at the cost of system audio on some platforms — start here - A desktop application later, if system audio and multi-monitor matter enough - Node 20+ with Fastify, SQLite through better-sqlite3 - ffmpeg on a worker for transcoding - Object storage with a CDN in front - Caddy in front THE ROUND TRIP, WHICH IS THE WHOLE POINT - Allocate the video's identifier before recording starts, so the link exists the moment you stop - Upload in chunks as they are recorded, not after. By the time somebody presses stop, most of the file is already there and the link is ready in a second or two - A crash loses seconds, not the whole recording, because chunks are already stored - The link is copied to the clipboard automatically on stop. That single behaviour is why people use this instead of attaching a file - Playback begins from the original recording while the transcode runs, with the better renditions swapped in when ready. Never make somebody wait for a transcode to share THE DATA MODEL - videos: id, slug, owner_id, title, description, duration_ms, status, source_path, poster_path, bytes, width, height, created_at, expires_at - chunks: id, video_id, index, path, bytes, received_at - renditions: id, video_id, height, bitrate, path, bytes, status - transcripts: id, video_id, language, vtt_path, is_edited - shares: id, video_id, token, password_hash, expires_at, allow_download, allow_comments, revoked_at - views: id, video_id, viewer_hash, started_at, watched_ms, max_position_ms, completed, bot - comments: id, video_id, at_ms, author, body, created_at — anchored to a moment, which is what makes feedback on a recording useful - reactions and emoji at a timestamp, if you want them RECORDING - Screen, camera, or both, with the camera as a circle in a corner - Microphone with a live level meter, and a warning if it has been silent for several seconds. A recording with no audio is discovered at the worst possible moment - System audio where the platform allows it, and an honest note where it does not — this is the main thing the browser cannot always do - A countdown, a visible indicator while recording, pause and resume, and a keyboard shortcut to stop - A cursor highlight and click ripples drawn from a separately recorded pointer track, which costs almost nothing and makes a demo far clearer TRANSCODING AND COST - A ladder of renditions packaged as HLS so a player adapts to the connection - Queue it with a concurrency cap. This is CPU-hours per video and it is the bill - Storage and egress are the other bill. Measure bytes per minute early, set a retention policy, and put the numbers in the README. This is the honest reason the subscription exists WATCHING - A share page that is fast and plain: the player, the title, the transcript, and a comment box - Viewer counts and how far people watched. Where people stop is the only analytic that matters — it tells you which minute to cut - Speed control, captions on by default, and a plain video element rather than a framework - Optional password, expiry and download permission per share TRANSCRIPTS - A local speech model producing WebVTT, editable, searchable, and used as the page's text so a recording is findable later - Never send the audio to a third party without saying so OPERATIONS - .env: DATABASE_PATH, STORAGE_PATH, BASE_URL, SESSION_SECRET, CDN_URL, RENDER_CONCURRENCY, RETENTION_DAYS - Migrations on boot, each once; disk watchdog and a working sweeper - Nightly backup of the database; source videos per their own policy - Health endpoint reporting queue depth and free space WHAT MATTERS MOST Chunked upload during recording, so the link is ready at stop. Everything else here is a video site; that one behaviour is why the product replaced attaching a file to an email.
What you lose
- A desktop recorder that handles system audio, multiple monitors and permission dialogs on both macOS and Windows
- A transcoding pipeline and a CDN, which is where the recurring cost of self-hosting video actually lands
- Automatic transcripts, captions and searchable text across a video library
- The share link that works the instant you stop recording, while the upload is still finishing
- Viewer analytics: who watched, how far they got, and where they stopped
If you would rather not build
- OBS Studio plus any file host, for the low-effort version
What it costs
read from their page 15 Aug 2026
| Plan | Billed monthly | Billed yearly | Last read |
|---|---|---|---|
| — | $18/mo | — | 15 Aug 2026 |
Their pricing page is where these came from. Seeing a different price? Tell us.
The escape hatch
open source · no votes, no paid placement
Screenity
$0Browser extension that records the screen with annotations, saving locally.
alyssaxuu/screenityfree · open source
Why this verdict
our own opinion · changed only by a person
52/100
Verdict kinda at 52: browser recording and playback are genuinely one session, but transcoding, storage and egress are an ongoing bill, and matching Loom's instant-share-while-uploading takes real engineering. Score sits mid-range because the economics, not the code, decide this one.
History
tracked since 6 Aug 2026 · nothing is ever overwritten
Questions about Loom
answered from the record above
Is Loom free?
No — the plan we track is $18 a month. Business plan on monthly billing, per user. Roughly $14.94 per user per month if billed annually.
Can you replace Loom by building your own?
ALMOST. A weekend of work, and real gaps remain. Replacement score 52 out of 100, build time a weekend. Read what you lose before you decide.
How much does Loom cost?
$18 a month on Business — $216 a year. Recorded 6 Aug 2026.
What do you lose by replacing Loom?
A desktop recorder that handles system audio, multiple monitors and permission dialogs on both macOS and Windows; A transcoding pipeline and a CDN, which is where the recurring cost of self-hosting video actually lands; Automatic transcripts, captions and searchable text across a video library; The share link that works the instant you stop recording, while the upload is still finishing; Viewer analytics: who watched, how far they got, and where they stopped. If any of those carry weight for you, keep paying.
Is there an open-source alternative to Loom?
Yes: Cap, Screenity. 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

