fileformer
search⌘KtranslateENexpand_moreupload_fileConvert
Converters8 file families · 44 direct conversions
What changes in a conversionarrow_forward

Convert MOV Video Free

Two .mov files can have almost nothing in common.

MOV is Apple's QuickTime container. What's inside depends on what made it: a phone clip, a screen recording or an editing master differ in size by up to fifty times. Pick where your file came from to open the box.

phone_iphoneiPhone videoCamera app
screen_recordMac screen recordingQuickTime / Screenshot app
movie_editEditing masterFinal Cut / Premiere export
videocamOld camera clipmid-2000s compact
IMG_4410.MOV130 MB / min
movieVideoHEVC · 3840 × 2160 · 30 fps · HDRefficient
graphic_eqAudioAAC stereo · 48 kHzuniversal
location_onMetadatadate, location, lenskept
hdr_onDolby VisionHDR brightness dataApple-first
one minute of this, in megabytes
iPhone video
130 MB
Mac screen recording
12 MB
Editing master
1.2 GB
Old camera clip
70 MB
Plays on every Apple device. On Windows and the web, HEVC can fail: converting to MP4 with H.264 fixes that.movieMOV to MP4
~/nearly-twins

MP4 was built from MOV. They're almost the same file.

In 2001 the MPEG group took Apple's QuickTime design as the basis for MP4. The two containers share the same structure of "atoms". That's why an iPhone MOV often converts to MP4 in seconds, just by rewriting the box around the video.

.mov.mp4
Made byApple (1991)MPEG, based on MOV (2001)
Structureatomsthe same atoms
Common codecsH.264, HEVC, ProResH.264, HEVC, AV1
ProRes / editing codecsyesrarely
Plays in web browsersSafari; others varyeverywhere
Windows, Android, TVsoften needs helpalmost always
~/where-is-moov

Why some videos play while downloading and others wait for the whole file.

A MOV keeps its index, the moov atom, separate from the frames in mdat. Cameras write moov last, because they only know every frame’s size once recording stops. A player can’t show anything until it has moov. Drag the download and move the index to see the difference.

moov at the end (camera)moov at the start (fast start)
mdat · framesmoov
byte 060 MB · 45 s clip
hourglass_topWaiting for the index
can play0 sindex receivednot until 100%
The frames are arriving, but without moov the player can’t tell where one frame ends and the next begins, or even which codec to use. Browsers that support range requests may jump to the end to fetch it first, costing an extra round trip.ffmpeg -i in.mov -c copy -movflags +faststart out.mov
~/stts-stss-stsc-stco

How a player finds frame 187 in four table lookups.

Inside moov, each track has a sample table: how long each frame lasts, which frames are keyframes, how frames are grouped into chunks and where each chunk starts. Seeking means walking those tables, then decoding forward from the last keyframe. Longer keyframe intervals make files smaller and seeking slower.

Keyframe every
every frame153060150
keyframe (sync sample)decoded but not showntarget frameother frames
sttsstep 1Time → sample numberentry: count 300 delta 1000timescale 30000Each frame lasts 1000/30000 s. 00:00:06:07 is sample 188 (tables count from 1).
stssstep 2Nearest keyframe before itsync samples:1 31 61 91 121 …The closest keyframe at or before sample 188 is sample 181.
stscstep 3Sample → chunkfirst_chunk 1samples_per_chunk 15desc_index 1Frames are stored in runs of 15. Sample 188 is number 8 in chunk 13.
stco + stszstep 4Chunk → byte offsetchunk 13 at 3,975,576+ sizes of 7 earlier samples= byte 4,187,395stco lists each chunk’s offset; stsz each frame’s size. Files over 4 GB use co64, with 64-bit offsets.
frames decoded to show one8quickbytes read for this seek0.23 MBfrom keyframe 180 to frame 187size of this 10 s clip6.6 MBa typical camera setting
~/inspect-a-mov

Open any MOV or MP4 and read its clock, its rotation and its metadata.

This page parses the atom tree itself. It decodes every track’s timescale, the edit lists that trim or delay playback, frame timing and keyframe spacing, and the display matrix that rotates phone video. It also reads timecode tracks and Apple’s metadata keys, location included. Then it can fix the rotation, strip the metadata or move the index to the front, without re-encoding a frame. Every rewrite is checked by following each new sample offset back to the same bytes. Everything happens on your device. Large files work too, because only the moov atom is read in full.

IMG_4410-sample.MOV · 881.9 KBvideo track 1
as stored
▲ top
1920 × 1080 coded
as players show it
▲ top
1080 × 1920 · 90° clockwise
tkhd display matrix · rotate 90° clockwise
010-100108001
file size881.9 KBduration6.000 soverall bitrate1.20 Mb/svideo bitrate1.06 Mb/sframe rate30.00 VFRkeyframe interval1.00 s
What the atoms say
KindQuickTime movie · brand qt
Duration (movie header)6.000 s
Index (moov)5.7 KB at the end
TracksVideo, Audio, Timecode
VideoHEVC Main 10, level 4.1, 4:2:0 10-bit
AudioAAC-LC, 44100 Hz
Display1080 × 1920 (stored 1920 × 1080, 90°)
ColourBT.2020 / HLG / BT.2020
Created (mvhd, UTC)2026-10-02 08:30:00 UTC
Recorded (metadata)2026-10-02T09:30:00+0100
DeviceApple iPhone 15 Pro
Location51.50720, -0.12760
Start timecode09:30:00:00
This browsersample, not played
infoNot fast start: moov sits at the end, after 876.2 KB of media. A browser streaming this has to download the whole file, or make a range request to the end, before it can play the first frame. Cameras and phones write it this way because moov is only complete once recording stops. The fix below moves it to the front.
infoThe frames are stored 1920 × 1080 and the display matrix rotates them 90° clockwise, so players show 1080 × 1920. Phones record in sensor orientation and let the matrix do the turning. Tools that ignore it show the video sideways; tools that re-encode should apply it and reset it to identity.
infoFrame durations alternate between 19 and 20 and 21 units at timescale 600: 30.000 fps cannot be represented exactly at this timescale, so the encoder rounds. This is not real variable frame rate.
infoHDR: HLG transfer with BT.2020 primaries. On SDR screens and in tools without tone mapping it looks washed out or too dark. Converters need to tone-map to BT.709 to keep it watchable.
infoAAC audio: the edit list starts at sample 2,112 (47.9 ms), skipping the encoder’s priming samples. This is what makes loops and track joins gapless.
infoTimecode track: the recording starts at 09:30:00:00, non-drop at 30 fps, stored as frame number 1,026,000. Editing software lines clips up by this, not by file time.
infoTimecode track 3 is disabled (tkhd flags), so players skip it.
warningLocation 51.50720, -0.12760: where the video was recorded travels with the file. Most messaging apps strip it, but cloud links, email and many converters keep it. “Strip metadata” below removes it.
infoLive Photo pairing ID 4F2B9C1E-7D3A-4E8B-9A61-0C5D2E8F7B14: the same UUID is in the matching HEIC, which is how Photos joins the still and the motion. Removing it breaks the pair.
infoThe sample’s frames are placeholder bytes, so it does not play; every atom, table and offset is real and can be rewritten below.
Timeline: what each track’s edit list playsmovie timescale 600 · 6.000 s
Video · 11 edit
Audio · 21 edit
Timecode · 3no edit list
Each bar spans the movie’s duration. Solid segments play media from the track; striped ones are empty edits, where the track shows nothing (a delayed start). An edit that starts its media a little in skips encoder delay, such as the 2,112 priming samples at the start of most AAC audio.
#HandlerFormatClockTimingEdits and samples
1videHEVC Main 10, level 4.1, 4:2:0 10-bit · 1920×1080600 Hz · 6.000 s · und30.000 fps variable · keyframe every 1.00 s · B-frames · 1.06 Mb/sfrom 0.033 s, 6.000 s · 180 samples in 12 chunks (stco) · 779.1 KB
2sounAAC-LC · 44100 Hz · stereo44,100 Hz · 6.060 s · und131 kb/s · skips 2,112 primingfrom 0.048 s, 6.000 s · 261 samples in 12 chunks (stco) · 97.1 KB
3tmcdTimecode, 30 frames/s600 Hz · 6.000 s · undstarts 09:30:00:00no edits · 1 samples in 1 chunks (stco) · 4 B
Metadata8 entries
Location (ISO 6709)moov › udta › ©xyz51.50720, -0.12760 · “+51.5072-000.1276/”
Location accuracy, mmoov › meta › keys #14.732
Location (ISO 6709)moov › meta › keys #251.50720, -0.12760, 21 m · “+51.5072-000.1276+021.000/”
Device makemoov › meta › keys #3Apple
Device modelmoov › meta › keys #4iPhone 15 Pro
Softwaremoov › meta › keys #518.0.1
Recorded (local time)moov › meta › keys #62026-10-02T09:30:00+0100
Live Photo pairing IDmoov › meta › keys #74F2B9C1E-7D3A-4E8B-9A61-0C5D2E8F7B14
No user metadata: no udta, meta/keys or ilst entries.
Atom tree
0ftyp qt · qt 20 B
20wide room for a 64-bit mdat header8 B
28mdat media data876.2 KB
897,232moov the index5.7 KB
897,240mvhd timescale 600 · 6.000 s108 B
897,348trak2.9 KB
897,356tkhd track 192 B
897,448edts36 B
897,456elst 1 entries28 B
897,484tref20 B
897,492tmcd12 B
897,504mdia2.7 KB
897,512mdhd timescale 60032 B
897,544hdlr vide49 B
897,593minf2.7 KB
897,601vmhd20 B
897,621hdlr alis56 B
897,677dinf36 B
897,685dref28 B
897,713stbl2.5 KB
897,721stsd hvc1168 B
897,889stts 10 entries96 B
897,985stss 6 entries40 B
898,025ctts 180 entries1.4 KB
899,481stsc 1 entries28 B
899,509stsz 180 samples740 B
900,249stco 12 entries64 B
900,313trak1.6 KB
900,321tkhd track 292 B
900,413edts36 B
900,421elst 1 entries28 B
900,449mdia1.5 KB
900,457mdhd timescale 44,10032 B
900,489hdlr soun49 B
900,538minf1.4 KB
900,546smhd16 B
900,562hdlr alis56 B
900,618dinf36 B
900,626dref28 B
900,654stbl1.3 KB
900,662stsd mp4a91 B
900,753stts 1 entries24 B
900,777stsc 2 entries40 B
900,817stsz 261 samples1.0 KB
901,881stco 12 entries64 B
901,945trak479 B
901,953tkhd track 392 B
902,045mdia379 B
902,053mdhd timescale 60032 B
902,085hdlr tmcd53 B
902,138minf286 B
902,146gmhd32 B
902,154gmin24 B
902,178hdlr alis56 B
902,234dinf36 B
902,242dref28 B
902,270stbl154 B
902,278stsd tmcd50 B
902,328stts 1 entries24 B
902,352stsc 1 entries28 B
902,380stsz 1 samples24 B
902,404stco 1 entries20 B
902,424meta635 B
902,432hdlr mdta33 B
902,465keys 7 entries303 B
902,768ilst291 B
903,059udta38 B
903,067©xyz30 B
Fix without re-encodingEach option rewrites only the container. Rotation edits nine numbers in the video track’s tkhd. Stripping removes udta and meta atoms, location and device names included. Fast start moves moov in front of mdat. Whenever moov changes size or position, every chunk offset in stco or co64 is shifted to match. The new file is then parsed again, and the first 16 bytes of up to 200 samples per track are checked against the original.
display rotation
StatusPick a rotation or an option.
downloadDownload rewritten file
~/spec-sheet

MOV, for reference.

Identifiers from Apple’s QuickTime File Format specification, the four-character codes that name what’s inside each track, and the container’s history.

Full nameQuickTime File FormatApple’s container, often just “QuickTime movie”
Extensions.mov · .qt.moov on classic Mac OS
MIME typevideo/quicktimeRegistered with IANA in 1993
Apple UTIcom.apple.quicktime-movieUniform Type Identifier on macOS and iOS
Magic bytes?? ?? ?? ?? 66 74 79 70 71 74 20 20“ftyp” then brand “qt ” at offset 4. Old files may start with moov, mdat, wide or free instead
Byte orderbig-endianEvery atom size and field
Atom header4-byte size + 4-byte typeSize 1 means a 64-bit size follows; size 0 means “to end of file”
Time basetimescale per trackUnits per second, e.g. 600, 30000 or 90000; durations are integers in it
SpecificationQuickTime File FormatPublished free by Apple Developer
Derived standardISO/IEC 14496-12ISO base media file format, the basis of MP4, 3GP, HEIF
Size limits4 GB per atom, unless 64-bitco64 and 64-bit atom sizes lift it; Apple’s own limit is far higher
Also carriestimecode · captions · chapterstmcd, c608/c708 and text tracks alongside video and audio
fourcccodecin MP4?
avc1H.264 / AVCyes
hvc1HEVC, parameters in the sample entry (Apple’s choice)yes
hev1HEVC, parameters in the streamyes
apchProRes 422 HQrarely
apcnProRes 422rarely
ap4hProRes 4444, optional alphararely
mjpaMotion JPEG format Ano
jpegPhoto JPEG, one image per frameno
mp4aAAC audioyes
lpcmUncompressed PCM audiorarely
tmcdTimecode trackno
1991QuickTime 1.0Apple introduces the format and player for System 7.
1998Chosen for MPEG-4ISO picks the QuickTime file format as the basis for the MPEG-4 container.
2001MP4 publishedISO/IEC 14496-1 and later 14496-12 formalise the shared atom structure.
2007ProResFinal Cut Studio 2 introduces ProRes, which lives mainly in MOV files.
2009QuickTime XSnow Leopard replaces the old engine; the file format carries on unchanged.
2017HEVC by defaultiOS 11 records HEVC in MOV, tagged hvc1.