Discover / Video & YouTube

MoviePy

by ZulkoPython

Python library for programmatic video editing and compositing.

Repositoryactive

Maturity: active because commit 149d ago, latest release v2.2.1. Derived from release and commit history, not a rating.

Stars
15k
Forks
2.1k
Downloads / mo
7.9M
Last commit
2026-03-07
License
MIT
Open issues
96

Market and trust evidence

Edition not yet matched

No exact skills.sh identity match is available for this repository. Repository adoption and freshness remain visible above; install momentum is not inferred.

Trust analysis is a screening signal, not a security warranty. Read the ranking and trust methodology.

In practice

Written by AI from this repository’s README · high confidence

Scripting video edits with raw ffmpeg command lines is opaque and awkward to compose programmatically.

Use it when

When you want to script cuts, overlays and effects in Python across common audio and video formats.

Not the right pick when

The README admits it is slower than using ffmpeg directly because of heavier data import and export operations.

Capabilities

  • cuts, concatenations, title insertions and video compositing
  • reads and writes the most common audio and video formats including GIF
  • media converted into numpy arrays so every pixel is accessible
  • mixes clips side by side or layered with transparency
  • runs on Windows, Mac and Linux with Python 3.9+

Requirements

  • Python 3.9+
  • custom FFMPEG setup for some install options

Cost: Free and open source

Install

Derived from the published package name in the repository, not from a model.

Video walkthroughs

Third-party YouTube uploads matched to this tool by title, channel and repository name on 2026-08-03. Not made, reviewed or endorsed by SkillPilot. View counts and publish months are as of the match date and the month is approximate. Nothing loads from YouTube until you press play.

What the repository ships

Has testsHas docsHas examplesDocker imageCI configured

Detected from the actual files in the repository root.

Latest release v2.2.1

Published 2025-05-21

What's Changed

  • handle removed Pillow API by @Zulko in https://github.com/Zulko/moviepy/pull/2443

Full Changelog: https://github.com/Zulko/moviepy/compare/v2.2...v2.2.1

Tags

README

MoviePy

MoviePy page on the Python Package Index Discuss MoviePy on Gitter Build status on gh-actions Code coverage from coveralls.io

[!NOTE]

MoviePy recently upgraded to v2.0, introducing major breaking changes. You can consult the last v1 docs here but beware that v1 is no longer maintained. For more info on how to update your code from v1 to v2, see this guide.

MoviePy (online documentation here) is a Python library for video editing: cuts, concatenations, title insertions, video compositing (a.k.a. non-linear editing), video processing, and creation of custom effects.

MoviePy can read and write all the most common audio and video formats, including GIF, and runs on Windows/Mac/Linux, with Python 3.9+.

Example

In this example we open a video file, select the subclip between 10 and

20 seconds, add a title at the center of the screen, and write the

result to a new file:


from moviepy import VideoFileClip, TextClip, CompositeVideoClip

# Load file example.mp4 and keep only the subclip from 00:00:10 to 00:00:20
# Reduce the audio volume to 80% of its original volume

clip = (
    VideoFileClip("long_examples/example2.mp4")
    .subclipped(10, 20)
    .with_volume_scaled(0.8)
)

# Generate a text clip. You can customize the font, color, etc.
txt_clip = TextClip(
    font="Arial.ttf",
    text="Hello there!",
    font_size=70,
    color='white'
).with_duration(10).with_position('center')

# Overlay the text clip on the first video clip
final_video = CompositeVideoClip([clip, txt_clip])
final_video.write_videofile("result.mp4")

How MoviePy works

Under the hood, MoviePy imports media (video frames, images, sounds) and converts them into Python objects (numpy arrays) so that every pixel becomes accessible, and video or audio effects can be defined in just a few lines of code (see the [built-in effects]() for examples).

The library also provides ways to mix clips together (concatenations, playing clips side by side or on top of each other with transparency, etc.). The final clip is then encoded back into mp4/webm/gif/etc.

This makes MoviePy very flexible and approachable, albeit slower than using ffmpeg directly due to heavier data import/export operations.

Installation

Intall moviepy with pip install moviepy. For additional installation options, such as a custom FFMPEG or for previewing, see this section. For development, clone that repo locally and install with pip install -e .

Documentation

The online documentation (here) is automatically built at every push to the master branch. To build the documentation locally, install the extra dependencies via pip install "moviepy[doc]", then go to the docs folder and run make html.

Contribute

MoviePy is open-source software originally written by

Zulko and released under the MIT licence.

The project is hosted on GitHub,

where everyone is welcome to contribute and open issues or give feedback Please read our [Contributing

Guidelines](https://github.com/Zulko/moviepy/blob/master/CONTRIBUTING.md).

To ask for help or simply discuss usage and examples, use our Reddit channel.

Maintainers

Active maintainers

Past maintainers and thanks

Maintainers wanted! this library has only been kept afloat by the involvement of its maintainers, and there are times where none of us have enough bandwidth. We'd love to hear about developers interested in giving a hand and solving some of the issues (especially the ones that affect you) or reviewing pull requests. Open

an issue or contact us directly if you are interested. Thanks!

Related tools