✳ OMNIVIEWER

Drop an MP4. Any size.

safe · secure · no server · works offline · fast

…or paste a file you copied in Finder, or just start typing at the cursor.

Or try it now

↓ scroll for about & FAQ

Preview

Drop a CSV file, or use the file picker.

View an MP4 file online — without uploading it

OmniViewer opens an MP4 right in your browser. Drop the file and it starts playing immediately; behind the player, the toolkit reads the container the way a video engineer does — the BOXES tab lays out the whole ISO BMFF atom tree (ftyp, moov, mdat and everything inside) with offsets, sizes and plain-language descriptions. There is no upload and no server: the parser reads 16 bytes per box and skips the media data entirely, so a multi‑gigabyte movie is analysed in a handful of tiny reads.

Fix "fast start" — make a video streamable

Many encoders write the moov index after the media data, which forces browsers to download the whole file before playback can begin. OmniViewer detects this and fixes it with one click: the Make streamable button moves moov to the front and patches every stco/co64 chunk offset — the same surgery as qt-faststart or ffmpeg's +faststart, but local, instant, and without touching a single media byte. Curious how that works? Read inside an MP4: boxes, moov vs mdat & why your video won't stream.

Metadata — including the GPS tag you forgot

The METADATA tab reads the iTunes-style tags in moov/udta — title, artist, album, date, encoder — and lets you edit them and download a re-tagged copy (the video is never re-encoded). It also surfaces the ©xyz atom: the GPS position most phones silently embed in every clip. One click removes it. STATS adds codecs, resolution, frame rate, bitrate and a table of every box; the raw and hex views show the actual bytes.

Make a GIF out of it — in the same tab

The GIF tab turns any slice of the video into an animated GIF. Scrub to the moment, set the duration, frame rate, width, colours and loop, and watch the frame count and estimated size update before you commit. The encode runs on a real FFmpeg build compiled to WebAssembly, using its two-pass palettegen/paletteuse recipe — so the GIF is built from the colours your clip actually contains instead of a generic web palette. No upload, no queue, no watermark. Read how we built a fast, private GIF exporter.

MP4, M4V, M4A and MOV

They are all the same container — the ISO Base Media File Format, descended from Apple's QuickTime .mov — so the toolkit opens all of them, and detects the format from the bytes (ftyp), never the extension. Fragmented MP4 (DASH/CMAF) is recognised too, with rewrites safely disabled. Powered by the same engine as fastjsonviewer.com and hugecsv.com; OmniViewer opens every file format.

FAQ

Is my video uploaded anywhere?

No. OmniViewer is a static page with no server-side processing: your MP4 is read directly by your browser and never leaves your computer. Even the fast-start fix and metadata edits happen locally, assembled from byte slices of your original file.

What is an MP4 file, really?

A tree of length-prefixed "boxes" (atoms): ftyp declares the format, moov is a small index holding every track’s codec, timing and byte offsets, and mdat is the actual compressed media. The player never scans mdat — it looks everything up in moov. MP4 is the ISO Base Media File Format, a descendant of Apple’s QuickTime .mov.

Why won’t my MP4 play until it is fully downloaded?

Because its moov index was written after the media data, a browser can’t learn the codecs or find any frame until the download reaches the end. That is the "fast start" problem. OmniViewer’s BOXES tab shows the verdict, and the Make streamable button moves moov to the front while patching every chunk offset.

Does fixing fast start re-encode or reduce quality?

No. The fix is pure byte surgery: the media bytes are copied untouched, only the moov index is rebuilt and the stco/co64 chunk-offset tables are patched to the new layout. Quality is bit-identical, and the rewrite streams — a 20 GB file is never held in memory.

Can I edit an MP4’s metadata?

Yes. The METADATA tab edits the iTunes-style tags (title, artist, album, date, genre and more) stored in moov/udta and downloads a re-tagged copy without re-encoding. It also shows the ©xyz GPS location atom, with a one-click Remove for a clean copy.

Can I convert my MP4 to a GIF?

Yes — the GIF tab does it in the browser. Trim the clip on the scrubber, choose the frame rate, width, palette size, dither and loop count, and the tab encodes it locally with FFmpeg compiled to WebAssembly. There is no upload, no watermark and no account. Because the encoder holds the source in memory, the GIF tab caps the input video at about 512 MB — every other tab still opens a file of any size.

Why do GIFs from other converters look banded?

A GIF frame can use at most 256 colours. A converter that encodes straight from video falls back to a fixed, generic palette, which is what produces the muddy bands. OmniViewer runs FFmpeg’s two-pass recipe instead: palettegen measures the colours your clip actually contains, then paletteuse maps each frame onto that measured palette with the dither you picked.

How large an MP4 can I open?

Effectively unlimited. The box walk reads 16 bytes per box and skips the media data entirely, then parses only the small moov index — so a 20 GB movie costs a handful of tiny reads. Playback, raw and hex views read only the bytes needed on screen.

Does it open MOV, M4V and M4A files too?

Yes. MOV, M4V and M4A use the same ISO BMFF container as MP4, so they get the same toolkit. OmniViewer identifies the format from the ftyp bytes, not the file extension, so a renamed file is detected for what it actually is.

What about fragmented MP4 (DASH/CMAF)?

Fragmented files — a skeleton moov followed by moof+mdat fragments — are detected and shown in the BOXES tree, but relocation rewrites are disabled: fragment offsets can’t survive a box shuffle, and such files are already built for streaming delivery.