Open-source project
optiscaler/OptiScaler avatar
optiscaler/OptiScaler

OptiScaler: Replacing DLSS, FSR and XeSS in Games That Already Ship an Upscaler

OptiScaler bridges upscaling/frame gen across GPUs. Supports DLSS2+/XeSS/FSR2+ inputs, replaces native upscalers, enables FSR-FG/XeFG on non-FG titles. Supports Nukem mod for DLSSG-to-FSR3 FG.

11,456 stars506 forksC++GPL-3.0

At a glance

What is it?
OptiScaler is a GPL-3.0 C++ tool that swaps one temporal upscaler for another inside games that already support DLSS2+, FSR2+ or XeSS, and adds experimental DX12 frame generation through OptiFG. It is for players whose GPU vendor does not match the upscaler a game shipped with.
Who is it for?
Adopt OptiScaler if you own a game whose only upscaler is DLSS but your GPU is AMD or Intel, or the reverse, and you accept per-game experimentation. Skip it for anti-cheat multiplayer titles, for games with no upscaler at all, and for anyone unwilling to check the wiki compatibility list before launching.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
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 September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The vendor lock OptiScaler breaks

Temporal upscalers are shipped inside games as vendor-specific libraries. A title built around DLSS expects an Nvidia card; one built around XeSS expects Intel; FSR is the open one, but many releases never expose it. OptiScaler sits between the game and that library and answers the game's calls with a different upscaler. The README's own example: a DLSS-only game can be made to run XeSS or FSR 3.1 instead. It also works in the other direction, putting DLSS on hardware the game never intended.

The audience is narrow but real. It is not for someone whose game already offers the upscaler their GPU runs best. It is for the player with an AMD card in a DLSS-only release, the Intel Arc owner in an FSR2 title, or the RDNA3/RDNA4 owner who wants FSR4 in a game that predates it. The README states FSR4 support is official only on RDNA4 and RDNA3 discrete GPUs, which rules out integrated graphics and older cards.

How the swap works, and where it breaks

OptiScaler is a DLL that the game loads in place of its native upscaler library. Once loaded, it intercepts the upscaler's API calls and forwards them to whichever backend you configured in OptiScaler.ini. That is why the input side matters so much: the game must already be calling a supported upscaler API for there to be anything to intercept. The README is explicit that the tool replaces upscalers in games that already support DLSS2+, FSR2+ or XeSS. A game with no upscaler gives OptiScaler nothing to hook, unless you go through the experimental OptiFG path for frame generation in DX12.

API standardisation decides how well this works. The README notes FSR 3.1 is the first version with a fully standardised API and should be fully supported, while FSR2 and FSR3 use custom interfaces, so support depends on how each developer implemented them. Unreal Engine titles are the sharpest edge case: the README states that for UE games only UE XeSS to Opti XeSS/FSR4 works, and that the UE XeSS plugin does not provide depth, so replacing in-game XeSS breaks other upscalers. In an XeSS-only UE game you can still apply RCAS sharpening, but you cannot swap the upscaler itself. FSR inputs in UE games may need ini tweaks documented in the wiki.

Installing OptiScaler and a first swap

The repository ships two setup scripts at the top level: setup_windows.bat and setup_linux.sh. Running the Windows one from a checkout is the documented entry point.

bash
setup_windows.bat

On Linux the counterpart is a shell script, which you run from the repository root.

bash
./setup_linux.sh

There is also Streamlined_fetcher_windows.bat for pulling the pieces the project needs. The README points to the releases page for stable and nightly builds, and warns that OptiScaler has no official website and no official manager app, so anything claiming to be either is not from the project.

Configuration lives in OptiScaler.ini at the repository root, and Config.md documents the keys. One key the README calls out by name is LoadAsiPlugins, which controls ASI plugin loading. It is disabled by default and loads plugins from a folder that defaults to plugins. The README gives the key in this form:

ini
LoadAsiPlugins=

After a swap, the practical check is whether the in-game upscaler menu still responds and whether the image resolves correctly when you move the camera. The README directs users to the wiki compatibility list for known game issues and workarounds before assuming a broken result is a bug.

OptiFG and frame generation on non-FG titles

Frame generation is the second half of the project and the more experimental one. Since v0.7.0 the README lists experimental DX12 frame generation support with a possible HUDfix solution for HUD ghosting, under the name OptiFG. The README describes two routes: replacing frame generation options a game already exposes, or enabling it in DX12 games that never had it.

Since v0.9.0 the project separated frame generation inputs from outputs and added XeFG and FSR4-FG support. The same release bundled Fakenvapi and Nukem's FSR3-FG mod. Fakenvapi integration enables Reflex hooking and injecting Anti-Lag 2 (RDNA1 and newer only), LatencyFlex or XeLL. Nukem's dlssg-to-fsr3 mod is supported since v0.7.7, but only in games with native DLSS-FG. That last constraint is worth repeating: dlssg-to-fsr3 is not a way to add frame generation to a game that has none. It converts an existing DLSS frame generation path to FSR3.

The separation of inputs and outputs in v0.9.0 is the design decision that makes the combinations legible. You pick what the game offers and what you want out, rather than accepting a fixed pairing. It also means more configuration surface, and more ways to end up with a combination the compatibility list has never seen.

What does not work, and when to pick something else

The README's own known-issues section flags RTSS compatibility as a standing concern, which matters because RTSS is a common overlay for frame limiting and monitoring. Beyond that, the API notes above are limitations rather than bugs: UE XeSS inputs cannot be swapped, FSR2 and FSR3 support is at the mercy of each game's custom interface, and FSR4 is gated to RDNA3 and RDNA4 discrete GPUs.

The natural alternative is Lossless Scaling, which people search for alongside OptiScaler. The difference in approach is fundamental. Lossless Scaling is a separate application that scales and generates frames on the final output, so it does not care what the game renders with or whether the game supports an upscaler at all. OptiScaler works inside the game's own upscaler pipeline, which is why it can hand a game's DLSS calls to XeSS and why it needs the game to already have that pipeline. If your game has no upscaler, OptiScaler's main path is closed to you and an external scaler is the realistic option. If your game has DLSS and you want FSR or XeSS specifically, the external approach cannot give you that, because it never touches the internal upscaler.

There is also a project-specific caveat the README raises directly: OptiPatcher, a separate ASI plugin for OptiScaler, exists to enable DLSS and DLSSG inputs without spoofing in supported games. If spoofing is what is breaking your setup, that is the project to read next, not a config tweak.

Maintenance, licence and the cost of tracking releases

The repository is not archived and the last push was on 2026-09-20, the day before this article. Releases are frequent: v0.9.4 on 2026-07-18, v0.9.3 on 2026-06-18 and v0.9.2 on 2026-05-17, roughly monthly. That cadence is the upgrade cost. Each release can move frame generation inputs and outputs, add a backend, or bundle a component that used to be a manual download, as v0.9.0 did with Fakenvapi and Nukem's FSR3-FG mod. A configuration that worked in one version is not guaranteed to behave identically in the next.

OptiScaler is GPL-3.0. For an end user dropping a DLL into a game folder, that is mostly a distribution question rather than a use question, but anyone repackaging OptiScaler with a game build or shipping it inside another tool needs to read the licence themselves. Nothing here is legal advice.

The README also lists a nightly channel alongside stable. Nightly builds are where new backend support tends to appear first, and they are correspondingly less predictable. If you want a stable target, the release tags are the ones to follow.

Editorial conclusion

Adopt OptiScaler if you own a game whose only upscaler is DLSS but your GPU is AMD or Intel, or the reverse, and you accept per-game experimentation. Skip it for anti-cheat multiplayer titles, for games with no upscaler at all, and for anyone unwilling to check the wiki compatibility list before launching. Verify first that your target game appears on that list, that your GPU is covered for FSR4 (RDNA3 and RDNA4 discrete cards only), and that you can restore the original DLLs if the swap breaks rendering.

Frequently asked questions

What does OptiScaler do?

It replaces the upscaler a game already ships with a different one, so a DLSS-only game can run XeSS or FSR 3.1, and it manages frame generation in those same games, including experimental DX12 frame generation through OptiFG.

Is OptiScaler free to use?

Yes. The README states OptiScaler is free and that any kind of monetary requirement is a scam. The project does link to GitHub Sponsors and Buy Me a Coffee pages, which are optional.

Does OptiScaler work on all games?

No. It replaces upscalers in games that already support DLSS2+, FSR2+ or XeSS, so a game with no upscaler has nothing to hook on the main path. Support also varies by API: FSR2 and FSR3 use custom interfaces, and in Unreal Engine games only UE XeSS to Opti XeSS/FSR4 works.

Can you get banned for using OptiScaler?

The README does not address anti-cheat or bans, so there is no project statement to rely on here. The README only warns that OptiScaler has no official website and no official manager app, and that only this GitHub, the Discord server and Nitec's NexusMods page are legitimate places to get it.

How do I install OptiScaler?

The repository includes setup_windows.bat and setup_linux.sh at the top level, and the README points to the releases page for stable and nightly builds. Configuration is done through OptiScaler.ini, documented in Config.md.

How do I use OptiScaler with FSR4?

FSR4 support is official only on RDNA4 and RDNA3 discrete GPUs. The README points to a separate community-sourced FSR4 Compatibility List on the wiki for known supported games, and notes that in Unreal Engine titles only UE XeSS to Opti XeSS/FSR4 works.

Official sources

  1. Issues
  2. License: GPL-3.0
  3. optiscaler/OptiScaler on GitHub
  4. README
  5. Releases
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/optiscaler-optiscaler.svg)](https://hysenlabs.com/projects/optiscaler-optiscaler)