PhilipAng
← All projects

Castlet

A free screen recorder that runs entirely in the browser. Your recordings never leave your computer.

  • React

castlet is a free screen recorder that lives in a browser tab. Record your screen, camera and mic, trim the result, and save an MP4. No account, no install, and nothing is uploaded: every recording is made, stored and edited on your own computer.

I built it because the popular tools (Loom, Screencastify) push your videos to their cloud, cap free recordings, and ask you to sign up before you can record a 2 minute bug report.

What it does

  • Records screen, webcam and mic, with system audio mixed in
  • Floating webcam bubble and controls that stay on top of other windows (Document Picture-in-Picture)
  • Markers while recording (Alt+Shift+M), shown on the timeline so you can jump back to them
  • Trim and cut, remove audio, and copy any frame as an image
  • Survives crashes and refreshes: an interrupted recording can be recovered
  • Installs as an app and works offline

How it works

  • Capture: getDisplayMedia and getUserMedia, with the Web Audio API mixing mic and system audio, and MediaRecorder writing 1 second chunks.
  • Storage: chunks stream to the Origin Private File System (OPFS) while recording, so a long recording never sits in memory and a crash loses at most a second. The library (titles, dates, thumbnails) lives in IndexedDB through Dexie.
  • Export: Mediabunny remuxes WebM to MP4 and handles trims and cuts in the browser, without ffmpeg.wasm. Files save with showSaveFilePicker, or a normal download as a fallback.
  • Privacy: no server, no database, no login. The Content Security Policy only allows anonymous page counts (Umami), so the "never leaves your computer" promise is enforced by the browser, not just stated.
  • Quality: Vitest for units, Playwright end-to-end tests that record with fake camera and screen devices in CI.

Built with React, TypeScript, Vite, Tailwind, shadcn/ui and Zustand, deployed as a static PWA on Cloudflare Pages.