The basics
What is an OGV file?
OGV is the extension for video in the Ogg container from the Xiph.Org Foundation, the non-profit behind Vorbis, Opus and FLAC. The video inside is almost always Theora, Xiph's royalty-free video codec, with Vorbis audio. RFC 5334 set the extension and the media type video/ogg in 2008; before that, Ogg video files often used .ogg too.
Theora began as VP3, a codec from On2 Technologies. On2 released VP3 as open source in 2001 and handed it to Xiph in 2002; Xiph froze the Theora bitstream in 2004 and released libtheora 1.0 in November 2008. When HTML5 introduced the <video> element, Firefox (from version 3.5 in 2009), Chrome and Opera supported Ogg Theora as a format anyone could use without patent licences. Wikipedia and its sister sites used Ogg Theora with Vorbis for their video, with a player that only handled Ogg until WebM support arrived in 2012.
Anatomy
What's inside an OGV file
An OGV file is a sequence of Ogg pages, each starting with OggS and a 27-byte header. Video and audio are separate logical streams with their own serial numbers, and their pages are interleaved. Here is the page layout of a 1-second Theora + Vorbis file we made for this page with FFmpeg, with the real bytes of the first page. It isn't offered for download. Multi-byte numbers in the page header are little-endian; those in the Theora header are big-endian.
tiny.ogv: 1 second, 320×240 Theora at 25 fps + Vorbis stereo
offset size stream page granule flags contents
0 70 video 0 0 BOS Theora identification header
4F 67 67 53 00 02 00 00 00 00 00 00 00 00 DA 02 58 C3
00 00 00 00 19 EC 19 2E 01 2A
80 74 68 65 6F 72 61 03 02 01 00 14 00 0F 00 01 40 00 00 F0
00 00 00 00 00 19 00 00 00 01 00 00 01 00 00 01 00 00 00 00 7C C0
70 58 audio 0 0 BOS Vorbis identification header
128 3,326 video 1 0 Theora comment + setup headers
3,454 3,958 audio 1 0 Vorbis comment + setup headers
7,412 7,106 video 2 64 frame 1, a keyframe
14,518 794 audio 2 11,840 audio to sample 11,840
15,312 13,527 video 3 71 frames 2 to 8
28,839 680 audio 3 23,104
29,519 13,684 video 4 78 frames 9 to 15
43,203 679 audio 4 34,368
43,882 14,835 video 5 85 frames 16 to 22
58,717 5,796 video 6 88 EOS frames 23 to 25
64,513 743 audio 5 44,100 EOS 1.000 s at 44,100 Hz
65,256 end of file- 1
4F 67 67 53 00 02The page header
OggS, version 0, and the flag02: the first page (BOS, beginning of stream) of a logical stream. Every page starts withOggS, so a player can resynchronise anywhere in the file. The page structure is the same as in an Ogg audio file. - 2
DA 02 58 C3The serial number
Identifies the logical stream:
C35802DAis the video, and the next page, with its own serial, is the audio. Ogg calls this grouping: streams that play together, each in its own pages, interleaved by time. - 3
19 EC 19 2E · 01 2AChecksum and segment table
A CRC-32 of the page, then one segment of 42 bytes (
2A): the Theora identification header. - 4
80 74 68 65 6F 72 61 · 03 02 01The Theora identification header
Packet type
80andtheora, then the bitstream version, 3.2.1. The specification requires each stream's identification header to be alone on its first page, and all the BOS pages to come before any other page. - 5
00 14 00 0F · 00 01 40 00 00 F0Picture size
The frame in 16×16 macroblocks (20 × 15), then the visible picture: 320 × 240 pixels. Theora pictures can be smaller than the coded frame, which is how sizes that aren't multiples of 16 are stored.
- 6
00 00 00 19 00 00 00 01Frame rate
A fraction, 25/1, so 25 frames per second. The next fields are the pixel aspect ratio (1:1), the colour space and a nominal bit rate (0: not given).
- 7
7C C0Quality, keyframe shift and pixel format
Packed bits: a quality hint, a keyframe granule shift of 6, and the pixel format, 4:2:0. The shift explains the granule positions below.
- 8
granule 64, 71, 78 … 88Theora granule positions
Each video page's granule position is split in two: the upper bits count keyframes, the lower 6 bits count frames since the last keyframe. 64 is keyframe 1 plus 0, 71 is 64 + 7, and the last page's 88 means frame 25. A player seeking in the file can find the nearest keyframe from this number alone.
- 9
pages 1 (video and audio)The other headers
Each stream has two more header packets: a comment header with tags (
\x81theora,\x03vorbis) and a setup header with the decoder tables. The data pages start only after all headers. - 10
EOSThe last pages
Each stream ends with an end-of-stream page. The audio's final granule position, 44,100, is exactly one second at 44.1 kHz.
Under the hood
How Ogg video works
An Ogg file is pages all the way through. Each logical stream, one for video and one for audio, is cut into pages, and the pages of all streams are interleaved in time order. There's no index: players find their way with the granule position on each page, as in Ogg audio files.
- Headers first. Each stream starts with a page holding only its identification header, flagged BOS. All BOS pages come first, so a player knows every stream before any media arrives. Then come the comment and setup headers.
- Granule positions. For Theora, the number encodes the last keyframe and the frames since, using the keyframe granule shift from the header. For Vorbis it's the sample count. The container itself doesn't know about seconds.
- Duration and seeking. Without an index, a player finds the duration by reading the last page, and seeks by a bisection search through the file. Over the web, that means extra range requests, and slow or impossible seeking if the server doesn't support them.
- Skeleton. Some files add an Ogg Skeleton stream (
fishead) with metadata about the other streams and, in later versions, keyframe indexes to speed up seeking. Most files don't have one.
Theora itself is a block-based codec of the same generation as MPEG-4 Part 2: it has keyframes and predicted frames but no B-frames, and only 8 bits per colour component. At the same bit rate it gives noticeably lower quality than H.264, VP9 or AV1.
On the web
Which browsers play OGV files?
Theora was one of the first video codecs on the open web, and it's now gone from all major browsers. Chrome announced its removal in October 2023, citing low use and the security risk of keeping a complex, little-used decoder; Theora was switched off by default from Chrome 120 and the code removed in Chrome 123, in early 2024. Edge, built on Chromium, followed. Firefox dropped Theora during 2024. Safari never supported it.
| Browser | Ogg Theora video | Ogg audio (Vorbis, Opus) |
|---|---|---|
| Chrome, Edge | No: removed in early 2024 | Yes |
| Firefox | No: removed in 2024 | Yes |
| Safari | Never supported | From Safari 18.4 (2025) |
| Chrome on Android | Never supported | Yes |
The Ogg container itself stays supported for audio, so an .ogv file may still play its Vorbis sound with no picture, or not at all. Sites that still need to play Theora can use ogv.js, a JavaScript and WebAssembly decoder, but converting the files is the lasting fix.
Related formats
OGV vs WebM and MP4
| OGV (Ogg Theora) | WebM | MP4 | |
|---|---|---|---|
| Container | Ogg pages | Matroska subset (EBML) | ISO base media boxes |
| Video codecs | Theora | VP8, VP9, AV1 | H.264, HEVC, AV1 |
| Audio codecs | Vorbis, Opus | Vorbis, Opus | AAC, others |
| Royalty-free | Yes | Yes | H.264 and HEVC are patent-licensed |
| Compression | Oldest; largest files for the quality | Good (VP9) to best (AV1) | Good (H.264) to best (AV1) |
| Plays in current browsers | No | Yes, everywhere | Yes, everywhere |
WebM is the natural successor: it's the same idea, royalty-free video for the web, and keeps Vorbis audio usable without re-encoding. Wikimedia Commons now prefers VP9 video in WebM for uploads, though it still accepts Ogg Theora files.
How to
How to play and convert an OGV file
- Play it: VLC and mpv on Windows, macOS, Linux, Android and iOS play Ogg Theora. So does anything built on FFmpeg.
- Inspect it:
ffprobe in.ogvshows the streams;ogginfofrom vorbis-tools checks the page structure and reports errors. - Edit it: convert first. Few editors import Theora, and those that do may struggle to seek without an index.
# OGV to WebM (VP9 + Opus): stays royalty-free
ffmpeg -i in.ogv -c:v libvpx-vp9 -crf 32 -b:v 0 -row-mt 1 -c:a libopus -b:a 96k out.webm
# OGV to MP4 (H.264 + AAC): plays on every device
ffmpeg -i in.ogv -c:v libx264 -crf 20 -pix_fmt yuv420p -c:a aac -movflags +faststart out.mp4
# keep the Vorbis audio as it is, in WebM
ffmpeg -i in.ogv -c:v libvpx-vp9 -crf 32 -b:v 0 -c:a copy out.webmRe-encoding Theora loses a little quality, but Theora files are usually low-resolution and modest bit rate, so the new copy can be much smaller at the same quality. Keep the original if it's an archive copy.
Troubleshooting
Common OGV problems
- A page that used to show video now shows nothing: the browser removed Theora. Re-encode the file to WebM or MP4 and update the
<video>source. - Sound but no picture in a browser: the browser plays the Vorbis stream but can't decode Theora. Same fix.
- No duration, or the seek bar doesn't work: the player couldn't read the last page, often because the server doesn't support range requests, or the file was cut off before its end-of-stream pages.
- Won't open after trimming: Theora and Vorbis both need their three header packets. Cut with a tool that understands Ogg, such as FFmpeg, which writes the headers again.
- An
.oggfile has a picture: older video files used.oggbefore RFC 5334 introduced.ogv. Rename it, or just play it in VLC.
Security
Is an OGV file safe?
An OGV file holds only video, audio and tags; it can't run code. The real risk is the one Chrome gave for removing Theora: an old, rarely used decoder is a target for crafted files that exploit its bugs. If you still process Theora on a server, keep FFmpeg or libtheora updated, or convert files once and stop accepting the format. Tags are plain Vorbis comments, so check them for names or notes before publishing.
Sample files
There are no sample OGV files on this page. To make one for testing, run ffmpeg -f lavfi -i testsrc2=duration=5:size=640x360:rate=30 -f lavfi -i sine=frequency=440:duration=5 -c:v libtheora -q:v 6 -c:a libvorbis test.ogv, and play it in VLC, since current browsers can't decode Theora.
Put it online
Have an OGV file? Give it a link.
Drop an OGV on 99helpers and it gets its own address. The link opens in the browser's video player, but current Chrome, Edge, Firefox and Safari no longer decode Theora video, so convert it to WebM or MP4 if people should watch it in the browser.
Questions
OGV files, frequently asked
What is an OGV file?
A video in the Ogg container, almost always Theora video with Vorbis audio. It was the royalty-free web video format of the late 2000s, used by Wikipedia and early HTML5 sites.
How do I play an OGV file?
Use VLC or mpv, on any desktop or phone. Current versions of Chrome, Edge, Firefox and Safari can't decode Theora video.
Why doesn't my OGV play in Chrome any more?
Chrome removed Theora support in early 2024 (switched off from version 120, deleted in 123), citing low use and security risk. Firefox removed it later in 2024. Convert the file to WebM or MP4.
How do I convert OGV to MP4?
Use HandBrake, or ffmpeg -i in.ogv -c:v libx264 -crf 20 -pix_fmt yuv420p -c:a aac out.mp4. For a royalty-free alternative, convert to WebM with VP9 and Opus.
What's the difference between OGV and OGG?
Both are Ogg files. .ogv is for Ogg with video; .ogg is traditionally Ogg Vorbis audio. Some older video files use .ogg too.
What's the difference between OGV and WebM?
Both are royalty-free web video formats. OGV uses the Ogg container with Theora; WebM uses a Matroska-based container with VP8, VP9 or AV1, which compress much better and play in every current browser.
Should I still make OGV files?
No. Theora is a legacy codec: MDN no longer recommends it, browsers have removed it, and even Wikimedia Commons prefers VP9 in WebM for new uploads. Use WebM or MP4.
Related formats
Other file types explained
Keep going
Related
Sources
- RFC 5334: Ogg Media Types
- MDN: Web video codec guide (Theora)
- Chromium blink-dev: Intent to deprecate and remove Theora
- Xiph.Org: Theora 1.0 release
- LWN: Wikimedia's new HTML5 media player (2012)
- Wikimedia Commons: Video
Last reviewed 27 October 2026.