Loom

loom.comcontributed by Samuele Ongaro

ALMOST

A weekend of work, and real gaps remain.

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.

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

PlanBilled monthlyBilled yearlyLast 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

Cap

$0

Screen and camera recording that ends in a shareable link.

CapSoftware/Capfree · open source

Screenity

$0

Browser 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

Interest · last 30 dayspeak 2/day
views01230 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

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

All 26 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