Video Resizer
Resize video dimensions to any width and height with optional aspect ratio lock.
Video Resizer changes frame dimensions to any width and height with an optional aspect-ratio lock. Presets include 1920×1080 (Full HD), 1280×720 (HD, default), 854×480 (SD), 640×360, or Custom (inputs allow 1–7680 × 1–4320). Maintain aspect ratio (default on) letterboxes with black bars; off stretches to fill.
A Hardware-Accelerated alert notes GPU/WebCodecs local processing — keep the tab open until resize completes. Output is always MP4 named {basename}_resized.mp4 with audio preserved.
How it works
mediabunny Conversion sets video.width to the target and processes each sample on an OffscreenCanvas(targetW, targetH). With the lock ON: scale = min(tw/ow, th/oh), draw centered over black fill (pillarbox/letterbox). Lock OFF: draw stretched to target size. Audio passes through; output is MP4 BufferTarget.
Intrinsic size is probed first via video metadata. An equivalent FFmpeg scale/pad arg builder exists in the feature but the UI path is WebCodecs.
How to use
- Open Video Resizer and read the Hardware-Accelerated alert.
- Drop a video (hint: MP4, WebM, MOV — any video format).
- Preview the source at original dimensions.
- Click a Preset (default 1280×720 (HD)) or Custom.
- Fine-tune Width (px) (≤7680) and Height (px) (≤4320).
- Toggle Maintain aspect ratio — ON letterboxes with black bars, OFF stretches.
- Click Resize Video (Resizing…) and watch progress % + speed log.
- Download ({basename}_resized.mp4) or Start Over.
Tips
- Lock ON preserves composition (black bars); OFF only when you need exact pixel dims for embeds.
- Upscaling past source resolution will not improve quality — prefer downscale for sharing.
- Odd dimensions are fine on the canvas path (unlike some yuv420p FFmpeg pipelines).
- Audio track is preserved; container is always MP4.
Video Resizer FAQ
Is this uploaded for processing?
No — conversions run locally in your browser (WebCodecs/GPU).
Why are there black bars?
That is Maintain aspect ratio ON — the frame is fit-inside and padded with black to reach the exact target.
Why is the button disabled?
Browser lacks VideoEncoder/VideoDecoder, or a resize is already running.
What format comes out?
Always MP4 ({name}_resized.mp4, video/mp4), with audio preserved.
Can I upscale beyond the source?
Inputs allow 1–7680×4320, but quality will not improve — prefer downscaling for sharing.
Credits
- mediabunny — GPU resize pipeline with canvas letterboxing