Rotate Video
Turn vertical phone videos sideways, fix upside-down footage — 90°/180° rotation plus horizontal/vertical flip.
Your video never leaves your browser. All processing happens locally via ffmpeg.wasm (WebAssembly).
First use: the video processing engine (ffmpeg.wasm, ~32MB) downloads automatically. Wi-Fi recommended. After that, it's cached and starts instantly.
📱 Mobile: we recommend videos at 720p or below and under 1 minute — for larger files, desktop Chrome is more reliable.
📱 Mobile: we recommend videos at 720p or below and under 1 minute — for larger files, desktop Chrome is more reliable.
↑ Changing the rotation option updates the preview instantly (CSS simulation — actual processing runs when you press "Rotate").
On mobile, 720p or below is recommended — single-thread WASM can hit memory limits when re-encoding large videos.
Waiting...
[ AdSense slot ]
When to use which option
| Situation | Choose |
|---|---|
| Phone video shot vertically but shows sideways on PC | 90° clockwise or counter-clockwise (depending on direction) |
| Upside-down footage (held the phone wrong) | 180° |
| Mirror effect (un-flip a selfie) | Horizontal flip |
| Drone or action cam mounted upside down | Vertical flip (or 180°) |
Related tools
Why does rotation take as long as compression?
Rotation rearranges pixels, so the codec must decode → rotate → re-encode. Setting only a metadata rotation flag is interpreted inconsistently across players and is often ignored when uploading to social platforms — so we rotate the actual pixels.
Is the audio preserved?
Audio is copied losslessly (
-c:a copy) without re-encoding. Only the video track is rotated, so audio fidelity is unchanged. Some codecs (AC-3, DTS) aren't compatible with MP4 and will fall back to AAC automatically.
Why isn't multi-threaded (faster) processing supported?
Static hosts like GitHub Pages can't set
Cross-Origin-Opener-Policy / Cross-Origin-Embedder-Policy headers, which disables SharedArrayBuffer. That forces single-threaded execution — safe but slower (about 0.3 to 1× the source duration).
Frequently asked questions
Is my video uploaded to a server?
No. The video is processed entirely in your browser via ffmpeg.wasm (WebAssembly). The site operator never sees the contents. Only the ffmpeg library itself (~32MB) is downloaded on first use; the video itself never leaves your device.
Can I rotate and compress in one step?
The rotate tool currently has no quality slider (CRF is fixed at 23 to preserve original quality). To shrink the rotated file, run the result through Compress Video. We may merge these in the future.
What is the output format?
Output is always MP4 (H.264) — playable on virtually any device. Audio is copied as-is when possible, falling back to AAC only when the codec isn't MP4-compatible.
How long does it take?
On a single thread, about 0.3 to 1× the source duration on desktop Chrome. A 5-minute 1080p video takes 1 to 3 minutes. Mobile is 2 to 3 times slower.
Can it handle large videos?
On desktop Chrome, around 1 to 2GB. Mobile browsers may become unstable above ~500MB due to memory limits.
References
Last verified: 2026-05-05 / Powered by ffmpeg.wasm (WebAssembly).
- ffmpeg.wasm — official site (BSD/LGPL)
- transpose filter — FFmpeg Filters Documentation
- H.264/AVC standard — ISO/IEC 14496-10
⚠️ For personal use only. Respect copyright when working with videos you don't own.