Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Windows has traditionally run on machines that are powered by x86 / x64 processors, but more recently, also runs on devices powered by Arm processors.
Arm-powered devices are particularly interesting because the power-frugal nature of the Arm architecture enables these devices to offer longer battery life while delivering great performance. Arm Systems on Chip (SoC) often include other key features such as a powerful CPU, GPU, Wi-Fi and mobile data networks, as well as Neural Processor Units (NPUs) for accelerating AI workloads.
Build Windows apps that run on Arm
Windows 10 enables existing unmodified x86 apps to run on Arm devices. Windows 11 adds the ability to run unmodified x64 Windows apps on Arm devices. This ability to run x86 and x64 apps on Arm devices gives end-users confidence that the majority of their existing apps and tools run well even on new Arm-powered devices.
For the best performance, responsiveness, and battery life, users will want and need Arm-native Windows apps, which means that developers will need to build or port Arm-native Windows apps.
Check whether an app is supported on Arm: Windows on Arm Ready Software. This site is your source for compatibility information for many apps and games on Windows devices that run on Arm architecture and is being actively maintained.
Virtual Machines
You can create and deploy Windows 11 Arm64 VMs with Ampere Altra Arm–based processors on Azure. Learn how in this Quickstart article.
Learn more about using Windows on Arm Virtual Machines:
- Windows on Arm Virtual Machine FAQ
- Azure Virtual Machines with Ampere Altra Arm–based processors—generally available
- Deploy an Arm-based Azure Kubernetes Service (AKS) Cluster using Terraform - ARM Developer Hub
- Learn more about build and test automation via Continual Integration / Continual Deployment (CI/CD) hosted in the cloud, such as Azure DevOps or GitHub.
Arm developer devices
Developers who want to build and test Arm-native apps on Windows have more options than ever.
Copilot+ PCs offer a Neural Processing Unit (NPU) and the latest in AI features and computing capacity through a variety of device manufacturers. Many of these PCs use the Arm-based Snapdragon® X Series processor, which offers 45 trillion operations per second (TOPS).
Windows Dev Kit 2023 (code name "Project Volterra") is no longer available for purchase, but it remains a viable Arm-based device that supports Windows development, AI research, and testing for the integration of AI into apps and experiences.
Support for existing Windows apps on Arm

Windows on Arm runs native Arm apps, as well as many unmodified x86 and x64 apps. For the best performance and battery life, build apps to be Arm-native wherever possible. You can build Windows apps with many different tools and technologies, including native C/C++ Win32 apps, classic .NET Framework WinForms/WPF apps, modern .NET or MAUI apps, or even apps built with Java, Python, Node.js, and more.
Find tools for Arm development

Microsoft continuously delivers Arm-native developer toolset updates to build and port apps that natively target Windows ARM-powered devices just as easily as when targeting x64. Supporting app development for Arm, on Arm.
- Arm-native Visual Studio includes Visual C++, .NET & .NET Framework, and Java and enables developers to natively build and debug Arm apps on Arm-based devices. Learn more: Arm64 Visual Studio is officially here!(Nov 2022), MSVC ARM64 Optimizations in Visual Studio 2022 17.7 (Sept 2023).
- Visual Studio Code natively supports Arm and can be installed on Arm devices. The VS Code C++ extension also offers C++ IntelliSense and build support for developing Windows apps that run natively on Arm64 devices.
- .NET 6+ already supports Arm, both for native Arm execution and x64 emulation. To develop .NET apps that run natively on Arm64 devices, install the new Arm native Visual Studio 2022 17.4, and .NET 8 Arm64 SDK. Learn more about .NET 8 support for Arm and the performance improvements for Arm64 on the .NET Blog: Arm64 Performance Improvements in .NET 8 (Oct 2023).
- .NET 6 Arm64 SDK: By default, if you
dotnet runa .NET 6 app with the Arm64 SDK, it runs as Arm64. Use thedotnet-runtimeinfotool to discover the environment that .NET is running on. See the .NET 6 blog announcement on Arm64 support to learn more. - VC++ toolchain (Arm Developer) is the GNU toolchain for Arm Architecture releases produced by Arm, enabling partners, developers, and the community to use new features from recent Arm Architecture and from open-source projects GCC, Binutils, glibc, Newlib, and GDB.
- Java support for Arm in the OpenJDK: Announcing OpenJDK for Windows on ARM (June 2020)
- GitHub Actions: GitHub Actions, GitHub's CI/CD workflow engine, is an integral part of many developers’ workflows. They use this tool to continuously build, test, and deploy apps. GitHub Actions is now available for Windows on Arm in two flavors: 1. self-hosted runners that you can host on an Arm VM or Arm device, and 2. GitHub hosted runners (currently available in private beta, but general release is coming soon).
- Docker Desktop: Containers are a popular deployment target for many reasons - a streamlined development workflow, isolation and security, efficient resource utilization, portability, and reproducibility. Docker desktop now runs natively on Windows on Arm.
Note
The term Arm is a shorthand for PCs that run the desktop version of Windows on Arm64 (also commonly called AArch64) processors. The term Arm32 is a shorthand for the 32-bit Arm architecture (commonly called Arm in other documentation). PCs powered by Arm provide great application compatibility and allow you to run your existing unmodified x86 win32 applications. Arm apps run natively without any emulation, while x86 and x64 apps run under emulation on Arm devices.
Arm64EC - Help for updating Windows apps to run on Arm

Arm64EC ("Emulation Compatible") enables you to incrementally build new apps or port existing apps to take advantage of native Arm performance where possible, while utilizing existing x64 code and libraries until fully migrated. Learn more:
Additional tips for developing Windows apps that run on Arm devices
Use MSIX to package your app for distribution. For more information on how MSIX supports Arm and Arm64, see App package architectures: Arm and Arm64.
Not all Visual Studio projects are configured to launch projects locally when you start debugging (F5) from an Arm device. You might need to configure Visual Studio for remote debugging, even though your app is running locally. For more information, see remote debugging.
To find and install the recommended packages on Visual Studio, visit the Visual Studio downloads page.
- For the Remote Tools for Visual Studio 2022, scroll below the All downloads section and expand the Tools for Visual Studio 2022 drop-down menu. Remote Tools for Visual Studio 2022 is listed there. Be sure to check the Arm64 radio button, then Download.
- For the Microsoft Visual C++ Redistributable, scroll below the All downloads section and expand the Other tools and Frameworks drop-down menu. Microsoft Visual C++ Redistributable for Visual Studio 2022 is listed there. Be sure to check the Arm64 radio button, then Download.
- If you're using an older version of Visual Studio, select the Older Downloads link at the bottom of the page to search for the downloads associated with your version of Visual Studio.
When a user installs your app on an Arm device from the Microsoft Store, Windows 11 automatically selects the optimal version of your app that is available. If you submit x86, Arm32, and Arm64 versions of your app to the Microsoft Store, the operating system automatically installs the Arm64 version of your app. If you only submit x86 and Arm32 versions of your app, the operating system installs the Arm32 version. If you only submit the x86 version of your app, the operating system installs that version and runs it under emulation.
When given the choice of app architecture, choose the 32-bit x86 version to run the app's 32-bit version on a Windows on Arm PC. If an app's x64 Win32 version doesn't work, most apps have an x86 version available.
For more information about architectures, see App package architectures.
App Assure Arm Advisory Service
Our guidance to Add Arm support to your Windows app walks through how to create an Arm-optimized version of your apps. The App Assure Arm Advisory Service is available to help if you get stuck. This service is in addition to our existing promise: your apps run on Windows on Arm, and if you encounter any issues, Microsoft helps you remediate them. Learn more.
Sign up for Windows Arm Advisory Service.
Additional resources
- Satya Nadella's Build 2022 keynote announcing "Project Volterra"
- How x86 emulation works on Arm
- Troubleshooting x86 desktop apps
- Troubleshooting Arm UWP apps
- Program Compatibility Troubleshooter on Arm
- Building Arm64 Drivers with the WDK: Instructions for building an Arm64 driver.
- Debugging x86 apps on Arm | Guidance for debugging x86 apps on Arm.
- Video: Building Arm64 Win32 C++ Apps
- Windows 10 on Arm for developers (Microsoft Build 2018 video presentation)
- Blog: Original announcement of Windows 10 support for Arm development
- Report a bug
External resources
Windows on Arm