# HandBrake: the GPL video transcoder built on FFmpeg, x264 and x265

> HandBrake is a multi-platform open source transcoder for turning existing video files and discs into MP4, MKV or WebM. Its documentation lives outside the repository, and the repository itself is the development tree for the Linux, macOS and Windows builds.

**HandBrake/HandBrake** — HandBrake's development repository 

- Repository: https://github.com/HandBrake/HandBrake
- Website: https://handbrake.fr
- Stars: 24,535 · Forks: 1,713
- Language: C
- License: NOASSERTION
- Published: 2026-09-21 · Updated: 2026-09-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/handbrake-handbrake

## What HandBrake is for, and who ends up using it

The README states the purpose plainly: HandBrake takes videos you already have and makes new ones that play on a phone, tablet, TV media player, game console, computer or web browser. That is a narrower job than a general editor. It does not claim to cut, grade or composite; it re-encodes. The inputs it names are broad, covering consumer and professional camera files, phone and tablet footage, game and screen recordings, and DVD or Blu-ray discs. The outputs are MP4, MKV or WebM.

The people who get value from it fall into a few groups. Someone with a library of camera files that will not play on a set-top box. Someone with a screen recording that is too large to send. Someone with a disc and a machine that has no optical drive behaviour they trust. In each case the task is the same shape: read a source, choose a target format, write a new file. The project is not aimed at real-time streaming, at editing timelines, or at anything that needs frame-accurate cutting rather than re-encoding.

## FFmpeg, x264, x265 and SVT-AV1 behind a single transcoding front end

HandBrake is not an encoder. The README says it leverages FFmpeg, x264, x265 and SVT-AV1 to create its outputs. That sentence is the architecture in miniature. FFmpeg handles demuxing and decoding of the source containers and codecs; the encoder libraries handle the compression of the video stream; HandBrake supplies the layer above, which is the job description, the preset system and the platform user interfaces.

The repository layout supports that reading. libhb/ is the transcoding engine, gtk/, macosx/ and win/ are the three platform front ends, preset/ holds the preset definitions, contrib/ holds the third-party dependencies that get built alongside, and test/ holds the test material. The top level configure script, the make/ directory and pkg/ cover the build and packaging side.

A consequence worth stating: when a source file fails to open, or an unusual codec will not decode, the limitation usually sits in the FFmpeg layer rather than in HandBrake's own code. The project inherits both the reach and the gaps of its dependencies. That is a normal arrangement for a transcoder of this kind, but it means bug reports about format support often land in someone else's tracker.

## Installing HandBrake and running a first compression

The README does not give install commands. It says that for information on downloading, building and installing HandBrake you should see the official HandBrake Documentation at handbrake.fr/docs. That is the authoritative place for packaged builds and for build instructions from source. The repository README.markdown is a project front page, not a setup guide, so treat any command you find elsewhere with suspicion until it matches the documentation.

Once a build is installed, the workflow the documentation describes is: open a source, pick a preset, choose a destination, start the encode. The command line interface exposes the same engine as the graphical front ends. The repository ships the preset definitions under preset/, so a source checkout is the ground truth for what a given revision offers, and the documentation is the place to check the exact preset names and encoder options available in your release, because those change between versions. A source file is named as the input, a destination path is named as the output, and one of the shipped presets is selected to define the encoder settings.

## Where HandBrake is the wrong tool

HandBrake re-encodes. Every output is a new generation of compression, and for most sources that means some loss is introduced unless the encoder settings are chosen carefully. If the goal is to change a container without touching the video stream, a remuxing tool is the right instrument and HandBrake is not, because its job is to produce a new encoded stream rather than to repackage an existing one.

The second boundary is the build itself. The README directs readers to handbrake.fr/docs for build and install instructions, which is a signal that building from this repository is a documented, dependency-heavy process rather than a quick compile. The contrib/ directory and the .gitmodules file at the top level indicate that third-party components are pulled in as part of the build. Anyone who wants a transcoding library to link into their own application should look at FFmpeg or the individual encoder libraries directly; HandBrake is an application, and the README describes it as one.

A third case: disc sources. The README lists DVD and Blu-ray discs among the inputs HandBrake works with, but the practical ability to read a disc depends on the platform and on the build. The README does not document per-platform disc handling, so that is a question for the documentation rather than something to assume from the feature list.

## How HandBrake differs from driving FFmpeg yourself

The obvious alternative is FFmpeg on its own. HandBrake uses FFmpeg underneath, so the difference is not codec support but the layer above it. FFmpeg gives you flags; HandBrake gives you presets, a job queue and a graphical interface on Linux, Mac and Windows. If you already know which encoder settings you want and you are scripting a pipeline, FFmpeg is the shorter path, because you are not learning a preset vocabulary on top of the flags you already understand.

If you do not want to reason about encoder settings for each device, HandBrake's preset system is the point. The preset/ directory in the repository is where those definitions live, and the graphical front ends expose them as a list. That is a different kind of product: a curated set of targets for common playback situations rather than a general-purpose command line.

The cost of that curation is that you are working inside someone else's defaults. When a preset does not match your target, you either adjust the advanced options, which puts you back in encoder-flag territory, or you move to FFmpeg. Neither is wrong. It is a question of whether you want the decision made for you.

## Licence, packaging and the cost of keeping up

HandBrake is licensed under the GNU General Public License Version 2, as the README and the LICENSE file state. The repository's licence field is reported as NOASSERTION, which is a metadata artefact rather than a contradiction: the README names GPLv2 explicitly, and the topics list includes gplv2. For anyone embedding the code in another product, the GPLv2 obligations are the thing to read in full, and this article is not legal advice.

The maintenance signal is straightforward. The repository is not archived, and the last push was on 2026-09-19, two days before the date used for this assessment. The most recent release listed is 1.11.2, published on 2026-06-07, preceded by 1.11.1 on 2026-03-22 and 1.11.0 on 2026-03-08. That is a steady release cadence through 2026.

Upgrade cost depends on how you consume it. If you install packaged builds from the documentation site, upgrading is a normal package operation. If you build from this repository, the contrib/ directory and .gitmodules mean dependency versions move with the tree, and a rebuild can pull new encoder versions along with HandBrake itself. The NEWS.markdown file at the top level is where the project records what changed between releases, and it is the first thing to read before moving a production encode pipeline to a new version.

## Conclusion

Adopt HandBrake if you need a GPLv2, multi-platform transcoder that reads consumer camera files, screen recordings and discs, and writes MP4, MKV or WebM through FFmpeg, x264, x265 and SVT-AV1. Do not adopt it as a build dependency or a library: the repository is the application's development tree, and the README points to handbrake.fr/docs for download, build and usage instructions. Before committing, open that documentation and confirm the packaging route for your platform, then check the NEWS.markdown file for the change history around 1.11.2.

## FAQ

### What does HandBrake actually do?

It takes videos you already have and produces new ones that play on phones, tablets, TV media players, game consoles, computers or web browsers. The README lists camera files, phone and tablet footage, screen recordings, and DVD or Blu-ray discs as inputs, and MP4, MKV or WebM as outputs.

### Is HandBrake really free to use?

The README describes HandBrake as open-source and licensed under the GNU General Public License Version 2. The repository topics also include gplv2, and the LICENSE file is at the top level of the repository.

### Is HandBrake available for Mac?

Yes. The README states HandBrake is available for Linux, Mac and Windows, and the repository contains a macosx/ directory alongside gtk/ and win/. The README also carries a macOS build status badge.

### How do I install HandBrake?

The README does not give install steps. It directs readers to the official HandBrake Documentation at handbrake.fr/docs for information on downloading, building and installing.

### How do I use HandBrake to compress a video?

The workflow is to open a source, choose a preset, pick a destination and start the encode. The repository ships preset definitions under preset/, and the documentation covers the exact preset names and encoder options for your release.

## Sources

- [HandBrake/HandBrake on GitHub](https://github.com/HandBrake/HandBrake)
- [Issues](https://github.com/HandBrake/HandBrake/issues)
- [Project website](https://handbrake.fr)
- [README](https://github.com/HandBrake/HandBrake/blob/master/README.md)
- [Releases](https://github.com/HandBrake/HandBrake/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/handbrake-handbrake
