FanCtrl: automatic fan curves for a PC, with hardware and AIO support
FanCtrl is a software that allows you to automatically control the fan speed on your PC.
At a glance
- What is it?
- FanCtrl is a Windows application that turns temperature sensors into fan speed curves, driving motherboard headers, NVIDIA cards through NvAPIWrapper, and liquid coolers from NZXT and EVGA, with an on-screen display built on Rivatuner Statistics Server. It is GPLv3 licensed, and the README is blunt that not all hardware is supported and that running it alongside other fan control tools can misbehave.
- Who is it for?
- FanCtrl fits a Windows user with an NZXT Kraken, an EVGA CLC, an NZXT RGB and Fan Controller, or a plain motherboard who wants a fan curve tied to a sensor and an on-screen display of temperature and RPM. It does not fit a Linux user, a Mac user, or someone whose hardware is not in the supported list, and it does not fit a machine where another fan control utility is already running.
- 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 last received commits 55 days ago.
- What is it written in?
- Mainly C#, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A Windows utility that maps sensors to fan curves
FanCtrl is software that allows you to automatically control the fan speed on your PC. The main window shows temperature, fan speed and fan control, and the percentage of the fan control can be changed directly to control the PWM, with the README noting that this manual value is not saved, which is the point of the automatic mode. Each item can be renamed so the graph and the list read the way you want. The audience is a Windows user with a heatsink or an AIO cooler who wants a temperature curve rather than the BIOS default, and who is comfortable installing a second utility alongside their graphics driver tools. The requirements are short but specific, and they set the boundaries of the project: the .NET framework 4.7.2, the Visual redistributable 2019 for x64, and, if you want the on-screen display, Rivatuner Statistics Server installed and running.
The supported hardware list, and what sits behind it
The support section names motherboards generally, and then names specific hardware: the NZXT Kraken, the EVGA CLC, the NZXT RGB and Fan Controller, and liquidctl. The reason for that list is in the section on external libraries, which names the component behind each capability. Sensor and fan control comes from LibreHardwareMonitorLib, which is the LibreHardwareMonitor project, and NVIDIA graphics card sensor and fan control comes from NvAPIWrapper, which is also what the option panel calls the NVIDIA graphics card control library. NZXT Kraken USB communication goes through HIDSharp, and EVGA CLC USB communication through SiUSBXp or libusb-1.0. The remaining dependencies are unglamorous and worth knowing: Newtonsoft Json for JSON, ZedGraph for the graph, and liquidctl for the liquidctl plugin. So the hardware list is really a list of which USB and driver protocols the project has wired up.
The options panel, where the integration choices live
The option list is effectively the configuration surface, and each entry is a switch. LibreHardwareMonitor can be used or not, and you can choose which devices are required for control. NvAPIWrapper can be added to control the NVIDIA card. HWiNFO is communicated with to get sensor temperature and fan RPM. There are toggles for language, with English, Korean, Japanese, French, Spanish, Russian and Chinese, and the repository carries a Language.xlsx file for that. The tray icon animation starts when automatic fan control is checked, which is a small piece of feedback that tells you the automation is actually engaged. Fahrenheit can be set for the temperature display. The program can start minimized, start with Windows for auto-run at Windows start, and there is a delay in seconds before that auto-run. The Reset option initialises all settings and libraries, which is the button to reach for when something is behaving oddly.
Auto fan control: modes, hysteresis, step and presets
The automatic control section is the substance of the tool. You check the box to enable it, select the temperature sensor to target, add the fan to control, and pick from the list to display the graph, adjusting the graph accordingly. Mode has only four names and the README notes that they must be set separately, which is a hint that this is where the behaviour is decided rather than a cosmetic choice. Preset lets you save or load the current graph setup state, so a working curve survives a restart. Unit changes the unit of temperature and the PWM percentage, with steps of 1, 5 or 10. Hysteresis exists so that when the temperature drops, the PWM changes only after the temperature falls further, which is the mechanism that stops a fan from oscillating around a threshold. Step decides whether the graph setting is step or linear. Auto leaves the fan control in the BIOS default state up to the set temperature, and the README limits that option to LibreHardwareMonitor, OpenHardwareMonitor, Gigabyte and NvAPIWrapper. When you click Apply and OK the settings are saved as a file, and the program reads from that file on the next run.
The on-screen display rides on Rivatuner Statistics Server
The on-screen display is the feature that distinguishes FanCtrl from a plain fan curve utility, and it is built on someone else's software. The README states that the OSD feature must have Rivatuner Statistics Server installed and running, and the section repeats the requirement. Within that, GROUP stands for one line and ITEM is the data to display, which is a small vocabulary for a lot of possible overlays. The lighting section works the same way, with the lighting packets linked per device: an X2 packet for the NZXT Kraken X2, an X3 packet for the Kraken X3, a clc packet for the EVGA CLC and an RGBnFC packet for the NZXT RGB and Fan Controller, all stored in a Packet directory in the repository. The example shows the range available, with a spectrum wave for the logo and the ring on the X2, and a fading logo with a pulsing ring elsewhere. The liquidctl and Plugins sections both link out to their own usage documents rather than duplicating them.
Precautions, the GPLv3 licence and the release history
The precautions section is the part of this README a prospective user should read twice. FanCtrl is free software with a GNU GPLv3 licence, and the README says you can malfunction while other fan control programs are on at the same time. The author is not responsible for hardware that has failed or is not working using this software, and not all types of hardware are supported. Those are honest limits for a tool that writes to fan headers and talks to coolers over USB. The repository layout is a C# Visual Studio project, with a FanCtrl.sln, an App.config, a Properties and Resources directory, a dll directory for the bundled libraries, a preset directory, a plugin directory and a Plugin.md describing the plugin interface, along with a Korean README. The release history shows steady work: v1.7.8 on 2025-11-26, v1.7.9 on 2026-04-16 and v1.8.0 on 2026-08-29, with the last push on the same day as that tag, so the project is still being changed rather than parked.
Editorial conclusion
FanCtrl fits a Windows user with an NZXT Kraken, an EVGA CLC, an NZXT RGB and Fan Controller, or a plain motherboard who wants a fan curve tied to a sensor and an on-screen display of temperature and RPM. It does not fit a Linux user, a Mac user, or someone whose hardware is not in the supported list, and it does not fit a machine where another fan control utility is already running. Before installing, check that your specific cooler or board is supported, install the Rivatuner Statistics Server if you want the OSD, and read the precautions section, because the project states plainly that you can malfunction while other fan control programs are running.
Frequently asked questions
What does FanCtrl require to run?
The .NET framework 4.7.2, the Visual redistributable 2019 for x64, and Rivatuner Statistics Server installed and running if you want the on-screen display feature. The README also notes that HWiNFO is communicated with to obtain sensor temperature and fan RPM.
Which cooling hardware does FanCtrl support?
The support list names motherboards generally, the NZXT Kraken, the EVGA CLC, the NZXT RGB and Fan Controller, and liquidctl. NVIDIA graphics cards are handled through NvAPIWrapper, and the README cautions that not all types of hardware are supported.
How do I stop a FanCtrl fan curve from oscillating?
Use the hysteresis setting. The README explains that if the PWM changes when the temperature drops, the PWM changes only after the hysteresis temperature drops further, and the unit option controls the size of the temperature and PWM steps.
Can FanCtrl be used with other fan control software?
The precautions section says you can malfunction while other fan control programs are on at the same time, and that the author is not responsible for hardware that has failed or is not working using the software.
Official sources
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.
[](https://hysenlabs.com/projects/lich426-fanctrl)Was this useful?