NVUVPlay

Simple game undervolting · User guide
v0.1.6-alpha · Open Alpha · May 2026
Contents

What is NV⚡UV Play?

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.

📋Requirements

WhatDetails
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 systemWindows 11 (latest cumulative update)
.NET runtimeBundled in the EXE, no separate install needed
NVIDIA driverLatest Game Ready driver
MSI AfterburnerNot required, Play talks to NVAPI directly

🔧Installation

  1. Download NV-UV-Play-<version>.exe from the Releases page
  2. Put it anywhere you like: Desktop, Programs folder, USB stick, whatever fits
  3. Double-click to run

No installer, no admin rights needed for first start. Windows will prompt for elevation when Play needs it to talk to NVAPI.

Portable. Play stores its settings under %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.

First run

When Play starts the first time, here's what happens:

  1. Hardware detection: Play reads your GPU, family, BIOS variant, and the stock VF curve. This takes a second or two.
  2. Tier defaults: Play loads the community-tuned defaults for your card. You'll see them in the main window.
  3. Game library: Play loads its bundled game database and checks GitHub for an update in the background.
  4. Tray icon: an icon appears in the system tray. That's Play's home, single-click to toggle the main window.

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.

Right out of the box, nothing is overclocked. The bundled tier presets are conservative undervolt targets. Eco saves the most power, Max pushes performance. Both run cooler and quieter than stock.

🎚The tiers

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).

TierWhat it doesUse 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.

Every silicon sample is different. The bundled tiers are community-validated starting points, not guaranteed-stable settings for your exact card. If Max crashes, drop to Performance. If Performance crashes, drop to Balanced. The Stabilizer (see below) automates this when it happens during a game.

🎮Game library

Open the Game Library from the main window. Three things live here:

Adding a game manually

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.

Per-game tier override

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).

Game library updates from GitHub. Play checks the public repo on startup and pulls in new games and refined tier defaults automatically. See Game library updates.

🛠Custom profiles

Each tier has one custom-profile slot. Use this if the bundled tier defaults don't quite fit your card or your needs.

Creating one

  1. In the Game Library, pick the row for the game
  2. Change its tier dropdown to Custom
  3. The Custom Tier Editor opens, pre-filled with your current tier's default values
  4. Give it a name — e.g. "KCD-stable", "MyAggressive", "EvenMore". The name is what surfaces throughout the UI
  5. Adjust voltage / target MHz / power limit / VRAM offset as you want
  6. Save

Where the name shows up

Once saved, the profile name appears in three places so you always know which configuration is active:

Hovering 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.

What you can adjust

FieldRangeNotes
Voltage700 – 1100 mVThe lock point. Lower = more efficient, harder to keep target clock
Target frequency500 – 3500 MHzWhat you want the GPU to run at under load
Power limit60 – 100 %Hard cap on watts. Available only with Expert Overrides on
VRAM offset0 – 3000 MHzMemory 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.

Export and Import

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.

Advanced options

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).

📐Apply style

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.

Gradient Lock

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.

Telemetry vs. requested target. The telemetry readout may differ from what you set. NVAPI quantization adds ±10-30 MHz drift around the plateau, and under heavy load voltage droop can pull the achieved clock further below the target. V-Step Compensation below can compensate, or for guaranteed frequency author a custom profile with more voltage (trades efficiency for stability).

Voltage Lock

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.

Which one? On Blackwell or Ada: Gradient Lock unless you have a specific reason. On Ampere / Turing: Voltage Lock. The difference under load is usually subtle.

📐V-droop compensation

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.

What the dropdown does

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:

When to use it

Precision per family

FamilyVF grid stepPrecision
Blackwell~5 to 7 mVHighest
Ada~10 to 12 mVGood
Ampere / Turing~12 to 15 mVCoarser, may over- or undershoot

Default off everywhere. Enable when you need it, and remember it trades efficiency for stability.

🛟Stabilizer

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.

How it works

  1. Game crashes (driver reset, blue screen of the GPU kind)
  2. Windows logs the TDR event from nvlddmkm
  3. Play's Stabilizer reads that event and notes which game was running
  4. On the next launch, Play applies the adjusted profile automatically
  5. After a few clean runs, the adjustment resets back to your original tier

How you see it

Two visual signals confirm the Stabilizer is doing its job:

Resetting an adjustment manually

If 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.

Strategies

StrategyWhat it doesDefault step
Both (recommended)Lowers clock and raises voltage together. Balanced mix, best stability for most users.-50 MHz + +10 mV
Frequency DownLowers target clock only. More power-efficient, no extra voltage, less aggressive stability gain.-50 MHz
Voltage UpRaises 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.

Safety limits

Configure via right-click on the Stabilizer toggle in the main window: Strategy, step sizes, floors. Default behaviour works well for most users.

📊Monitoring

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:

ToolWhat it gives you
MSI Afterburner + RTSSThe standard. Full overlay customization, sensor logging, screenshot/recording hooks
GPU-ZQuick sensor view, easy sensor logging
HWiNFODeep telemetry, RTSS integration
NVIDIA App overlayBuilt into the GeForce driver. Simple readouts, no install
Why no overlay in Play? Building one means parsing NVAPI sensors at 60+ Hz, drawing to a DirectX/OpenGL overlay, and competing with the four tools above. None of which would make Play any better at undervolting.

🔄Game library updates

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.

Coming soon: the auto-update infrastructure is wired up and live in this build, but the remote starter database is still being populated. Until then, "Check now" will return "no newer version available". The 631 bundled games carry you through until the public DB gets its first refresh.

Controlling it

Open the Game Library → header strip on top:

Submitting a game

If a game you play is missing from the library, two ways to add it:

You 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.

Privacy. The update check is the only network call Play ever makes. No telemetry, no analytics, no usage statistics. The HTTP request goes to GitHub's raw-content CDN and that's it.

🔧Troubleshooting

Play doesn't detect my GPU

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.

The voltage I set isn't what telemetry shows

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).

The MHz I set isn't held

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.

Telemetry shows ±10-30 MHz drift around my target

NVAPI quantization. The driver snaps frequencies to its internal grid. Affects every undervolt tool, not just Play. Within normal noise for boost-algorithm behaviour.

Game crashes when Play applies the lock

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".

Play doesn't apply when I launch a game

Three things to check:

Tray-icon click doesn't bring Play to the foreground

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 uses too much memory

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.

Logs

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.

💬FAQ

Does Play need MSI Afterburner?

No. Play talks to NVAPI directly through a native bridge. Afterburner can run alongside Play; the two don't interfere with each other.

Can I use Play and Afterburner together?

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.

What about Green Curve?

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.

Will my warranty be affected?

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.

Does Play work on laptops?

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.

Will Play be open-source?

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.

Can I bundle Play with my gaming PC?

OEM bundling requires a commercial license. Reach out via the PCGH NV-UV Subforum or the NV⚡UV Discord (invite via the forum).

How is Play different from NV-UV main?

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.

Why is it called Play?

Because that's what it does. Pick a tier, hit Start, play.

🔖Third-Party Components

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.