User Rating 0.0 β˜…β˜…β˜…β˜…β˜…
Total Usage 0 times

Drop MP4 file here or click to browse

Supports .mp4, .m4v, .m4a, .mov β€” up to 4 GB

Is this tool helpful?

Your feedback helps us improve.

β˜… β˜… β˜… β˜… β˜…

About

MP4 files conform to ISO 14496-12 (ISO Base Media File Format). The container organizes data into nested boxes (atoms), each identified by a 4-character code and a 32-bit or 64-bit size field. Critical metadata lives in the moov atom: the mvhd box stores global timescale and duration, while each trak contains per-track timing (mdhd), handler type (hdlr), and codec parameters (stsd). Timestamps in MP4 use an epoch of January 1, 1904 - not Unix 1970 - meaning raw values require an offset of 2082844800 seconds. Getting codec details wrong leads to transcoding failures, streaming incompatibility, or silent audio.

This tool parses the binary structure directly in your browser using DataView on the raw ArrayBuffer. No file leaves your machine. It reads fixed-point fields (16.16 for rates, 2.30 for volume), decodes iTunes-style ilst metadata (artist, title, album art), and maps hdlr component subtypes to human-readable track labels.

Limitation: heavily fragmented files with moof atoms (live streams) may show incomplete track data since the tool targets standard progressive MP4 layout.

mp4 metadata video metadata viewer mp4 info video file analyzer iso bmff parser mp4 atom viewer video codec info

Formulas

Duration in seconds from raw MP4 fields:

T = durationtimescale

where duration is the tick count from mvhd or mdhd, and timescale is ticks per second (commonly 600 for video, 44100 or 48000 for audio).

MP4 timestamp to Unix timestamp conversion:

tunix = tmp4 βˆ’ 2082844800

where 2082844800 is the offset in seconds between 1904-01-01 and 1970-01-01.

Fixed-point 16.16 decoding:

value = raw3265536

Average bitrate estimation:

bitrate = fileSize Γ— 8T bps

where fileSize is in bytes and T is duration in seconds.

Reference Data

Atom / BoxISO CodeContainsTypical Location
File TypeftypBrand, version, compatible brandsRoot (first box)
Movie HeadermvhdTimescale, duration, creation/modification dates, rate, volumemoov
Track HeadertkhdTrack ID, dimensions, transformation matrix, durationmoov β†’ trak
Media HeadermdhdTrack timescale, duration, language codemoov β†’ trak β†’ mdia
Handler ReferencehdlrTrack type: vide, soun, text, sbtlmoov β†’ trak β†’ mdia
Sample DescriptionstsdCodec FourCC (avc1, hev1, mp4a, etc.), sample rate, channelsmoov β†’ trak β†’ mdia β†’ minf β†’ stbl
Sample TablestblSample sizes, chunk offsets, sync samplesmoov β†’ trak β†’ mdia β†’ minf
User DataudtaCustom metadata, copyright, locationmoov or moov β†’ trak
iTunes MetadatailstArtist, title, album, cover art, genre, yearmoov β†’ udta β†’ meta
Free SpacefreePadding bytes (ignored by players)Root or moov
Media DatamdatActual audio/video sample dataRoot
Edit ListelstMedia time offsets, dwell segmentsmoov β†’ trak β†’ edts
Composition OffsetcttsPTS/DTS offset for B-framesstbl
Sync SamplestssKeyframe indicesstbl
Color ParametercolrColor primaries, transfer characteristics, matrixstsd entry
Pixel Aspect RatiopasphSpacing, vSpacingstsd entry
AVC ConfigavcCProfile, level, SPS/PPS NAL unitsstsd β†’ avc1
HEVC ConfighvcCProfile, tier, level, VPS/SPS/PPSstsd β†’ hev1/hvc1
Audio ConfigesdsAAC profile, sample rate, channelsstsd β†’ mp4a
GPS LocationΒ©xyzLatitude, longitude (ISO 6709)udta

Frequently Asked Questions

MP4 files use an epoch starting January 1, 1904, per ISO 14496-12. A raw value of 0 maps to that date. Some encoding tools write 0 when the actual timestamp is unknown. The viewer applies the 2082844800-second offset to convert to a standard date, but if the source wrote garbage data, the output will be unreliable.
The mvhd timescale is a global movie timescale (often 600 or 1000). Each track has its own mdhd timescale matching its media clock - typically 90000 for H.264 video, 44100 or 48000 for AAC audio. Duration in either box must be divided by its respective timescale to get seconds.
Yes, if the recording device (phone, drone, GoPro) wrote a Β©xyz atom inside udta. The value follows ISO 6709 format: a string like +34.0522-118.2437/ representing latitude and longitude in decimal degrees. Not all MP4 files contain this data.
The tkhd box stores the track's presentation dimensions after the transformation matrix is applied. The actual coded resolution sits in the stsd sample entry (e.g., avc1 width/height). If a pasp (pixel aspect ratio) box is present, the display width is adjusted by the ratio hSpacing/vSpacing. This viewer shows both coded and display dimensions.
The viewer calculates average bitrate as file size in bits divided by duration in seconds. This is an overall container-level estimate including all tracks. True per-track bitrate requires parsing every sample size from stsz, which this tool summarizes as sample count. For VBR content, instantaneous bitrate varies significantly from this average.
Fragmented MP4s used in DASH/HLS streaming store samples in moof+mdat pairs rather than a single moov+mdat structure. This tool parses the moov/moof boxes it finds, but track duration and sample counts may be incomplete since each fragment is self-contained. For full analysis of fMP4, concatenate all segments first.