# Upscayl needs a Vulkan GPU, and its newest release is from December 2024

> Upscayl is an AGPL-3.0 desktop image upscaler for Linux, macOS and Windows, wrapping Real-ESRGAN models behind a separate NCNN and Vulkan backend, upscayl-ncnn. Two things dominate any evaluation: the hardware requirement is a Vulkan-capable GPU, with most integrated graphics excluded, and the newest tagged release is v2.15.0 from 2024-12-25 while the branch has been pushed to as recently as 2026-09-15.

**upscayl/upscayl** — Upscayl - #1 Free and Open Source AI Image Upscaler for Linux, MacOS and Windows.

- Repository: https://github.com/upscayl/upscayl
- Website: https://upscayl.org
- Stars: 49,920 · Forks: 2,530
- Language: TypeScript
- License: AGPL-3.0
- Published: 2026-08-04 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/upscayl-upscayl

## A Vulkan GPU is the whole prerequisite, and iGPUs are out

The most important line on the page is an admonition, not a feature: you need a Vulkan compatible GPU to upscale images, and many integrated graphics do not work. The FAQ repeats it in harder terms, saying NCNN Vulkan requires a Vulkan-compatible GPU and that Upscayl will not work with most iGPUs or CPUs. That rules out a large class of machines before any code runs, including headless servers, most VMs, and laptops with Intel integrated graphics. There is a partial escape hatch: a contributor provided a workaround for Windows and Linux in issue 390, and the same entry notes that nobody knows how to do the equivalent for the macOS and Haiku frameworks. So the practical test is cheap. Run something Vulkan on the target machine before you download anything, and treat the Linux and Windows workaround as a last resort rather than a supported path.

## The newest tagged release is v2.15.0 from 2024-12-25

Read the release list and the version in the manifest together. The tags are v2.15.0 on 2024-12-25, described as a New Year update, a v2.15.0 pre-release on 2024-12-19, and v2.11.5 on 2024-06-01. The manifest still says version 2.15.0, and the banner at the top of the page still announces v2.15 as the current download. Meanwhile the last push to main is dated 2026-09-15. The repository is not archived, so the code is being worked on, but the downloadable artefact is close to two years behind the branch. For a desktop tool that talks to a separately versioned backend binary, that gap is not academic: if a fix exists, it may be in the tree rather than in the build your users can download.

## Five Linux sources, and the AppImage needs a permissions toggle

Linux is the platform with the most routes, and each one updates differently. The page links Flathub, an AppImage build, an AUR package named upscayl-bin, a Snapcraft listing, and a third-party set of ebuilds maintained outside the project, and it notes that most distributions should carry it in their software listings. The portable route is spelled out as three manual steps: download upscayl-x.x.x-linux.AppImage, open its Permissions tab and tick allow file to execute, then double click it. The same paragraph mentions RPM for Fedora, DEB for Debian and Ubuntu based systems, and ZIP for any x86 Linux. Five sources means five update cadences, and one of them is maintained by somebody else, so decide up front which one your fleet will track.

## Both desktop installs start with overriding a system warning

The Windows instructions are six steps, and two of them are about a security dialog. You download upscayl-x.x.x-win.exe, launch it, and if SmartScreen warns you, click More Info and then Run Anyway, or press YES on the unverified publisher dialog. macOS has the equivalent shape: download upscayl-x.x.x-mac.dmg, drag the app into Applications, then right click it, choose Open, and press Open again in the window that appears. A Mac App Store build is linked as well, which is a different distribution path from the direct download. The build tree has a notarize.js script and separate App Store configuration files, so signing work exists in the project, yet the documented first run on both desktop platforms is a manual override of the operating system's warning about the binary.

## Batch mode post-processes after every image is upscaled

One FAQ entry describes a failure mode worth knowing before you point it at a folder. If a model does not support an action, Upscayl finishes upscaling all the images first and only then post-processes them, so stopping the job early leaves files that were never processed, never compressed, or left at the wrong scale. The stated advice is to wait for the process to finish. Two consequences for an unattended run. Interrupting is the one thing you must not do, because the output looks broken rather than incomplete. And a model that does not support the action you picked is not reported until the end of the batch, so a long queue can complete with every file unprocessed and you learn about it from the log rather than from a prompt.

## The backend is a second repository, and the weights carry their own licence

Upscayl is the desktop shell; the work happens in upscayl-ncnn, which the FAQ describes as fully open source under the AGPLv3 licence and also names as the CLI tool. The technique is Real-ESRGAN running over Vulkan, and the FAQ is blunt about the mechanism: the models enhance an image by guessing what the details could be. That guess has consequences for licensing and for assets. The tree holds a Real-ESRGAN_LICENSE.txt next to the project's own LICENSE, a models directory, a separate repository for custom models, and a wiki page for converting your own models, so a model you bring from elsewhere arrives with its own terms. There is also a shell script in the root for updating the upscayl-ncnn binaries, which means the app build and its backend build are versioned separately and can disagree.

## Development runs from source with Volta, and publishing needs a token

The development section is short and assumes you read it in order. It recommends Volta for installing Node.js, so install Volta and then run volta install node, which pins the toolchain for the project instead of your shell. Then the run sequence is four lines:

```sh
git clone https://github.com/upscayl/upscayl
cd upscayl

# INSTALL DEPENDENCIES
npm install

# RUN THE DEVELOPMENT SERVER LOCALLY
## YOUR LOGS WILL NOW APPEAR IN THE TERMINAL
npm run start
```

A note covers the people who would rather not install git: download the source zip, extract it to a directory named upscayl, and carry on with the rest. Packaging is a separate path, npm run dist for a local build and npm run publish-app for a release, where the comment above the last line is explicit that GH_TOKEN has to be set in the shell and that only a maintainer should do it. So a first-time contributor needs Node, git or a zip, and the full Electron toolchain behind them. The roadmap on the page is two items, fix bugs and make the whole world use FOSS, the second marked as work in progress, and contributions are taken as issues, code fixes, features or donations.

## One source tree, a Next.js renderer, and eight package formats

The shape of the app is in the manifest. The entry point is export/electron/index.js, the start script is tsc followed by electron ., and the build script compiles, runs a schema validation step and then builds the renderer with next build, so the interface is a Next.js application inside Electron, configured by next.config.js, tailwind.config.js and components.json. Packaging runs through electron-builder, and there are separate targets for AppImage, flatpak, deb, rpm, zip, a universal mac zip and a dmg, with a flatpak/ directory and App Store configuration files in the tree for the sandboxed routes. The dist targets all set cross-env DEBUG=* while electron-builder runs. For a contributor this means a single tree produces eight kinds of artefact plus a store build, and knowing which one you tested is part of the work.

## Conclusion

Adopt Upscayl when you have a discrete Vulkan-capable GPU and a folder of low-resolution or pixelated images, because the backend is genuinely open source and the model list is extensible with your own conversions. Do not adopt it for blurred or out-of-focus photographs, where the project's own FAQ says it is the wrong tool, since it enhances resolution and cannot de-blur or adjust focus. Verify four things before you install. Check the GPU first, since NCNN Vulkan will not run on most iGPUs or CPUs and the only workaround described is for Windows and Linux. Decide which Linux source you trust, because there are five of them, from Flathub and Snapcraft to the AUR, AppImage and third-party ebuilds, each with its own update path. Note that both the Windows and macOS first-run instructions tell you to override a system warning about an unverified or unsigned binary. And if you need a recent fix, check whether it is on main rather than in a release, because the newest tag is v2.15.0 from 2024-12-25.

## FAQ

### Is Upscayl really free?

Yes, the project describes itself as free and open source and its licence is AGPL-3.0, covering both the desktop application and the upscayl-ncnn backend. It ships for Linux, macOS and Windows, with a Mac App Store build in addition to the direct downloads, and the page also asks for donations and sponsorships.

### Is Upscayl better than Topaz?

The repository does not make that comparison anywhere on the page. The only claim it states is about the input: Upscayl enhances low resolution and pixelated images but cannot de-blur or do focus adjustment, and if an image is out of focus or totally blurred the FAQ says it is not the right tool for it.

### How do I install Upscayl on Linux?

The page links a Flatpak on Flathub, an AppImage build, an AUR package named upscayl-bin, a Snapcraft listing and a third-party set of ebuilds, and it mentions RPM, DEB and ZIP formats as well. For the AppImage you download upscayl-x.x.x-linux.AppImage, tick allow file to execute in its Permissions tab, then double click it.

### How do I use a GPU with Upscayl?

You need a Vulkan compatible graphics card, and the FAQ says NCNN Vulkan will not work with most iGPUs or CPUs. A contributor added a workaround for Windows and Linux in issue 390, and the page notes that nobody knows how to do the equivalent for the macOS and Haiku frameworks.

### What does Upscayl do?

It enlarges and enhances low-resolution images using AI models that guess what the missing details could be, running Real-ESRGAN models through a Vulkan and NCNN backend called upscayl-ncnn. Models can be extended, with a separate repository for custom models and a wiki page for converting your own.

### How do I use Upscayl itself?

You pick an image or a batch, choose a model, and let the backend run, with the CLI available separately as upscayl-ncnn for scripted work. One documented behaviour matters for batches: when a model does not support an action, Upscayl upscales every image first and post-processes them at the end, so the run has to be left to finish.

## Sources

- [Official documentation](https://upscayl.org)
- [Official README](https://github.com/upscayl/upscayl#readme)
- [Project repository](https://github.com/upscayl/upscayl)
- [Release notes](https://github.com/upscayl/upscayl/releases)

---

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