NV⚡UV Play is a lightweight undervolting tool for NVIDIA GeForce GPUs. The idea: pick a tier, hit Start, play. The tool watches for your games, applies your chosen voltage/frequency lock when a game launches, and resets to stock when you quit.
Pre-tuned community tiers cover the common cases. A custom profile slot per tier lets you dial things in further if you want to go beyond the defaults.
Play is the standalone sibling of NV-UV, the full-featured undervolting and stress-testing toolkit. Where NV-UV is the workbench, Play is the light switch. They share the same VF-curve math but Play has no scanner, no stress test, no MSI Afterburner dependency. It just talks directly to the NVIDIA driver through a native bridge.
| What | Details |
|---|---|
| GPU |
RTX 50-series (Blackwell) · ✅ verified, daily-driver test platform RTX 40-series (Ada Lovelace) · 🧪 should work in theory, code is 1:1 from NV-UV main but unverified on real hardware RTX 30 / 20-series (Ampere / Turing) · ⚙ best-guess via Voltage Lock fallback, similar to MSI Afterburner with manual config RTX 10-series and older · ❌ not supported (no NVML SetClockOffsets API) |
| Operating system | Windows 11 (latest cumulative update) |
| .NET runtime | Bundled in the EXE, no separate install needed |
| NVIDIA driver | Latest Game Ready driver |
| MSI Afterburner | Not required, Play talks to NVAPI directly |
NV-UV-Play-<version>.exe from the Releases pageNo installer, no admin rights needed for first start. Windows will prompt for elevation when Play needs it to talk to NVAPI.
%LocalAppData%\NV-UV-Play\. The EXE itself stays where you put it and you can move it freely between machines. Settings travel via the LocalAppData folder.When Play starts the first time, here's what happens:
To get going, set the Activate toggle in the main window. Play is now armed. When a known game launches, the lock applies automatically. When the game quits, Play resets the GPU to stock.
Play uses a tier system. Each tier is a preset: a target voltage, a target frequency, a power limit, and (optionally) a VRAM offset. On Blackwell there are five tiers; on Ada / Ampere / Turing four (no MFG tier).
| Tier | What it does | Use case |
|---|---|---|
| Eco | Aggressive undervolt, conservative target clock | Older games, indie titles, summer days when the case gets hot |
| MFG (Blackwell only) | Tuned for Multi-Frame-Generation workloads, balanced voltage + clock | Games with MFG / DLSS 4 enabled, the GPU stays in MFG's preferred operating band |
| Balanced | Moderate undervolt, slightly less clock than stock peak | Daily gaming default, good FPS-per-watt sweet spot |
| Performance | Light undervolt, close to stock clock | Competitive games, when you want fps and don't mind a bit more wattage |
| Max | Minimal undervolt, target clock at or beyond stock peak | Performance ceiling, expect more heat and noise |
Pick the tier per game in the Game Library, or set a global default that applies to everything not specifically assigned.
Open the Game Library from the main window. Three things live here:
Click + Add Game in the toolbar, then either:
Pick the initial tier from the RadioButtons. MFG is only shown on Blackwell GPUs — on Ada/Ampere/Turing you'll see Eco / Balanced / Performance / Max only.
Each row has a tier dropdown. Set it to Eco / Balanced / Performance / Max / Custom or "off". Default is unset (uses the bundled default if any, otherwise no lock).
Each tier has one custom-profile slot. Use this if the bundled tier defaults don't quite fit your card or your needs.
Once saved, the profile name appears in three places so you always know which configuration is active:
✎ KCD-stable instead of the generic ✎ Custom...Override: Custom "KCD-stable" (default Performance)🎮 KCD-stable · 3050 MHz @ 950 mV · Crash #1Hovering the dropdown shows the same V/F/PL summary you get for built-in tiers: KCD-stable · 950 mV / 3100 MHz · PL 100%. If a VRAM offset is set, it appears too.
| Field | Range | Notes |
|---|---|---|
| Voltage | 700 – 1100 mV | The lock point. Lower = more efficient, harder to keep target clock |
| Target frequency | 500 – 3500 MHz | What you want the GPU to run at under load |
| Power limit | 60 – 100 % | Hard cap on watts. Available only with Expert Overrides on |
| VRAM offset | 0 – 3000 MHz | Memory clock above stock. Overclocking, Expert Overrides only |
Per-tier customs make sense if you want, say, Performance with 25 MHz less clock to stay stable, while still having the regular Balanced for browsing and lighter games.
The Game Library has Export and Import buttons in the toolbar. Use them to back up your custom profiles before a reinstall, or to share a working config with a friend.
The Advanced Options dialog is reachable via the gear icon. It hosts four sections from top to bottom:
Most settings change on the next game start; a running game is not re-applied mid-session. Exception: toast position is live (preview right when you change it).
Two algorithms for writing the VF curve. Same end goal (the GPU runs at your target voltage / frequency), different shapes of the curve below the lock point.
Smooth ramp up to the target frequency below the lock voltage, then plateau above. The shape familiar from Afterburner curve editors. Default on Blackwell and Ada.
On Ampere / Turing, Gradient Lock has no certified path and Play falls back to Voltage Lock automatically.
Strict voltage lock: stock curve untouched below, target frequency above. Direct NVAPI write, flat-tail above the lock. Works on every family including Ampere / Turing.
Voltage Lock produces a different curve shape than what Afterburner users typically see, but it's mechanically the same idea, just without the ramp below.
Under load, the voltage rail sags 10-20 mV below what you asked for. The GPU then lands on a lower point of the VF curve, so the clock drops too. This is normal silicon behaviour, not a Play bug.
V-Step Compensation locks the GPU N VF-grid points above your requested voltage. When voltage droop kicks in under load, the rail sags down toward your actual target instead of below it. The dropdown lets you pick how many steps:
| Family | VF grid step | Precision |
|---|---|---|
| Blackwell | ~5 to 7 mV | Highest |
| Ada | ~10 to 12 mV | Good |
| Ampere / Turing | ~12 to 15 mV | Coarser, may over- or undershoot |
Default off everywhere. Enable when you need it, and remember it trades efficiency for stability.
Crash recovery for the times when a tier is too aggressive for a specific game. Detects driver crashes (TDR) via Windows Event Log and adjusts the lock for the next launch.
nvlddmkmTwo visual signals confirm the Stabilizer is doing its job:
🎮 3050 MHz @ 950 mV · Crash #1🎮 KCD-Crash2 · 3050 MHz @ 950 mV · Crash #1If you want to retry the original profile (e.g. after a driver update fixed the instability), right-click the game row in the Game Library and choose Reset Stabilizer adjustment. The orange line disappears and the next launch uses the unmodified tier values for the currently displayed tier. Crash history for other tiers on the same game remains intact — if you crashed on Custom and switched to Performance, then reset Performance, your Custom history is still there if you switch back.
| Strategy | What it does | Default step |
|---|---|---|
| Both (recommended) | Lowers clock and raises voltage together. Balanced mix, best stability for most users. | -50 MHz + +10 mV |
| Frequency Down | Lowers target clock only. More power-efficient, no extra voltage, less aggressive stability gain. | -50 MHz |
| Voltage Up | Raises target voltage only. Keeps the clock, higher power draw, holds the lock under heavy load. | +10 mV |
Default since hf55: Both. The author found that pure frequency-down on Blackwell sometimes didn't recover from edge-case crashes — a small voltage bump alongside the clock reduction handles those cases reliably. v0.1.1 update: the voltage step is now +10 mV (was +5). On weakly binned Ada cards, a single +5 mV step often fell short of the voltage-droop gap and let the Stabilizer crash again before recovery; +10 mV per crash typically reaches a stable point in one step.
Configure via right-click on the Stabilizer toggle in the main window: Strategy, step sizes, floors. Default behaviour works well for most users.
Play has no built-in voltage / frequency / temperature overlay. By design: the goal is a minimal apply-tool, not a Swiss-army monitoring suite.
For real-time readouts, use what you already know:
| Tool | What it gives you |
|---|---|
| MSI Afterburner + RTSS | The standard. Full overlay customization, sensor logging, screenshot/recording hooks |
| GPU-Z | Quick sensor view, easy sensor logging |
| HWiNFO | Deep telemetry, RTSS integration |
| NVIDIA App overlay | Built into the GeForce driver. Simple readouts, no install |
The bundled list of games would go stale within weeks without updates. Play keeps the database fresh via this GitHub repo: github.com/christianp403-spec/nv-uv-play
On startup Play checks if the repo has a newer GameDatabase.json and pulls it down if so. New games and refined defaults arrive automatically, no Play update needed.
Open the Game Library → header strip on top:
If a game you play is missing from the library, two ways to add it:
games/GameDatabase.json with the new entry inlineYou can also add games locally inside Play via Add Game → Browse for .exe. Your local additions live in %LocalAppData%\NV-UV-Play\game_overrides.json and survive every database update.
Check that you're on the latest NVIDIA Game Ready driver. If you're on a 10-series (Pascal) or older card: those are not supported, NVAPI exposes a fundamentally different VF interface.
Voltage droop under load is normal silicon behaviour. The rail sags 10-20 mV below the request. Enable V-Step Compensation in Advanced Options to compensate, or author a custom profile with more voltage if you need a guaranteed value (trades efficiency).
Same root cause. When voltage droops, the GPU drops to a lower VF point with a lower clock. Same two remedies: V-Step Compensation or a custom profile with more voltage.
NVAPI quantization. The driver snaps frequencies to its internal grid. Affects every undervolt tool, not just Play. Within normal noise for boost-algorithm behaviour.
The tier is too aggressive for your silicon. Stabilizer will auto-adjust on the next launch and you'll see two confirmations: a toast notification 20 seconds after the crash, and an orange line under the game in the Game Library showing the new adjusted values. If you want to skip the auto-adjust dance, drop to a lower tier manually in the Game Library. To clear an existing adjustment (e.g. after a driver update fixed the stability), right-click the game row and pick "Reset Stabilizer adjustment".
Three things to check:
Right after Windows logon, the foreground-lock can prevent Play from popping into focus on tray-icon click — you'll see the taskbar button flash but no window. Click the tray icon a second time and it should come up properly. The fix landed in hf55; if it still happens reliably, please file an Issue.
Play sits at ~50 MB resident memory at idle, ~80 MB while a game is running. If you see more, that's likely the WPF renderer; restart Play and it should return to normal.
Active log: %LocalAppData%\NV-UV-Play\logs\current.log
Previous session: %LocalAppData%\NV-UV-Play\logs\previous.log
For bug reports, use the built-in Settings → Export Log button. It bundles both logs plus a system_info.txt (GPU model, BIOS, driver version, OS version) into a single ZIP ready to attach to a GitHub Issue.
No. Play talks to NVAPI directly through a native bridge. Afterburner can run alongside Play; the two don't interfere with each other.
Yes. If you want a more detailed curve editor, use Afterburner. Many testers run Afterburner for RTSS / overlay duty and Play for the actual apply work.
Green Curve is the curve-editing tool by aufkrawall that Play's native bridge is built on (MIT License, full credit in the About dialog). If you want per-point control of the VF curve, Green Curve is the tool. Play stays at the tier level intentionally, simple game undervolting, not curve sculpting.
Modifying GPU voltage and frequency settings may affect your hardware warranty depending on your card maker. Check with your manufacturer. NV-UV Play takes no responsibility for warranty disputes, hardware damage, or system instability. Use at your own risk.
Mostly no. Mobile GPUs expose different NVAPI behaviour and many laptop vendors lock parts of the VF interface in firmware. If detection works and a tier applies, great. If not, Play tells you.
Not at this time. The license is permissive for personal and non-commercial use (free to use, free for content creators, free for helping friends and community members). Commercial use, OEM bundling, and selling tuning services with Play require a separate commercial license, see the License section of the readme.
OEM bundling requires a commercial license. Reach out via the PCGH NV-UV Subforum or the NV⚡UV Discord (invite via the forum).
NV-UV main has a full Voltage Step Scanner, OC Scanner integration, render stress tests, in-app curve editor preview, Mini View, German UI, three skins, and Afterburner integration. Play has none of that. It's tier picker + auto-apply + stabilizer + nothing else. Different tools for different needs.
Because that's what it does. Pick a tier, hit Start, play.
NV⚡UV Play uses NvApiNative.dll, a native NVAPI bridge derived from the open-source project Green Curve by aufkrawall. Green Curve demonstrated how to access the VF curve on Blackwell GPUs directly via NVAPI entry points. NV⚡UV Play applies this approach for the Voltage Lock apply path on all supported GPU families.
Project repository: github.com/aufkrawall/green-curve
The full text of the MIT license is reproduced below:
MIT License Copyright (c) 2026 aufkrawall Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.