A next-generation video editor that inherits and surpasses AviUtl
Important
This repository is a fork of taisho-guy/NeoUtl. In late May 2026, the original author decided to reset development — the main branch now hosts a new NeoUtl built on Rust + Slint + wgpu, while the Qt Quick-based version was moved to the aviqtl branch (referred to as AviQtl). I (GT610), an early core contributor to the original project, continue the Qt Quick path here as AviQtl-Plus.
As a result, three NeoUtl-related projects now exist in parallel:
The original author identified these fundamental issues with Qt Quick:
- Qt Quick's resource management is incompatible with Compute Shaders, making implementation difficult
- Similarly, it conflicts with ECS architecture, hindering optimization
- Performance concerns for real-time processing
The original author has now moved to a new technology stack using Rust + Slint + wgpu, abandoning the Qt Widgets + SDL3 + bgfx approach that was initially planned.
Building on the insights gained from the original project, AviQtl-Plus tackles these challenges:
- Compute Shader integration: Circumventing Qt Quick's constraints to leverage GPU compute for high-performance effects processing
- ECS architecture optimization: Maximizing the benefits of data-oriented design while resolving friction with Qt Quick
- Real-time performance: Eliminating preview rendering bottlenecks to deliver a smooth editing experience
The vision remains unchanged: a video editor that inherits and surpasses AviUtl. We believe the Qt Quick + QRhi + ECS approach is a viable and valuable path — one we are committed to maturing into a practical, everyday editing tool.
The original author has already acted on their plan — the new main branch is being rebuilt from scratch with Rust + Slint + wgpu, reflecting their conviction that Qt Quick is not the right foundation for the compute-shader-heavy future they envision. They have stated that PRs will not be accepted during the initial core implementation phase.
The old Qt Quick source code remains available on the aviqtl branch, and the original author explicitly recommends AviQtl-Plus to users who prefer the Qt Quick approach.
The original author and I maintain a friendly relationship. If any of our contributions from AviQtl-Plus prove applicable to the new NeoUtl (Rust + Slint + wgpu), I will gladly submit them upstream. Similarly, I hope that innovations from both projects can cross-pollinate over time — ultimately benefiting all users who seek a modern, powerful, and intuitive AviUtl successor.
What is AviQtl-Plus?
A project to develop a video editor that inherits the operability of AviUtl 1.10 & ExEdit 0.92 while delivering performance that surpasses AviUtl.
See AviUtl Operability Targets for the editing-model compatibility goals that guide AviQtl-Plus development.
- UI closely resembling AviUtl
- Fast and powerful GPU-accelerated effects
- Support for audio effects such as VST3 and LV2
- LuaJIT plugin system with package management, declarative parameters, and permission control
- Cross-platform: Linux, Windows, macOS
- On Linux, install the following dependencies:
- Qt6, LuaJIT, Vulkan implementation (e.g. Mesa), FFmpeg, Carla, clang (provides libc++)
- Download the optimal build for your system from the Releases page.
- Extract the archive, grant execute permission to
AviQtl, and run it.
Note
Linux users require an up-to-date environment equivalent to Arch Linux. Users of other distributions such as Ubuntu are strongly recommended to create an Arch Linux container with Distrobox and run AviQtl inside it.
BUILD.py automatically detects the build target from the current OS and installs all dependencies. Normally python3 BUILD.py alone suffices.
The build currently uses Qt private modules (CorePrivate, GuiPrivate, and
ShaderToolsPrivate) for ZIP handling, QRhi integration, and shader tooling.
Build and runtime Qt patch versions must therefore match; distributors should
rebuild AviQtl-Plus whenever their Qt packages are upgraded.
Maintainers should follow the Release Checklist before creating a version tag.
git clone https://github.com/GT-610/AviQtl-Plus.git
cd AviQtl-PlusLinux
On Linux, the build environment is isolated using a distrobox/podman container by default.
- Install dependencies
- Pacman:
sudo pacman -S --needed distrobox podman python git - APT:
sudo apt install distrobox podman python3 git - DNF:
sudo dnf install distrobox podman python3 git
- Pacman:
- Build
python3 BUILD.py --arch
- Run
./build/AviQtl
macOS
On macOS, BUILD.py checks and installs dependencies via Homebrew (CMake, Ninja, Qt6, etc.), then runs macdeployqt and codesign to create a .app bundle.
- Install dependencies
brew install python git
- Build
python3 BUILD.py --xcode
- Run
open ./build/AviQtl.app
Windows (MSYS2)
- Install dependencies
pacman -S git mingw-w64-ucrt-x86_64-python
- Build
python3 BUILD.py --msys2
- Run
./build/AviQtl.exe
Windows (MSVC - Not recommended)
MSVC builds are not recommended due to the complexity of environment setup.
- Additional prerequisites
- Visual Studio 2022 Build Tools with C++ toolset
- Official Qt MSVC x64 build (e.g.
msvc2022_64) - vcpkg (can be specified via
VCPKG_ROOTenv var;BUILD.pywill attempt to fetch it if not found)
- Build
python3 BUILD.py --msvc --qt-dir <Qt installation directory>- If
--qt-diris omitted, automatic detection fromQT_MSVC_DIRetc. is attempted.
- Run
.\build\AviQtl.exe
AviQtl-Plus features a modular effect system. The effect-packages/ directory contains ready-to-use effect packs that demonstrate the extension system:
| Package | Type | Contents |
|---|---|---|
| stylize-effects | Effect | Glitch, pixel sorting, chromatic aberration, mosaic, noise, emboss, raster |
| advanced-blur | Effect | Lens blur, radial blur, directional blur, motion blur |
| weather-objects | Object | Rain, snow animations |
These packages serve as both useful additions and developer references for creating custom effects. See effect-packages/README.md for details.
Note
The following Q&A reflects the original author's (taisho-guy) personal views and development history.
What motivated the development?
It started with AviUtl not running on Linux. Maintaining a Windows environment solely for AviUtl was unacceptable.
Regardless of the reason, many users continue using AviUtl reluctantly. The ecosystem, bloated by years of extensions like a "Howl's Moving Castle", is hard to let go of despite the dissatisfaction.
During a research project at Kagoshima Prefectural Konan High School, I decided to develop NeoUtl independently to solve this problem.
- Personal goal: Produce music videos using only NeoUtl on Linux, without juggling Domino, VocalShifter, REAPER, and AviUtl.
- NeoUtl's mission: To be the optimal solution for those who use AviUtl reluctantly.
Why develop an AviUtl clone?
AviQtl-Plus is not a "reinvention of AviUtl". While it is strongly inspired by AviUtl, its internals are entirely different.
| Item | AviQtl-Plus | ExEdit0 | ExEdit2 |
|---|---|---|---|
| Core technology | Qt6 | Win32 API | Win32 API |
| Parallelism model | Data-driven (ECS) | Single-threaded | Multi-threaded |
| Memory space | 64-bit | 32-bit (max 4GB) | 64-bit |
| Preview rendering | Vulkan / Metal / DX12 | GDI | DX11 |
| Audio engine | Carla (VST3/LV2 etc.) | Built-in only | Built-in only |
| Plugin system | LuaJIT / C++ / QML / GLSL | Lua / C++ | LuaJIT / C++ |
| Supported OS | Linux, Windows, macOS | Windows | Windows |
AviQtl-Plus fundamentally resolves structural weaknesses:
- Data-oriented design with ECS (Entity Component System): Maximizes CPU cache efficiency, accelerating processing of large numbers of objects.
- Modern memory management: Adopts C++23 smart pointers, structurally minimizing unexplained crashes.
- Separation of UI and rendering: Timeline operations are not blocked during heavy rendering, and the UI remains crisp in High-DPI environments.
Origin of the name and icon?
The name is a portmanteau of "AviUtl" and "Qt". The icon is a design combining the Qt and AviUtl logos.
Can I use AviUtl plugins?
No. The mechanisms differ, so there is no compatibility. There are no plans to implement a compatibility layer either.
Note
The following Q&A reflects the perspective of AviQtl-Plus maintainer (GT610).
Why continue AviQtl-Plus development?
The original project was suspended due to genuine technical difficulties with Qt Quick — but it also proved that Qt + FFmpeg can rapidly produce a high-quality video editor prototype. The architecture is well-designed, the foundation is solid, and I believe the Qt Quick route is still worth pursuing, especially now that QRhi provides a viable compute shader path that wasn't fully explored.
As an early core contributor, I've seen the project's potential firsthand. I'm picking up where the original author left off, not just to keep the code alive, but to see the original vision through — a video editor that inherits AviUtl's operability while surpassing its performance.
What is the roadmap for AviQtl-Plus?
Completed (0.3.0):
- LuaJIT plugin system with lifecycle hooks, declarative parameters, and fine-grained permission control
- Package manager for installing/updating plugins, effects, and objects from remote repositories
- 24 unit tests covering core, engine, scripting, and plugin subsystems
- CI via GitHub Actions (build + static analysis)
Completed (0.3.1-0.3.2):
- Thread-safe audio processing with lock-free shared pointers and keyframe evaluation optimization
- HDR output, opacity, and multi-pass dispatch for Compute Shader effects
- Transition effects (Dissolve, Slide, WipeCircle)
- Audio plugin keyframe editing and mixer panel UI
- Effect schema documentation and sepia effect example
- Hardcoded constant extraction and log standardization
- Object JSON/QML naming consistency alignment
- macOS build and packaging fixes (atomic shared_ptr, carla-discovery-native RPATH)
Completed (0.4.0):
- GPU compute shader optimizations: SRB pre-allocation, fine-grained dirty flags, separable blur, bitonic sort
- BorderBlur O(n²) → O(2n) with edge-detect blend and aspect ratio control
- Multi-pass ping-pong correctness for 3+ pass dispatches
Completed (0.5.x):
- End-to-end daily editing, missing-media recovery, and atomic project saves
- Unified searchable object/effect catalog with package provenance
- Real QML composition capture and encoded MP4 verification
- Large-timeline virtualization and continuous zoom performance fixtures
- Video decoder GOP/frame-cache lifecycle and eviction coverage
- Linux, macOS, and Windows release builds with platform test steps
- Consistently green release baseline and version validation
- Independent autosave snapshots and startup crash recovery for multiple projects
Next (0.5.9+):
- Measure representative long-video, long-audio, and plugin-scanning workloads
- Continue workflow-level usability hardening with real editing projects
Long-term:
- Full-featured video editor suitable as an AviUtl replacement
- Potential rebranding (name and logo) to reflect the independent direction of the project
- Continue monitoring the new NeoUtl's progress and explore cross-pollination opportunities between projects
The project is entirely driven by personal motivation — there are no deadlines or commercial pressures. Progress will be steady but paced.
How is AviQtl-Plus different from the original project?
The technical direction remains largely the same (Qt Quick + QRhi + ECS), but AviQtl-Plus places greater emphasis on:
- Incremental deliverability: getting a basic but usable editing workflow out the door, rather than pursuing architectural perfection upfront
- Pragmatic problem-solving: working within Qt Quick's constraints rather than treating them as blockers
- Community transparency: clear documentation of the fork relationship, plans, and long-term intentions
Once the project reaches a usable state, a rename and rebranding are likely to clearly distinguish it from the original project.
AviQtl-Plus stands on the shoulders of many wonderful projects.
| Project | License | Role |
|---|---|---|
| AviUtl | Non-free | Respected origin |
| AviQtl | AGPLv3 | Original Qt Quick project; aviqtl branch of the upstream |
| NeoUtl | AGPLv3 | New Rust + Slint + wgpu version by the original author |
| AviQtl-Plus | AGPLv3 | This project — continued Qt Quick + QRhi + ECS development |
| Carla | GPLv2+ | Audio effect host (VST3/LV2 etc.) |
| FFmpeg | GPLv2+ | Video/audio decoding & encoding |
| LuaJIT | MIT | High-performance script engine |
| Qt | GPLv3 | UI/UX framework |
| Zrythm | AGPLv3 | Reference for audio plugin implementation |
| Remix Icon | Remix Icon License | Symbol icons |
AviQtl-Plus is released under the GNU Affero General Public License.
Remix Icon used within AviQtl-Plus is provided under the Remix Icon License.