You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/specs/002-video-trimmer-gif-exporter/ — processes video files (MP4, WebM) using FFmpeg.wasm; outputs GIF, WebP, MP4 clip. Does not handle audio-only files (MP3, WAV, AAC, OGG) and does not expose an audio-focused UI.
This is net-new. Audio trimming is a distinct tool from the Video Trimmer: different file types (audio-only), different user need (ringtones, podcast clips, voice memos), different UI (waveform visualizer instead of video timeline), and a different Web API path (Web Audio API vs FFmpeg.wasm). No existing spec, issue, or live tool in this repo covers audio file processing.
Problem: Users need to trim audio clips — creating a ringtone from a song, clipping a podcast segment for social media, cutting a voice memo down to the relevant part, extracting a verse from a track. Every popular free online tool (mp3cut.net, clideo.com, audio-trimmer.com) uploads the audio file to a server. For users trimming personal voice memos, private recordings, or licensed music, this is both a privacy concern and an unnecessary round-trip. Desktop tools (Audacity, GarageBand) work but require installation, learning a full audio editor, and are not available on school or work machines.
Users: Content creators making social media audio clips; podcast editors cutting highlight reels; anyone making a phone ringtone; students trimming audio for presentations; general users who want to cut a specific part of a track without uploading it.
Choose output format (MP3, WAV, OGG) and quality/bitrate before download
P3
Fade In / Fade Out
Add fade-in and/or fade-out effect to the trimmed clip before export
Key requirements: waveform visualization, draggable trim handles (start/end markers), playback of selected region only, output format selector, quality/bitrate choice, zero server transmission, preview before download, clear/reset.
Acceptance criteria:
SC-001: Zero bytes of audio data transmitted to any external server
SC-002: Trimmed output starts and ends at positions within 100 ms of the user-specified handles
SC-003: Full trim and download workflow completable in under 30 seconds for a 5-minute MP3
SC-004: Output file plays correctly in browser audio player and standard OS media players
SC-005: MP3 output at 128 kbps is audibly indistinguishable from the source in the selected region
SC-006: Functions in latest 2 major versions of Chrome, Firefox, Safari
The Gap
"Cut MP3 online free" and "trim audio online" are high-volume search queries with no dominant open-source, privacy-first competitor. The top organic results are server-upload tools with clear friction:
mp3cut.net: File upload to remote server; free tier but no privacy guarantee; ad-heavy
clideo.com: Server upload required; free tier adds watermark to video clips and imposes 500 MB file limit; audio editing behind paywall tiers
audio-trimmer.com: Server upload; basic functionality, no format choice
Kapwing (audio trim): Requires account; free tier adds watermark; $16/month for full access
The Web Audio API makes this 100% browser-viable: decode the audio file to an AudioBuffer, slice the buffer to the selected frame range, and encode the output as a Blob for download. No server required.
This is a natural extension of the existing Video Trimmer theme — the repo already owns the "trim media without uploading" positioning, and audio is the obvious companion tool. A user who trims a podcast clip for audio-only sharing is a clear distinct use case from video-to-GIF export.
Competitor Evidence
Tool
Problem
mp3cut.net
Server upload required, no privacy guarantee, ad-heavy
clideo.com
Server upload, watermark on free tier, paywall for full features
audio-trimmer.com
Server upload, no format choice, minimal UI
Kapwing audio trim
Account required, watermark on free tier, $16/month
Adobe Audition
$54.99/month (or Creative Cloud subscription), full DAW overkill
Search phrases users type: cut mp3 online free, trim audio online no upload, trim mp3 free, make ringtone from song online, cut audio clip online free, remove part of audio online, audio cutter free no watermark
The Tech
API / Capability
Role
Web Audio API + AudioContext.decodeAudioData()
Decode MP3/WAV/OGG/AAC to raw PCM AudioBuffer
OfflineAudioContext
Render the trimmed/faded segment to a new AudioBuffer without real-time playback
Canvas API
Draw waveform visualization from PCM sample data; render trim handle UI
MediaRecorder or AudioBuffer→WAV encoder
Encode trimmed PCM buffer to WAV/OGG Blob for download
lamejs (vendored, ~25 KB)
Encode trimmed PCM to MP3 Blob in-browser
AudioBufferSourceNode
Real-time preview playback of the selected region
Blob + URL.createObjectURL
Trigger local download of the output audio file
Ships as tools/audio-cutter.html + tools/audio-cutter/main.js + tools/audio-cutter/style.css. lamejs is a small, MIT-licensed browser MP3 encoder (~25 KB) and would be the only new vendor dependency. WAV output requires no library (raw PCM with a header). OGG output uses the native MediaRecorder API in supported browsers.
Usability Controls
Waveform display: Full-width waveform drawn from decoded PCM data; updates as file loads
Trim handles: Draggable start (green) and end (red) vertical markers; keyboard-nudgeable (arrow keys ± 0.1s)
Region preview: "Play Selection" button plays only the trimmed region in real time
Time display: Start time, end time, and duration shown numerically with millisecond precision
Format selector: MP3, WAV, OGG dropdown with plain-language descriptions
Quality/bitrate selector: For MP3: 64/128/192/320 kbps; for WAV: 16-bit/24-bit
Fade controls: Fade-in duration (0–5s) and fade-out duration (0–5s) sliders; preview updates live
Reset: Return handles to full file start/end; clear loaded file
Progress indicator: Processing bar during encoding (lamejs MP3 encoding may take a few seconds for long files)
Safe defaults: Full file selected on load (no accidental crop); MP3 128 kbps output; no fade
Complexity: 4 / 10
The core trim is a buffer slice: AudioBuffer samples from frame startFrame to endFrame copied to a new buffer. The waveform visualization and drag-handle UI are the main implementation work. MP3 encoding via lamejs is well-documented with community examples. The primary edge case is very large files (>100 MB) where decodeAudioData may be slow — a progress indicator and Web Worker offloading handle this. Fade in/out is a linear amplitude ramp applied to the sample array before encoding. No server, no WASM binary beyond lamejs.
Existing Coverage Check
Reviewed before proposing:
/specs/002-video-trimmer-gif-exporter/— processes video files (MP4, WebM) using FFmpeg.wasm; outputs GIF, WebP, MP4 clip. Does not handle audio-only files (MP3, WAV, AAC, OGG) and does not expose an audio-focused UI./specs/001-pdf-redactor/,/specs/003-pdf-merger-splitter/,/specs/004-qr-code-generator/— unrelatedvideo-trimmer-gif-exporter— video-only; no audio waveform trimming interfaceThis is net-new. Audio trimming is a distinct tool from the Video Trimmer: different file types (audio-only), different user need (ringtones, podcast clips, voice memos), different UI (waveform visualizer instead of video timeline), and a different Web API path (Web Audio API vs FFmpeg.wasm). No existing spec, issue, or live tool in this repo covers audio file processing.
Specify Draft Summary
Proposed spec path:
specs/007-audio-cutter/spec.mdProblem: Users need to trim audio clips — creating a ringtone from a song, clipping a podcast segment for social media, cutting a voice memo down to the relevant part, extracting a verse from a track. Every popular free online tool (mp3cut.net, clideo.com, audio-trimmer.com) uploads the audio file to a server. For users trimming personal voice memos, private recordings, or licensed music, this is both a privacy concern and an unnecessary round-trip. Desktop tools (Audacity, GarageBand) work but require installation, learning a full audio editor, and are not available on school or work machines.
Users: Content creators making social media audio clips; podcast editors cutting highlight reels; anyone making a phone ringtone; students trimming audio for presentations; general users who want to cut a specific part of a track without uploading it.
Scope (3 prioritised stories):
Key requirements: waveform visualization, draggable trim handles (start/end markers), playback of selected region only, output format selector, quality/bitrate choice, zero server transmission, preview before download, clear/reset.
Acceptance criteria:
The Gap
"Cut MP3 online free" and "trim audio online" are high-volume search queries with no dominant open-source, privacy-first competitor. The top organic results are server-upload tools with clear friction:
The Web Audio API makes this 100% browser-viable: decode the audio file to an
AudioBuffer, slice the buffer to the selected frame range, and encode the output as a Blob for download. No server required.This is a natural extension of the existing Video Trimmer theme — the repo already owns the "trim media without uploading" positioning, and audio is the obvious companion tool. A user who trims a podcast clip for audio-only sharing is a clear distinct use case from video-to-GIF export.
Competitor Evidence
Search phrases users type:
cut mp3 online free,trim audio online no upload,trim mp3 free,make ringtone from song online,cut audio clip online free,remove part of audio online,audio cutter free no watermarkThe Tech
AudioContext.decodeAudioData()AudioBufferOfflineAudioContextAudioBufferwithout real-time playbackMediaRecorderor AudioBuffer→WAV encoderAudioBufferSourceNodeShips as
tools/audio-cutter.html+tools/audio-cutter/main.js+tools/audio-cutter/style.css.lamejsis a small, MIT-licensed browser MP3 encoder (~25 KB) and would be the only new vendor dependency. WAV output requires no library (raw PCM with a header). OGG output uses the nativeMediaRecorderAPI in supported browsers.Usability Controls
Complexity: 4 / 10
The core trim is a buffer slice:
AudioBuffersamples from framestartFrametoendFramecopied to a new buffer. The waveform visualization and drag-handle UI are the main implementation work. MP3 encoding vialamejsis well-documented with community examples. The primary edge case is very large files (>100 MB) wheredecodeAudioDatamay be slow — a progress indicator and Web Worker offloading handle this. Fade in/out is a linear amplitude ramp applied to the sample array before encoding. No server, no WASM binary beyond lamejs.