OpenTimelineIO
Editorial interchange format and API
What it is and what it does
OpenTimelineIO is a standardized format and Python library for representing editorial timeline metadata—the sequence, duration, and timing of cuts in a video edit—along with references to external media files. It is not a media container; instead, it focuses on the structural and timing information that describes how clips are arranged. The package includes both a file format specification and a plugin architecture for building adapters that convert between OTIO and proprietary formats used by video editing tools, allowing pipelines to exchange timeline data across different applications.
The library is designed for post-production workflows where editorial decisions need to be shared, versioned, or transformed across multiple tools. It provides a Python API for programmatically reading, creating, and modifying timelines, plus a dependency-less time library (opentime) for handling frame-accurate timing calculations. The package is actively maintained, supports Python 3.9–3.13, and is available as prebuilt wheels for all major platforms.
Use it for:
- Convert editorial timelines between proprietary video editing formats (e.g., Premiere, Final Cut Pro) by writing adapters.
- Programmatically generate or modify video edit sequences in post-production pipelines without manual editing.
- Store and version control editorial decisions as structured metadata separate from media files.
- Build tools that analyze or report on edit structure, timing, and clip relationships.
- Integrate timeline data into asset management or VFX tracking systems.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
OpenTimelineIO provides an interchange format and Python API for representing and manipulating editorial timeline information—the order, length, and timing of cuts—without storing media itself.
Yes, if you work with video editing pipelines or need to interchange timeline metadata across tools. The package is actively maintained, has no runtime dependencies, and is available as prebuilt wheels for modern Python versions. The permissive Apache 2.0 license poses no restrictions. Install friction is moderate but manageable; the main consideration is whether your use case requires writing custom adapters for proprietary formats.
Install
opentimelineio on PyPI
pip
pip install opentimelineiouv
uv add opentimelineiopoetry
poetry add opentimelineioInstalling OpenTimelineIO
Before you install
Medium install friction due to compiled wheels; however, prebuilt binaries are available for Python 3.9–3.13 across macOS (ARM64), Linux (x86_64, aarch64), and Windows. The package is actively maintained with a recent commit on 2026-08-07 and no runtime dependencies to manage.
License in practice
Licensed under Apache 2.0 (permissive), allowing commercial and private use with minimal restrictions; you must include a copy of the license and state significant changes, but there are no copyleft obligations.
Quickstart
pip install opentimelineio
import opentimelineio as otio
timeline = otio.schema.Timeline(name="My Edit")
print(timeline)
Requires Python >3.9.0; prebuilt wheels are available for 3.9–3.13 but older versions will require compilation.
Verify before relying
- Whether the package includes built-in adapters for specific video editing tools or requires separate plugin installation.
- Performance characteristics when working with large or deeply nested timeline structures.
- Whether the opentime library (mentioned as dependency-less) is bundled or distributed separately.
Package facts
| License | Apache 2.0 License (permissive) |
| Python support | supports the current Python release (>3.9.0) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 278 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 142,279/month — #11,215 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: opentimelineio-0.18.1-cp310-cp310-macosx_11_0_arm64.whl; opentimelineio-0.18.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl; opentimelineio-0.18.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; opentimelineio-0.18.1-cp310-cp310-win_amd64.whl; opentimelineio-0.18.1-cp311-cp311-macosx_11_0_arm64.whl; opentimelineio-0.18.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl; opentimelineio-0.18.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; opentimelineio-0.18.1-cp311-cp311-win_amd64.whl; opentimelineio-0.18.1-cp312-cp312-macosx_11_0_arm64.whl; opentimelineio-0.18.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl; opentimelineio-0.18.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; opentimelineio-0.18.1-cp312-cp312-win_amd64.whl; opentimelineio-0.18.1-cp313-cp313-macosx_11_0_arm64.whl; opentimelineio-0.18.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl; opentimelineio-0.18.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; opentimelineio-0.18.1-cp313-cp313-win_amd64.whl; opentimelineio-0.18.1-cp39-cp39-macosx_11_0_arm64.whl; opentimelineio-0.18.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl; opentimelineio-0.18.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl; opentimelineio-0.18.1-cp39-cp39-win_amd64.whl
Keywords: film, tv, editing, editorial, edit, non-linear, edl, time
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
OpenImageIOOpenImageIO reads, writes, and processes images…
permissive · top 15,000 on PyPI
interchangeInterchange provides data types and interchange…
permissive · top 15,000 on PyPI
moviepyMoviePy is a Python library for video editing…
permissive · top 5,000 on PyPI
openhands-aciProvides tools and interfaces for AI agents to…
permissive · top 5,000 on PyPI
scenedetectDetects scene cuts and shot changes in videos,…
permissive · top 5,000 on PyPI
editorOpens your system's default text editor (or a…
permissive · top 5,000 on PyPI
mediafileMediaFile reads and writes metadata tags across…
permissive · top 15,000 on PyPI
pydubPydub provides a high-level Python interface…
permissive · top 5,000 on PyPI
pysubs2pysubs2 loads, edits, and saves subtitle files…
permissive · top 15,000 on PyPI
django-markdownxDjango MarkdownX provides a Markdown editor…
permissive · top 15,000 on PyPI