Skip to content

iisnode Alternatives

decerto edited this page Aug 11, 2026 · 1 revision

iisnode alternatives in 2026

iisnode is still the top answer for "how do I run Node on IIS", and it should not be. Its last release was nine years ago, it lists Windows Server 2012 as a prerequisite, and it pre-dates almost everything a modern Node application assumes. If you have an existing iisnode deployment it will keep working. If you are building something now, start somewhere else.

Here is what to use instead, depending on why you were reaching for it.


If you want the simplest working setup

Run the app as a Windows Service, and put Caddy in front of it.

The app listens on 127.0.0.1:3001. Caddy owns 80 and 443, routes by domain, and obtains and renews the certificate itself. No IIS, no web.config, no module to install.

example.com {
    reverse_proxy 127.0.0.1:3001
}

If IIS must stay in charge

Two supported routes, both from Microsoft:

HttpPlatformHandler launches your process and forwards requests to it, which is the closest replacement for what iisnode did. It is generic — it does not know or care that your app is Node.

<configuration>
  <system.webServer>
    <handlers>
      <add name="httpPlatformHandler" path="*" verb="*"
           modules="httpPlatformHandler" resourceType="Unspecified" />
    </handlers>
    <httpPlatform processPath="C:\Program Files\nodejs\node.exe"
                  arguments="server.js"
                  stdoutLogEnabled="true"
                  stdoutLogFile=".\logs\node"
                  startupTimeLimit="20">
      <environmentVariables>
        <environmentVariable name="PORT" value="%HTTP_PLATFORM_PORT%" />
      </environmentVariables>
    </httpPlatform>
  </system.webServer>
</configuration>

Application Request Routing + URL Rewrite turns IIS into a plain reverse proxy in front of a Node process you started yourself as a service. Two extra downloads and a rewrite rule, but the process management stays in your hands where it is easier to reason about.

Either way you inherit application-pool recycling, idle time-outs and identity settings that were designed for ASP.NET, so read those before your app starts mysteriously restarting at 3am.

If you want the whole thing managed

WinPanel does the first option for every site automatically — port allocation, service registration, proxy configuration, certificates, DNS, Git deploys with rollback — plus mail and customer logins. Free and self-hosted.

Plesk for Windows is the mature commercial equivalent, licensed per server.


Why not just keep using it?

Problem Consequence
No releases since 2016 No fixes for anything found since, in a component sitting in the request path
Targets Windows Server 2012 Nothing has been validated against 2019, 2022 or 2025
Process model predates modern Node Clustering, worker threads and long-lived connections behave in ways the docs do not describe
WebSockets need extra configuration And still disappoint, where a proxy upgrades them with nothing to configure
Every deployment needs a web.config A file that exists only to satisfy IIS, checked into your repository

Frequently asked

Is iisnode deprecated? It was never formally deprecated — it was simply abandoned. The repository is archived-in-practice, with no releases for nine years.

Can I migrate off it without downtime? Yes. Register the app as a service on a new port, prove it works there, then switch the front door — remove the IIS site (or stop IIS holding 80/443) and let the proxy take over. See Fix port 443 already in use.

Do I have to uninstall IIS? No. It only has to stop holding ports 80 and 443.

Clone this wiki locally