Vibeleaderboard
Index / app
Category
AI Tools
Rank
No. 1362Tools index

Previous survey · No. 1368 ·

Pricing
Open Source
Type
APP
GitHub
375 stars
Latest release
v1.1
Date

About

Free on-device web app for transcribing audio and rendering subtitles — runs in the browser via WASM, nothing leaves your machine.

What it does

Drop in a video, let the app decode its audio, edit the resulting subtitle cues and styling, then render a new video. It previews work in an editor, reports progress, and saves MP4, WebM or MOV output.

Why it's ranked here

The workflow covers more than transcription: it includes cue editing, styling, preview and final video rendering. That makes it useful as a compact production tool. The main reservation is compatibility, since decoding, encoding and saving depend on relatively new browser capabilities.

What's good

It validates codec support before committing to the workflow and presents user-facing failures when audio cannot be decoded. Rendering runs in a worker, keeping heavy frame processing away from the main interface. Output format and codec choices are validated, with progress shown for reading and rendering.

Tradeoffs

The app requires browser video decoding and audio APIs, and its own compatibility screen recommends a recent desktop Chrome. Direct file saving is not universal, so unsupported browsers fall back to generating an in-memory download. Production builds also enable Sentry tracing and session replay, which complicates an absolute privacy claim.

How to use it well

Use it for a hands-on workflow where one person transcribes, corrects cues, styles captions and exports a captioned video. Check browser and codec compatibility before starting a long file. It does not present a CLI, reusable library or server API for automated batch processing.

Technical notes+

package.json defines a private ESM application built with ReScript, TypeScript, React 19 and Vite; its test command targets tests/*.mjs. src/Main.tsx gates the UI through isBrowserSupported, registers a production service worker and initializes Sentry browser tracing plus replay. src/LolApp.tsx decodes audio with AudioContext, validates codecs through src/codecs/render-worker?worker, transfers an OffscreenCanvas for rendering, and supports MP4, WebM and MOV targets with file-picker or ArrayBuffer download paths. src/BrowserNotSupported.tsx requires VideoDecoder and AudioContext, while treating showSaveFilePicker as optional. Generated ReScript artifacts such as src/Player.res.mjs and src/Utils.res.mjs sit beside TypeScript bindings.

Observed

Application surface
Private browser application with a graphical editor; no CLI, library or server API is shown.
Primary implementation
ReScript and TypeScript source compiled into a React 19 application.
Build packaging
ES modules built with ReScript and Vite; production builds also run TypeScript checks.
Output support
Renders MP4, WebM and MOV, with selectable video and audio codecs.
Browser requirements
Requires VideoDecoder and AudioContext; direct file-picker saving is optional.
Testing surface
The package test script runs JavaScript module tests through retest.
Production telemetry
Production initialization enables Sentry browser tracing and sampled session replay.

Read from README.md, package.json, src/Main.tsx, src/LolApp.tsx, src/types.d.ts, src/Utils.gen.tsx, src/Utils.res.mjs, src/vite-env.d.ts, src/Player.gen.tsx, src/Player.res.mjs, src/ErrorBoundary.tsx, src/BrowserNotSupported.tsx, src/ui/Tabs.tsx, src/ui/Spinner.tsx, src/ui/Combobox.tsx.

What it can do

  • Transcribe audio to text

    Audio fileText transcription

  • Generate subtitle files

    Audio fileSubtitle file (SRT/VTT)

  • Process audio locally in browser

    Audio fileProcessed audio data

  • Create timed text captions

    Audio fileTime-synced subtitle text

  • Convert speech to synchronized subtitles

    Video or audio fileSubtitle track with timestamps

Tags

subtitlestranscriptionwasmbrowserprivacy

Tech Stack

Node.jsTypeScriptVite

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.