Beutl: a .NET compositor with Git history and a plugin marketplace
Cross-platform video editing (compositing) software.
At a glance
- What is it?
- Beutl is a cross-platform video compositing application written in C# on the latest .NET, with keyframe animation, an extension system for effects, objects, codecs and UI, and Git-backed project history. The interesting engineering choice is the licence split: the app is MIT while the FFmpeg worker is a separate GPL executable talking to it over IPC.
- Who is it for?
- Adopt Beutl if you want a compositor whose effects, objects, codecs and UI are supplied by extensions rather than baked into a single application, and if Git-backed history inside the editor is worth having in your pipeline. Do not adopt it if you need a stable release contract today, since the current line is 2.0.0-preview builds, and do not read the MIT licence as covering the shipped binaries, because the FFmpeg worker inside them is GPL.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly C#, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A .NET compositor, and the name explains the scope
Beutl, pronounced /bjútəl/, describes itself as cross-platform video editing software with the parenthetical (compositing). That word choice matters for what to expect. A compositor is a node and layer based tool for building images in time, not a timeline editor for cutting footage, and the feature list matches that reading. The only animation mechanism named is keyframes, described as sufficient for basic animations such as fade-ins and slide-ins and for animating various objects. The application is written in C# on the latest .NET and runs on Windows, Linux and macOS, and the screenshot in the repository is explicitly from a development version rather than a release. The repository also carries the source code of the old version, BEditor, under an old/develop branch, which tells you the current tree is a rewrite rather than a long incremental history. For an evaluator the practical question is whether a node based compositor is the tool your work needs, not whether it is a general purpose video editor.
Git inside the editor: branches, restores and remote backups
The feature that distinguishes Beutl from a typical consumer editor is version control, and the description is unusually concrete. You can track a project's editing history with Git, restore earlier versions, create experimental branches, and back up work to a remote repository from within the application. The mechanism is therefore a Git repository attached to the project rather than an undo stack or a periodic autosave. For compositing work this is a real fit, because a compositing project is a tree of elements and parameters where a single value change can wreck the frame, and a branch per experiment is a natural way to try a look without losing the current one. It also changes the collaboration story: a team can use the same remote the editors already know, and the editor does not need a proprietary format for the history. The trade-off is that Git is a real dependency, and the project does not document in its README how it handles merges between branches, which for a binary or large project directory is the obvious place to look before committing to the approach.
Extensions need an account, and that is the shape of the marketplace
The extension system is the second structural choice. You create a Beutl account to acquire extensions or to publish extensions you have developed, and an extension can add effects, objects, codecs and UI, and more. Two things follow from that sentence. First, the feature surface of the application is not fixed: codecs and UI, which are the expensive and platform-specific parts of a media tool, arrive as plugins rather than as part of the binary you download. Second, acquisition is gated behind an account, so even the free path asks users to register before they can pull in an effect. That is a meaningful difference from an editor that ships everything in the box, and for an organisation with a no-accounts-on-internal-tools policy it is a procurement conversation rather than a technical one. Publishing is also a supported activity, so the project is positioning the extension catalogue as a two-sided ecosystem rather than a fixed feature set.
The effect library is broad and deliberately extendable
Built-in effects run from the basic to the fussy. The documentation names colour filters, blurs, shadows and LUTs at the simple end, and outlines, inner shadows and long shadows as the more elaborate ones, with the note that the range can be expanded through extensions. The interesting part is the layering of that with the extension model: a built-in effect and an extension effect are the same kind of thing from the user's point of view, which is what makes the marketplace viable rather than bolted on. Codecs are also plugin-shaped, so the same mechanism that adds a shadow effect is the one that adds a format the application could not read. A user assembling a pipeline can therefore treat the install as a base plus a set of extensions rather than as a fixed application, and the risk that comes with that model is equally plain: the more of the toolchain you source from extensions, the more your rendering depends on a third party you did not build and cannot audit from the repository.
Beutl.FFmpegWorker is a separate GPL process on purpose
The licensing section of the README is unusually specific and worth reading closely. Beutl itself is licensed under the MIT licence. Beutl.FFmpegWorker is a separate executable that links with GPL-licensed FFmpeg and is distributed under the GNU General Public License v3, under a separate LICENSE.GPL file. It runs as an independent process and communicates with the main application via IPC, so the GPL does not apply to the rest of the codebase. That sentence is the whole design: instead of linking FFmpeg into a C# application and inheriting the GPL across the product, the media work is pushed into a separate process behind an IPC boundary, which keeps the MIT licence on the application code. The repository makes the same point structurally, with LICENSE and LICENSE.GPL side by side and a THIRD_PARTY_NOTICES.md at the root. Anyone shipping a build should read both files, because a distribution containing the worker binary is not a pure MIT distribution even though the application code is.
Building from source: submodules, then a wrapper script
The development instructions are short and the project avoids a global tool dependency. On a fresh checkout you initialise the Git submodules first, because the tree pulls in external code through.gitmodules:
git submodule update --init --recursiveAfter that the application is run from the repository root using the included scripts, which the documentation notes do not require the global Nuke tool to be installed. On macOS and Linux that is:
./build.sh devOn Windows under PowerShell the equivalent is:
.\build.ps1 devThe dev target runs src/Beutl in Debug configuration and automatically selects net10.0-windows on Windows and net10.0 on macOS and Linux, which is how one source tree covers three platforms. If the global Nuke tool is already installed you can instead run nuke dev. The build machinery lives in.nuke/ and nukebuild/ with a Beutl.slnx solution, a global.json pinning the SDK, Directory.Packages.props for central package versions, a.devcontainer/ directory, and a docker/ directory, so containerised and CI builds are part of the setup rather than an afterthought.
The alternative shape: one self-contained binary instead of a marketplace
The realistic alternative to Beutl is not another product name but the other architectural choice: an editor that ships every effect, every codec and every UI panel in one binary, with no account, no extension catalogue and no plugin runtime. The difference in approach is visible in what each one asks of you. The self-contained editor gives you a fixed feature set that either covers your project or does not, and it is trivially auditable because there is nothing to install beyond the application. Beutl trades that for a capability surface you assemble, where the parts you do not have can be added by an extension, at the cost of an account, a dependency on plugin authors, and a licence picture that has to be checked per component rather than per application. The Git-based history is the third axis: an editor built on a project folder can hand that folder to Git directly, while an editor with a proprietary project format and an internal undo stack gives you no such option. Whichever side you come down on, the deciding questions are concrete: does your work need a codec or an effect the base app lacks, and are you willing to source it from an extension catalogue.
Editorial conclusion
Adopt Beutl if you want a compositor whose effects, objects, codecs and UI are supplied by extensions rather than baked into a single application, and if Git-backed history inside the editor is worth having in your pipeline. Do not adopt it if you need a stable release contract today, since the current line is 2.0.0-preview builds, and do not read the MIT licence as covering the shipped binaries, because the FFmpeg worker inside them is GPL. Before you install, read LICENSE and LICENSE.GPL together and confirm the extension account requirement fits your procurement rules, and if you build from source run git submodule update --init --recursive before ./build.sh dev or .\build.ps1 dev.
Frequently asked questions
What licence is Beutl released under?
The main project is licensed under the MIT License. Beutl.FFmpegWorker, a separate executable that links with GPL-licensed FFmpeg, is distributed under the GNU General Public License v3 and communicates with the application over IPC, so the GPL does not apply to the rest of the codebase.
Which operating systems does Beutl run on?
The project states that it uses the latest .NET and supports Windows, Linux and macOS. The build scripts select net10.0-windows on Windows and net10.0 on macOS and Linux.
Do I need a Beutl account to use extensions?
Yes. The documentation says you create a Beutl account to acquire extensions or to publish extensions you have developed, and extensions can add effects, objects, codecs and UI.
Can Beutl track my project edits with Git?
Yes. Version control is a listed feature: you can track a project's editing history with Git, restore earlier versions, create experimental branches and back up work to a remote repository from inside the application.
How do I build Beutl from source?
Initialise the submodules with git submodule update --init --recursive, then run ./build.sh dev on macOS or Linux, or .\build.ps1 dev in PowerShell on Windows. The included scripts do not need the global Nuke tool, though nuke dev works if it is installed.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/b-editor-beutl)Was this useful?