~/blog

iPhone video to YouTube Shorts: why your 4K HEVC clip gets rejected and how to fix it in the browser

published

#video#codecs#workflow

Diagram of an iPhone 16:9 HEVC clip being converted to a 9:16 H.264 MP4 for YouTube Shorts
Generated diagram

TL;DR

iPhones record .mov with HEVC (H.265) at 16:9. YouTube Shorts and TikTok want 9:16 vertical MP4 with H.264. To make an iPhone clip Shorts-ready: re-encode to H.264 MP4, pad or crop to 1080×1920, keep it under 60 seconds. All three steps run locally in a browser using ffmpeg.wasm — no upload, no account.

The problem

You record a clip on an iPhone, open YouTube Studio, drag it into the Shorts upload, and one of three things happens:

The cause is rarely the file being broken. It is a format mismatch in three independent dimensions:

DimensioniPhone defaultShorts/TikTok requirement
Container.mov (QuickTime).mp4
Video codecHEVC (H.265)H.264 (most reliable)
Aspect ratio16:9 (1920×1080 or 3840×2160)9:16 vertical (1080×1920 ideal)
Durationup to recording cap≤60 s for Shorts, ≤3 min as of 2024
Audio codecAAC (compatible)AAC

The audio is usually fine. The container and codec choices break older upload pipelines and some browsers’ preview players. The aspect ratio is what makes YouTube decide whether a clip is a Short or not — the Shorts upload docs say the system looks for vertical or square framing.

Why HEVC trips uploads

Apple has shipped HEVC as the default capture format on iPhone since iOS 11 (2017). It produces files roughly half the size of H.264 at the same visual quality. The Wikipedia overview of HEVC covers the format in detail.

Three things still go wrong with it in 2026:

  1. Patent licensing. HEVC has a famously messy patent pool. Some platforms transcode HEVC server-side before publishing; others reject it outright to avoid the licensing surface. Browsers vary in playback support.
  2. Preview encoders. Browser-based upload widgets often try to draw a thumbnail or pre-validate the file. If the in-browser decoder cannot read HEVC (Safari handles it, Chrome and Firefox historically did not without OS-level codecs), the widget stalls.
  3. Editing tools. Many web editors will not accept HEVC inputs, so even if YouTube would have taken it, the tool you use to crop or shorten the clip will not.

H.264 (AVC) is the safe choice for “upload this to anything.” It is older, larger, and universally accepted.

The 9:16 mismatch

A 16:9 iPhone landscape clip pasted into a 9:16 Shorts player has two reasonable outcomes:

YouTube and TikTok will not pick for you. If you upload a 16:9 file as-is, you usually get letterboxing, and the algorithm may not recognize it as a Short at all. You want to produce the 1080×1920 file yourself.

Side-by-side comparison of pad mode (letterboxed, content fits with bars added) and crop mode (center cropped, content fills the frame, sides cropped)

Vertical footage you actually recorded by holding the phone upright is already 9:16 (1080×1920 for 1080p, 2160×3840 for 4K). For those, the only conversion needed is codec/container — no padding or cropping.

The fix, three steps, all in the browser

The reason for staying in the browser: the source clip often contains location metadata, faces, and audio you do not want sitting on someone else’s server. ffmpeg compiled to WebAssembly runs the same encoding pipeline locally. The trade-off is speed — browser ffmpeg is single-threaded by default and runs on whatever CPU you have. For a 30-second 4K HEVC clip, expect single-digit minutes on a modern laptop, longer on phones. (See the companion post on ffmpeg.wasm browser video for the performance details.)

The three steps:

1. Trim to ≤60 seconds

YouTube Shorts caps at 60 seconds for the short-form treatment (some accounts get 3 min as of mid-2024 per the Shorts help docs, but 60 is the safe target if you want guaranteed Shorts placement). Use the video splitter & joiner on this site to cut the clip, or to join several short clips into one.

2. Compress to H.264 MP4

Re-encode HEVC → H.264 in an MP4 container. This usually also shrinks the file enough to upload comfortably over a phone connection. The video compressor does the codec swap as a side effect of compression — three quality presets, optional resolution cap.

3. Convert to 1080×1920 vertical

Use the YouTube Shorts & TikTok converter to remap a 16:9 clip to 9:16. Pick pad to keep the whole frame with black bars, or crop to center-cut. The output is exactly 1080×1920 H.264 MP4 — the format YouTube, TikTok, and Instagram Reels all accept without re-transcoding.

If the source is already vertical (you recorded portrait), skip step 3 — the compressor’s output is already Shorts-ready as long as the dimensions are 1080×1920 or a 9:16 multiple.

Doing it in one shot from the command line

For people who already have ffmpeg installed locally and want to skip the browser path entirely:

# HEVC iPhone .mov → H.264 1080x1920 Shorts-ready .mp4, padded
ffmpeg -i input.mov \
  -t 60 \
  -vf "scale=1080:1920:force_original_aspect_ratio=decrease,pad=1080:1920:(ow-iw)/2:(oh-ih)/2:color=black" \
  -c:v libx264 -preset medium -crf 23 \
  -c:a aac -b:a 128k \
  -movflags +faststart \
  output.mp4

For center-crop instead of pad, swap the -vf filter:

-vf "crop=ih*9/16:ih,scale=1080:1920"

The browser tools wrap exactly this kind of filter graph behind a UI. No installation, but slower than native ffmpeg.

Caveats

References