All projects

Own product · 2025 – 2026 Project 14 of 20

Expanzor

Karaoke-style subtitles for short videos.

At a glance

Role
Design and development
Period
2025 – 2026
Status
Archived
Technologies
6 technologies

A web app that turns an uploaded video into karaoke-style subtitles: a transcript with per-word timing (OpenAI Whisper), a style editor and burning the subtitles into the video with ffmpeg. Users have accounts with JWT sign-in and pay for processing with credits. The project's domain has expired and the app is not running at the moment.

How it works

The Node.js (Express) backend extracts the audio from a video, has it transcribed by the whisper-1 model with per-word timestamps and builds ASS subtitles from the result that highlight the word being spoken. Colours, outline, shadow, font and position are set in an editor, and the export burns the subtitles into the video. Deployment went through GitLab CI.

Obstacles and how I solved them

  • Hundredths of a second. ASS measures time in hundredths of a second. Start times are therefore rounded down, so a subtitle never moves forward and overlaps the next one, and end times are rounded up, so it does not disappear too early. Overlaps in older projects are fixed on export.
  • Words on the right line. Karaoke words are matched to subtitle lines by how much they overlap in time, not by their order.
  • Portrait videos. Subtitle margins scale with the width of the video, so they fit portrait videos too.

Built with

  • Node.js
  • Express
  • MySQL
  • OpenAI Whisper
  • ffmpeg
  • JWT

Keyboard shortcuts.

Keyboard shortcuts for this site. They stay quiet while you type into a form.

This site

?
This help
g
12-column grid, components and page metrics
d
Appearance: system, light, dark, Linkin Park
Ctrl P
Print the CV instead of the website
Esc
Close the dialog or the grid

The blue dot after the name can be grabbed and thrown.

Linkin Park

l setlist lp
The setlist, songs by album
papercut
The page tears like paper
numb
The site goes numb for a few seconds
faint
The page faints and comes round
meteora
A meteor shower and a direct hit on the dot after the name
fromzero emily
The site fades down to zero and is reborn, with thanks to Emily Armstrong
concert koncert
Concert: the site runs through the colours of every album
castleofglass
The page turns to glass, cracks and shatters
iridescent
Headings and dots shimmer in rainbow colours
breakingthehabit
Whatever is on screen falls apart and snaps back
intheend
End credits, like at the cinema
victim morethevictim
The site breaks up in a glitch and stays distorted (until a reload, another word or Esc)
finalmasquerade
A masquerade mask over the whole site, the camera flies through an eye
lost
Off to the 404 page

Type the words anywhere outside the form; case and spaces do not matter. With reduced motion you get a short note instead.

On a phone, five taps on the blue dot after the name open the setlist.