What Claude and I built: Vimeo Audio Extractor
A web tool that takes any public Vimeo video — either by direct link or by pasting a webpage that has a Vimeo video embedded on it — and downloads the audio as an MP3 file.
The problem it solves
If you have video content on Vimeo and you want the audio — for a podcast, a transcript, repurposing content — there's no native way to do that. You'd normally need a paid tool, a sketchy website, or a technical workaround. This eliminates all of that.
How it works (non-technical)
- You paste a URL into the tool
- It detects whether that's a direct Vimeo link or a webpage with a Vimeo video embedded on it
- If it finds one video, it goes straight to extraction. If it finds multiple, it shows you a list to pick from
- It pulls the audio track from the video and hands it back to you as a downloadable MP3
How it works (technical)
Three layers:
- Frontend — a clean single-page HTML app. No frameworks, no dependencies. Just a URL input, smart detection logic, and a download button.
- Backend — a Node.js Express server with two endpoints. /api/detect fetches the page HTML and scans it for Vimeo video IDs using pattern matching. /api/extract runs yt-dlp — an open source audio/video extraction tool — converts the output to MP3, and streams it back to the browser.
- Infrastructure — deployed on Railway, a cloud hosting platform. The key reason Railway over alternatives: no timeout limit. Extracting audio from a video can take 20–30 seconds, which kills free-tier serverless platforms like Vercel. Railway runs a persistent server with no cutoff.
What makes it a micro app
It does exactly one thing. No login. No database. No subscription. You paste a link, you get a file. The entire project is five files.
The build progression
It went through three iterations in one session:
- First pass — browser-only prototype using a third-party API (Cobalt). Fast to build, fragile to depend on.
- Second pass — self-hosted Railway version with a real backend. Owned infrastructure, no third-party dependency.
- Third pass — added smart URL detection so the tool accepts both direct Vimeo links and any webpage with an embedded video. One video auto-extracts, multiple videos shows a picker.
The stack
- HTML, CSS, vanilla JavaScript (frontend)
- Node.js + Express (backend)
- yt-dlp + ffmpeg (audio extraction)
- Railway (hosting)
- GitHub (deployment pipeline)
Total cost to run: $0.
Time spent: 10 minutes