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.
On mobile, 720p or below is recommended — single-thread WASM can hit memory limits when re-encoding large videos.
[ AdSense slot ]

When to use which option

SituationChoose
Phone video shot vertically but shows sideways on PC90° 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 downVertical 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.
How is the audio handled?
Audio is re-encoded to AAC 128k. A lossless copy (-c:a copy) would be possible with a try-then-fallback approach, but containers like .mov always fail the first attempt, costing memory twice on mobile. So we re-encode to AAC from the start for stability. 128k AAC is virtually indistinguishable from the source.
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).

Processing & options

When to use it
Vertical phone videoWhen you held the phone in landscape but the file saved vertically — 90° / 270° rotation restores landscape framing.
Upside-down videoPhone held upside down → 180° rotation. Useful for lecture recordings and CCTV pulls.
Mirrored selfiesSelfie mode mirrors output. If text reads in reverse, horizontal flip restores the original.
Vertical flipDrones / car-mounted cameras can save flipped video. Vertical flip restores it.
SNS upload prepInstagram Reels (9:16) / YouTube Shorts (9:16) / standard (16:9) — rotate to match.
Lectures · presentationsFix wrongly oriented recordings so students or presenters see them correctly.
Output resolution options

You can pick the output resolution along with rotation (the original aspect ratio is always preserved — no stretching or cropping):

  • Keep original — same resolution. Recommended on desktop.
  • 1080p (FHD) — downscales if the long edge exceeds 1080.
  • 720p (HD) — default. Recommended on mobile.
  • 480p (SD) — lightest, minimal memory pressure.

Downscaling is applied before rotation to save memory (scale=-2:height); the -2 keeps dimensions even and preserves the aspect ratio.

Audio handling

Rotation / flip changes video pixels; audio is re-encoded to AAC 128k. A lossless copy always fails for containers like .mov, so AAC re-encoding is applied to every input for stability. 128k AAC is virtually identical to the source.

Common pitfalls
  • EXIF rotation flag — some cameras save the rotation in metadata. Modern players obey it, older ones ignore it. This tool re-renders pixels for universal compatibility.
  • Repeated rotation — each 90° rotation re-encodes. Pick the final angle and rotate once.
  • Text in mirrored video — text reads backwards after horizontal flip — avoid flipping for clips with on-screen text.
  • Mobile memory — 1080p + 1 minute can OOM on mobile. Prefer desktop Chrome.
  • HDR → SDR — HDR 10-bit auto-converts to SDR 8-bit. Slight color shift.

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 re-encoded to AAC 128k.
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).
⚠️ For personal use only. Respect copyright when working with videos you don't own.