Video tools

59 tools

Trim, merge, compress, rotate and convert video, and pull audio or frames out of it. These use WebCodecs in your browser, so they need a recent Chrome, Edge or Safari and they do not run on the command line. Several copy packets instead of re-encoding, which is faster and lossless.

Video13

n→nConvert videoChange videos between MP4 and WebM, in the browser only. It encodes with WebCodecs, which Node has no equivalent of, so the CLI and MCP surfaces refuse it. Nothing is uploaded. AVI, WMV and FLV files use a 32MB ffmpeg fallback engine instead, once you consent.Runs on each file you dropn→nCompress videoShrink a video by re-encoding it at a lower quality, in the browser only, like video-convert, because mediabunny encodes through WebCodecs, which Node has no equivalent of. Always outputs MP4.Runs on each file you dropn→nTrim / cut videoCut a video down to a start-to-end range without decoding a single frame. Packets are copied straight from the source into a new MP4, so this runs in Node, the CLI and MCP as well as the browser. The cut snaps back to the nearest keyframe before the start you asked for, the same trade-off ffmpeg -c copy makes.Runs on each file you dropn→1Merge videosConcatenate two or more videos, one after another, into a single MP4. A packet-level copy with no decoding, so this runs in Node, the CLI and MCP as well. Every input must share the same video codec (and audio codec, if present); mixed-codec inputs need re-encoding first, which this tool deliberately does not do.Combines the files you dropn→nResize / crop videoResize and/or crop a video, in the browser only, like video-convert, because mediabunny decodes and re-encodes through WebCodecs, which Node has no equivalent of. Always outputs MP4.Runs on each file you dropn→nRotate videoRotate a video by a multiple of 90° by writing rotation metadata into the container, the same trick phones use for orientation, rather than re-encoding every frame. A packet-level copy, no decoding, so this runs in Node, the CLI and MCP as well as the browser. Most players honour this metadata; a player that ignores it will show the original orientation.Runs on each file you dropn→nChange video speedSpeed a video up or down by rescaling the timestamp on every packet. A packet-level copy, no decoding, so this runs in Node, the CLI and MCP as well as the browser. Audio speeds up with the video and its pitch shifts along with it, the same trade-off most simple speed-change tools make; correcting pitch back to normal needs decoding and resampling the audio, which this tool deliberately does not do.Runs on each file you dropn→nVideo metadataRead a video container apart without decoding a frame: format, duration, every stream's codec, resolution, frame rate, bitrate and language, plus rotation and creation time where the file carries them. Runs in Node, the CLI and MCP as well as the browser.Runs on each file you dropn→nStrip video metadataRemux a video into a fresh MP4 carrying no title, author, date, GPS or other descriptive tags from the source container. A packet-level copy with no decoding, so this runs in Node, the CLI and MCP as well as the browser.Runs on each file you dropn→nFlip videoMirror a video left to right, or flip it top to bottom, one decoded frame at a time. In the browser only, like video-watermark, because compositing needs a decoded frame from WebCodecs, which Node has no equivalent of. Always outputs MP4.Runs on each file you dropn→nLoop videoRepeat a video a fixed number of times, or loop it until it reaches a target length, by copying its packets end to end. A packet-level copy with no decoding, so this runs in Node, the CLI and MCP as well as the browser.Runs on each file you dropn→nSplit videoCut a video into several clips, every N seconds or into a fixed number of equal parts, without decoding a frame. Each cut snaps back to the nearest keyframe before its boundary, the same trade-off video-trim makes, so this runs in Node, the CLI and MCP as well as the browser.Runs on each file you dropn→nReverse videoPlay a video backwards: every frame is decoded, reordered and re-encoded in reverse, and its audio track is reversed sample by sample too. In the browser only, like video-convert, because decoding and re-encoding both need WebCodecs, which Node has no equivalent of. Always outputs MP4.Runs on each file you drop

One format to another13

n→nMOV to MP4Repackage a QuickTime MOV into MP4. Both are the same ISOBMFF box family carrying the same H.264/H.265 and AAC, so every packet is copied across with no decode and no re-encode.Runs on each file you dropn→nMKV to MP4Repackage a Matroska MKV into MP4 with no decode and no re-encode. A subtitle or attachment track MP4 has no room for is dropped and named, the video and audio packets are copied across untouched.Runs on each file you dropn→nTS to MP4Repackage an MPEG transport stream (.ts) into MP4. TS repeats its stream tables throughout the file for channel-hopping and has no seek index; MP4 gets one, so the same packets seek instantly once copied across.Runs on each file you dropn→n3GP to MP4Repackage an old 3GP mobile video into MP4. 3GP is already an ISOBMFF variant carrying H.264/AAC or the older H.263/AMR, so a modern player that refuses the 3GP extension plays the identical packets once they sit in an MP4 box.Runs on each file you dropn→nMP4 to WebMTranscode an MP4 to WebM. H.264/AAC and VP8-VP9/Opus are unrelated codec families, so every frame is decoded and re-encoded rather than copied, in the browser only, through WebCodecs.Runs on each file you dropn→nWebM to MP4Transcode a WebM to MP4. VP8/VP9/AV1 and Opus/Vorbis are not MP4-native codecs, so this decodes and re-encodes every frame through WebCodecs, in the browser only, rather than repackaging the bytes.Runs on each file you dropn→nMP4 to GIFTurn an MP4 clip into an animated GIF. WebCodecs decodes the frames and this tool builds the GIF89a bytes itself: one shared 256-colour palette across every sampled frame, no dithering. Browser only.Runs on each file you dropn→nMOV to GIFTurn a QuickTime MOV screen recording or clip into an animated GIF. WebCodecs decodes the frames and this tool builds the GIF89a bytes itself, one shared palette across every sampled frame. Browser only.Runs on each file you dropn→nGIF to MP4Turn an animated GIF into an MP4. This parses the GIF89a bytes itself, including disposal method and transparency compositing, then encodes the composited frames through WebCodecs. Browser only; transparent pixels become opaque black, MP4 has no alpha channel.Runs on each file you dropn→1HLS (M3U8) to MP4Stitch an HLS stream into one MP4: drop its .m3u8 playlist (a master playlist naming another playlist is fine too) and every .ts or .m4s segment it lists in one batch. Every packet is copied straight across with no decode and no re-encode. A segment the playlist names but you did not include is a clear refusal, not a silently short video.Combines the files you dropn→nAVI to MP4Convert an old AVI (usually MPEG-4 Part 2/DivX/Xvid) to MP4. No browser decodes that codec through WebCodecs, so this runs through a 32MB ffmpeg engine you download once, after you consent, from this site.Runs on each file you dropn→nWMV to MP4Convert a Windows Media Video (WMV, usually WMV3/VC-1) to MP4. No browser decodes that codec through WebCodecs, so this runs through a 32MB ffmpeg engine you download once, after you consent, from this site.Runs on each file you dropn→nFLV to MP4Convert an old Flash Video (FLV, usually Sorenson Spark or H.263) to MP4. No browser decodes that codec through WebCodecs, so this runs through a 32MB ffmpeg engine you download once, after you consent, from this site.Runs on each file you drop

Audio11

n→nConvert audioChange an audio file between MP3, WAV, FLAC, Ogg and M4A (AAC). In the browser only, like video-convert, because mediabunny decodes and encodes through WebCodecs, which Node has no equivalent of.Runs on each file you dropn→nNormalize audio volumeScale an audio (or video's audio track) so its loudest sample hits a target peak level: a two-pass peak scan followed by a gain-scaled re-encode, both through WebCodecs, so this runs in the browser only, like video-convert. Always outputs MP4 with an unchanged video track (if any).Runs on each file you dropn→1Trim or merge audioCut an audio file down to a start-end range, or concatenate two or more audio files one after another. A packet-level copy with no decoding, so this runs in Node, the CLI and MCP as well as the browser. Output is always an MP4 audio file (.m4a).Combines the files you dropn→nExtract audio from videoPull the audio track out of a video into its own MP4 audio file. A packet-level copy with no decoding or re-encoding, so this runs in Node, the CLI and MCP as well as the browser.Runs on each file you dropn→nMute videoDrop the audio track from a video, keeping the picture untouched. A packet-level copy of the video track only, no decoding, so this runs in Node, the CLI and MCP as well as the browser.Runs on each file you dropn→nReverse audioPlay an audio file (or a video's audio track) end to start, decoded to raw samples and re-encoded as WAV. WAV input decodes in Node, the CLI and MCP as well as the browser, the same PCM path audio-trim-merge's packet copy sits next to; AAC, MP3, Opus, FLAC and Vorbis need a browser.Runs on each file you dropn→nFade audio in or outRamp an audio file's (or a video's audio track's) volume up from silence at the start, down to silence at the end, or both, linear or logarithmic, decoded and re-encoded as WAV through the same PCM path as audio-reverse. WAV decodes everywhere; AAC, MP3, Opus, FLAC and Vorbis need a browser.Runs on each file you dropn→nConvert mono to stereo or backChange an audio file's (or a video's audio track's) channel count: average every channel down to mono, duplicate a mono track into identical left and right channels, or swap left and right, decoded and re-encoded as WAV through the same PCM path as audio-reverse. WAV decodes everywhere; other codecs need a browser.Runs on each file you dropn→nDraw a waveform imageDraw an audio file's (or a video's audio track's) peaks as a PNG, one column per pixel of width, decoded through the same PCM path as audio-reverse and drawn straight into a pixel buffer, the way font-preview rasterizes glyphs, with no canvas. WAV decodes everywhere; other codecs need a browser.Runs on each file you dropn→nRemove silence from audioCut out stretches of an audio file (or a video's audio track) quieter than a threshold for longer than a minimum duration, keeping a little padding at each cut, decoded and re-encoded as WAV through the same PCM path as audio-reverse. WAV decodes everywhere; other codecs need a browser.Runs on each file you dropn→nMeasure loudness (LUFS)Measure an audio file's (or a video's audio track's) integrated loudness in LUFS with ITU-R BS.1770-4 K-weighting and gating, plus an estimated true peak and loudness range, decoded through the same PCM path as audio-reverse. WAV decodes everywhere; other codecs need a browser.Runs on each file you drop

Audio: one format to another10

n→nMP4 to MP3Pull the audio track out of an MP4 video and save it as an MP3. The video is decoded only to be thrown away, and the audio is re-encoded to MP3 rather than copied.Runs on each file you dropn→nM4A to MP3Convert an M4A (AAC in an MP4 audio container) to MP3. Both are lossy, so this is a second lossy encode on top of the first: some quality that AAC already discarded stays gone, and MP3 discards more of its own.Runs on each file you dropn→nWAV to MP3Compress an uncompressed WAV recording into MP3. This is the one pair here where real compression happens for the first time, so the file shrinks by roughly a factor of ten at the default quality.Runs on each file you dropn→nMP3 to WAVDecode an MP3 into an uncompressed WAV. Nothing MP3 already discarded comes back; the result is only a format older software and hardware samplers can read, several times larger for the same audio.Runs on each file you dropn→nOgg to MP3Convert an Ogg Vorbis file to MP3 for a player or device that never learned Vorbis. Both codecs are lossy, so this decodes Vorbis and re-encodes to MP3 rather than repacking the same compressed bytes.Runs on each file you dropn→nFLAC to MP3Compress a lossless FLAC down to MP3. This is the one direction here where real audio quality is thrown away on purpose, traded for a file roughly a tenth the size at the default quality setting.Runs on each file you dropn→nMP3 to OggRe-encode an MP3 as Ogg Vorbis for a game engine or open-source pipeline that expects it. Both codecs are lossy, so this decodes the MP3 and encodes fresh Vorbis frames rather than repacking anything.Runs on each file you dropn→nAAC to MP3Convert a raw ADTS AAC stream to MP3 for hardware and older apps that never added AAC decoding. AAC is usually the higher-quality codec at a given bitrate, so this trades some of that quality for wider compatibility.Runs on each file you dropn→nOpus to MP3Convert an Opus file, the codec behind most voice notes and Discord recordings, to MP3 for software that cannot open it. Opus stays small at low bitrates that make MP3 audibly worse, so the MP3 usually ends up the larger file.Runs on each file you dropn→nM4A to WAVDecode the AAC audio inside an M4A file into an uncompressed WAV. Useful for older editing software that reads WAV but not M4A; no quality returns, AAC already discarded it once.Runs on each file you drop

Frames & GIF5

n→nVideo thumbnailGrab a single frame from a video as a PNG or JPEG, in the browser only, like PDF to PNG, because decoding a frame needs WebCodecs, which Node has no equivalent of.Runs on each file you dropn→nExtract video framesPull out one frame every N seconds as a sequence of PNGs, in the browser only, like PDF to PNG, because decoding frames needs WebCodecs, which Node has no equivalent of.Runs on each file you dropn→nVideo to GIFConvert a video clip to an animated GIF. In the browser only, like video-extract-frames, because decoding frames needs WebCodecs, which Node has no equivalent of. WebCodecs has no GIF codec at all, so this decodes frames with mediabunny/WebCodecs and then builds the GIF89a bytes itself: one shared 256-colour palette (median-cut, sampled across every frame this tool decodes, not per-frame) so colours stay consistent frame to frame, with each pixel mapped to its nearest palette entry. No dithering.Runs on each file you dropn→nGIF to videoConvert an animated GIF into a video, in the browser only, like video-convert, because encoding needs WebCodecs, which Node has no equivalent of. WebCodecs has no GIF codec at all, so this parses the GIF89a bytes itself, including disposal method and transparency compositing, so a GIF built from partial-frame deltas decodes to the same full frames a browser would show, not only its raw per-frame rectangles. It then feeds the composited frames to mediabunny/WebCodecs to encode. Always outputs MP4, following every other Node-native remux tool in this codebase; each frame's own GIF delay becomes its video frame duration. MP4 has no alpha channel, so any transparent GIF pixel, composited onto a canvas that starts fully transparent black, becomes opaque black in the video, not the checkerboard a GIF viewer shows; verified by executing this tool against a transparent fixture and reading the pixel back out.Runs on each file you dropn→nOptimize GIFShrink an animated GIF by lowering its color count, dropping frames or resizing it, through the same GIF89a encoder and decoder video-to-gif uses. Reports the size before and after. Runs in Node, the CLI and MCP as well as the browser.Runs on each file you drop

Overlay4

Record3

Questions

Why do the video tools only work in a browser?

They use WebCodecs, which Node has no equivalent of. Running one on the command line refuses with a message pointing at its page. Use a recent Chrome, Edge or Safari.

Do they re-encode my video?

Several do not. Trim, merge, mute, rotate and audio extraction copy packets, which is fast and lossless. Compression, resizing, watermarking and subtitle burn-in decode and re-encode, because they change the pixels.

How large a file can I work on?

The video is held in browser memory, so the limit is your device rather than a rule here. A phone will run out on a long recording sooner than a laptop will. Trimming first is the usual way to make a large file manageable.

What format do I get back?

MP4 for most tools, .m4a for audio extraction, and the conversion tool lets you choose MP4 or WebM. Each page states its output, because guessing wrong wastes a long encode.

Is my video uploaded?

No. Everything happens in the tab. That is the point of the WebCodecs requirement: the encoding hardware in your machine does the work rather than a server you would have to upload to.