Yuvaraj Vodiboina
All work
(09)Case studyChrome extension

Keeptake

Free Screen Recorder

A free screen recorder for Chrome, with your webcam and sound. It saves as you record, so a crash or a closed tab won’t lose your video.

Platform
Chrome extension
When
Nov 2026
Role
Sole developer
Version
0.4.0, 2 Nov 2026
Price
Free
Status
In review for the Chrome Web Store
(01)

How it works

5 steps
  1. 01

    Choose what to record

    A screen, a window or a tab, with your microphone, computer sound and camera. The camera goes in the corner you pick.

    Open larger: Your screen and your face, in one video
  2. 02

    Record without worrying

    Every second is saved to your computer. If Chrome crashes or the tab is closed, the video is recovered.

    Open larger: A crash won’t lose your video
  3. 03

    Catch a silent video early

    Keeptake tests your mic, and asks if Chrome’s sound switch is off before anything records.

    Open larger: Catch a silent video early
  4. 04

    Cut out mistakes

    Mark the parts you don’t want. The new copy keeps full quality, and your original stays untouched.

    Open larger: Cut out mistakes
  5. 05

    Keep every take together

    Search and sort your videos, then download one as an MP4 or several as one zip.

    Open larger: Every take, in one place
(02)

The problem

A recorder that holds your video until you press Stop can lose all of it to one crash. And a silent video usually isn’t noticed until it’s too late to record it again.

(03)

What I built

A Manifest V3 extension with no remote code and no host permissions. Chrome only lets the page that opened the source picker use the capture, so recording happens in its own pinned tab. MediaRecorder hands over a piece every second, and each piece goes straight into IndexedDB. When you stop, Mediabunny turns the pieces into an MP4, copying the H.264 video rather than encoding it again. The camera is drawn over the screen in a worker, on an OffscreenCanvas.

Hard partKeeping a recording whole when the tab making it is hidden, closed or crashes.

(04)

What it does

  1. 01

    Saves as you record

    Your video is written to your computer every second, and a crash or a closed tab recovers what was saved.

  2. 02

    Catches a silent video

    A microphone test, a check on Chrome’s sound switch, and a warning if your mic stays quiet.

  3. 03

    Your camera in the corner

    Pick the corner and the size. It’s part of the video, so it works for a screen, a window or a tab.

  4. 04

    Cut out mistakes

    Remove the parts you don’t want, in a new copy with the same quality.

  5. 05

    No signup, no watermark

    No limit on how many videos you make or how long they run. Your disk space is the only limit.

  6. 06

    Your recordings, together

    Search, sort and select them, download several as one zip, or save any moment as a picture.

(05)

Under the hood

  1. 01Chrome’s pickerA screen, window or tab

    The picker is opened by a pinned tab, because only the page that opens it can use the capture.

  2. 02Camera workerScreen and camera, drawn together

    A dedicated worker draws both at 30 frames a second, because a hidden tab’s timers slow to about one a second.

  3. 03MediaRecorderA piece every second

    Each piece is saved to IndexedDB as it arrives, so a crash only costs the last moment.

  4. 04MP4Checked, then kept

    The pieces become an MP4 on your computer, and are deleted only after the new file passes its check.

  • A hidden tab keeps its frame rate

    With the recorder tab really hidden, Chrome ran the page’s timer 4 times in 3 seconds instead of 60. The worker doesn’t slow down, so the video still came out at 30 frames a second.

  • Tested on Mac and Windows

    207 end-to-end checks run in real Chrome and read the finished MP4 back with ffmpeg. They kill the browser mid-recording to prove recovery. They use Chrome’s simulated camera and mic, and a real camera and real sound were checked by hand on a Mac.

(06)

In the code

Only the newest frame is kept

Chrome stalls a capture that has too many frames still open. So each stream keeps one frame and closes the one before, and the drawing loop always has the latest of both.

src/camera-worker.js, lines 26 to 33

camera-worker.js
async function keepNewest(readable, keep) {
  const reader = readable.getReader();
  for (;;) {
    const { value, done } = await reader.read();
    if (done) return;
    keep(value);
  }
}
(07)

Decisions

  1. 01

    The camera is part of the video, not a bubble on your screen

    A bubble floating over other sites needs access to every one of them. Drawing it into the video needs none.

    Trade-offYou see your camera in the recorder tab and the popup, not on the screen you’re recording.

  2. 02

    Copy the H.264 video instead of encoding it again

    Making the MP4 stays quick and loses no quality, and cuts are made without encoding again too.

    Trade-offA cut can only start on a keyframe, so the page shows where each one will really land.

(08)

A bug I remember

The recording that never started

What it did
On a real computer, with a camera that never answered, the recorder sat on “starting” forever and nothing was recorded.
Why
Asking for the camera can wait forever, and the recording was waiting for that answer. Chrome’s simulated camera always answers, so the tests couldn’t see it.
The fix
It now checks the permission first and gives the camera 8 seconds. If there’s no answer, it records the screen and tells you why the camera is missing.
(09)

Timeline

  1. 0.4.0, submitted to the Chrome Web Store

    Screen, window or tab recording with mic, computer sound and camera, crash recovery, cuts and zip downloads.

(10)

Built with

JavaScriptManifest V3MediaRecorderWebCodecsMediabunnyIndexedDBPlaywright

Your dataNo account, no analytics and no servers. Your videos stay in Chrome’s private storage on your computer.

Keeptake is in review for the Chrome Web Store, so it isn’t there to install yet.

(11)

Every screen

5 from its Chrome Web Store listing
  1. Open larger: Your screen and your face, in one video

    01Your screen and your face, in one video

  2. Open larger: A crash won’t lose your video

    02A crash won’t lose your video

  3. Open larger: Catch a silent video early

    03Catch a silent video early

  4. Open larger: Cut out mistakes

    04Cut out mistakes

  5. Open larger: Every take, in one place

    05Every take, in one place

Next10 of 20Studio website CodeHorizon
My studio’s home: a page for every product, a changelog with RSS, and no trackers.Read the case study