Skip to content

[PROPOSAL] - Audio Cutter & Trimmer #40

@github-actions

Description

@github-actions

Existing Coverage Check

Reviewed before proposing:

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.


Specify Draft Summary

Proposed spec path: specs/007-audio-cutter/spec.md

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.

Scope (3 prioritised stories):

Priority Story Description
P1 Trim Audio Load audio file → see waveform → drag start/end handles → preview → download trimmed clip
P2 Format Output 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.

Generated by Market Research Discovery ·

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions