File types · Explainer

The OGV file (.ogv)

An OGV file is a video in the Ogg container, almost always Theora video with Vorbis audio: the royalty-free web video format of the late 2000s, used by Wikipedia and early HTML5 video. This guide explains what's inside one, why current browsers have dropped Theora, and how to play and convert OGV files today.

At a glance

Full name
Ogg video; usually Ogg Theora with Vorbis audio
Extensions
.ogv; older files sometimes use .ogg
MIME type
video/ogg (RFC 5334); application/ogg for mixed or unknown content
Kind
Binary, streamable container; Theora and Vorbis are both lossy
Standard
RFC 3533 (Ogg) and RFC 5334 (media types); Theora and Vorbis specifications from the Xiph.Org Foundation
First released
Theora's bitstream was frozen in 2004, based on On2's VP3; libtheora 1.0 was released in November 2008
Common codecs
Video: Theora (rarely VP8 or Dirac). Audio: Vorbis, sometimes Opus or FLAC
Opens with
VLC, mpv, FFmpeg-based players. Current Chrome, Edge, Firefox and Safari don't decode Theora
Magic number
4F 67 67 53 (OggS) at byte 0; the first packet starts 80 74 68 65 6F 72 61 (\x80theora)
Patents and licence
Designed to be royalty-free; reference libraries under BSD-style licences

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.

In short

OGV is a historical format. WebM, launched in 2010 with VP8 and now carrying VP9 and AV1, replaced it as the open web video format, and browsers have since removed Theora. Convert OGV files to WebM or MP4 to show them on the web.

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 (pages)
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. 14F 67 67 53 00 02

    The page header

    OggS, version 0, and the flag 02: the first page (BOS, beginning of stream) of a logical stream. Every page starts with OggS, so a player can resynchronise anywhere in the file. The page structure is the same as in an Ogg audio file.

  2. 2DA 02 58 C3

    The serial number

    Identifies the logical stream: C35802DA is 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. 319 EC 19 2E · 01 2A

    Checksum and segment table

    A CRC-32 of the page, then one segment of 42 bytes (2A): the Theora identification header.

  4. 480 74 68 65 6F 72 61 · 03 02 01

    The Theora identification header

    Packet type 80 and theora, 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. 500 14 00 0F · 00 01 40 00 00 F0

    Picture 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. 600 00 00 19 00 00 00 01

    Frame 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. 77C C0

    Quality, 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. 8granule 64, 71, 78 … 88

    Theora 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. 9pages 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. 10EOS

    The 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.

BrowserOgg Theora videoOgg audio (Vorbis, Opus)
Chrome, EdgeNo: removed in early 2024Yes
FirefoxNo: removed in 2024Yes
SafariNever supportedFrom Safari 18.4 (2025)
Chrome on AndroidNever supportedYes

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)WebMMP4
ContainerOgg pagesMatroska subset (EBML)ISO base media boxes
Video codecsTheoraVP8, VP9, AV1H.264, HEVC, AV1
Audio codecsVorbis, OpusVorbis, OpusAAC, others
Royalty-freeYesYesH.264 and HEVC are patent-licensed
CompressionOldest; largest files for the qualityGood (VP9) to best (AV1)Good (H.264) to best (AV1)
Plays in current browsersNoYes, everywhereYes, 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.ogv shows the streams; ogginfo from 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.
terminal
# 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.webm

Re-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 .ogg file has a picture: older video files used .ogg before 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

Last reviewed 27 October 2026.