.NET is a free, cross-platform, open-source developer platform for building many different types of applications.
Getting the right .NET 8 Desktop Runtime download
Microsoft publishes four different .NET downloads on the same page and they are easy to confuse. If an application told you to install .NET, the Desktop Runtime is almost certainly the one you want, and it is not the one the page pushes hardest.
The Desktop Runtime is what desktop applications need: it contains the base runtime plus the Windows Forms and WPF libraries that any normal Windows program uses to draw its interface.
The plain Runtime is smaller and lacks those interface libraries, so an application will start and then fail with a missing assembly. The ASP.NET Core Runtime is for web servers. The SDK is for writing .NET software, not running it, and is several times larger.
Architecture matters and the wrong one fails silently. Take x64 unless the application is specifically 32-bit, in which case you need x86 as well. Having both installed is normal.
Versions do not replace each other
An application built against .NET 8 needs the .NET 8 runtime specifically. Installing .NET 9 does not satisfy it, and both can be installed side by side without conflict. This is the single most common reason people install a runtime and get the same error again.
Desktop Runtime, not Runtime
The download page lists "Run desktop apps" and "Run server apps" close together. Picking the wrong one produces an application that launches and immediately crashes looking for WPF or Windows Forms assemblies.
Got a different hash, or one you cannot place? Paste it into the hash checker and it will tell you which program and version it belongs to, past releases included.
Install Microsoft .NET Windows Desktop Runtime 8.0 silently
The unattended switch below is the one Microsoft Corporation declares in the installer manifest, not one we guessed by trying flags.
Run it from the folder holding the downloaded file, in a terminal opened as administrator when the package installs for all users. Silent means no window and no prompts, so check the exit code rather than waiting for something to appear: 0 is success and 3010 means it worked but wants a reboot.
Uninstall Microsoft .NET Windows Desktop Runtime 8.0 cleanly
Every guide on this tells you to hunt for the product code with Get-WmiObject or in the registry. You do not need to: it is published in the installer manifest, and it is printed below.
The codes above belong to Microsoft .NET Windows Desktop Runtime 8.0 8.0.30, the version in our index. If you have an older release installed, its code is different and this command will report that the product is not installed. In that case run Get-Package -Name "Microsoft*" in PowerShell to read the code of what you actually have.
This removes the program as the publisher packaged it. Settings and files created after installation, typically under AppData, are deliberately left behind by the uninstaller and have to be deleted by hand if you want them gone.
Reinstalling and hitting error 1638? That is this same product code, and the command above is the fix.
3 of 3 installers ship a SHA-256 hashWithout a published hash there is no way to prove the file you downloaded is the file the publisher built.
30 / 30
Binary provenance
3 on the publisher's own domainThe strongest signal against a repackaged installer: the file should come from the publisher, not from a mirror nobody vouches for.
35 / 35
Served over HTTPS
3 of 3 over HTTPSAn installer fetched over plain HTTP can be modified in transit.
15 / 15
Licence declared
MITA declared licence tells you what you are actually allowed to do with the software.
5 / 5
Is Microsoft .NET Windows Desktop Runtime 8.0 safe to download?
Yes, in the sense we can actually verify: the installer downloads from microsoft.com, which is a domain we have tied to Microsoft Corporation.
Every one of the 3 installers on this page comes with the SHA-256 Microsoft Corporation declared, so you do not have to take our word for it: hash the file you downloaded and compare.
What this does not tell you is whether the software itself is any good, or whether you want what it does once installed. A publisher can ship something you would rather not run and the download is still authentic. We answer the question we can measure and leave the other one to you.
If Windows says “Windows protected your PC” when you run it, that is SmartScreen reporting reputation, not a malware verdict — it shows up on perfectly legitimate software from small publishers and on releases that are simply new. The reverse matters more: no warning does not mean the file was checked.
Install Microsoft .NET Windows Desktop Runtime 8.0 with winget
Windows ships with a package manager, and this program is in it. The identifier below is the one Microsoft's repository uses, which is also where the download URL and hash on this page come from.
Why --exact: without it winget matches on name as well as identifier, and a search that returns more than one package makes it stop and ask rather than install. Pinning the identifier is what makes the command safe to put in a script.
Not installing anything, or getting an error back? The commands that actually come up covers upgrading everything at once, what --include-unknown is for, and why winget can be missing from a machine that should have it.
Old versions of Microsoft .NET Windows Desktop Runtime 8.020 with hashes
The version history of Microsoft .NET Windows Desktop Runtime 8.0, each release with the download URL the publisher declared at the time and the SHA-256 to check it against. Useful when an update breaks something and you need to downgrade to a build that worked.
We do not host any of these files and never re-upload them, which is the difference between this and an old-version download site.
Publishers take old builds offline without warning, so a link here can stop working even though the hash stays correct forever. If you already have the file, the hash is what matters: it tells you whether what you have is what they published.
Every version on record29
Every Microsoft .NET Windows Desktop Runtime 8.0 version with a published manifest, newest first. The most recent ones are listed above with their file names and hashes.
8.0.30
8.0.29
8.0.28
8.0.27
8.0.26
8.0.24
8.0.23
8.0.22
8.0.21
8.0.20
8.0.19
8.0.18
8.0.17
8.0.16
8.0.15
8.0.14
8.0.13
8.0.12
8.0.11
8.0.10
8.0.8
8.0.7
8.0.6
8.0.5
8.0.4
8.0.3
8.0.2
8.0.1
8.0.0
Common questions
What is the difference between .NET Runtime and .NET Desktop Runtime?
The Desktop Runtime includes the Windows Forms and WPF libraries that desktop applications use for their interface. The plain Runtime does not, so a desktop program installed against it starts and then fails with a missing assembly error.
Do I need the .NET SDK or just the runtime?
The runtime, unless you are writing .NET software yourself. The SDK contains the compiler and build tools and is much larger. Running an application only requires the runtime.
Will .NET 9 work for an app that needs .NET 8?
No. Major versions install side by side and do not substitute for each other. An application targeting .NET 8 requires the .NET 8 runtime specifically.
Similar programs we index
Matched on the categories Microsoft Corporation and others declare in their own manifests, so the grouping is theirs rather than ours. Each one has its official URL and hash on the same terms as this page.