When working on Studio, I often need to test features on both Mac and Windows. However, I don’t have access to a dedicated Windows machine.
Previously, I set up a Windows guest on my Proxmox home server to fill that gap. It worked, but there were a few drawbacks:
- My server hardware (Beelink S12 Pro) isn’t great for compiling code or running Electron apps
- I could only use it reliably from my home network due to latency
- noVNC has a clipboard integration, but it’s pretty clunky to use
- And honestly, I wasn’t too comfortable running work-related tasks on my home server
So I started looking for a better option. I really didn’t want to go with Parallels because of the cost, and that’s when I discovered UTM — which turned out to be a great alternative.
In this post, I’ll walk you through how I installed a Windows 11 guest on an ARM-based Mac using UTM, following the official documentation as a starting point.
Step 1: Download UTM
First, grab the latest version of UTM. It’s a free and open-source virtual machine app for macOS that works well with Apple Silicon.
You can either:
- Download the stable version from their website
- Or install it via Homebrew with:
brew install --cask utm
Step 2: Get a Windows 11 ARM ISO
To simplify the process of obtaining a Windows 11 ARM ISO, you can use CrystalFetch, a free utility provided by the UTM team. CrystalFetch allows you to legally download the latest Windows builds directly from Microsoft with just a few clicks.
You can download CrystalFetch from:
Once installed, use CrystalFetch to download the Windows 11 ARM ISO suitable for your Apple Silicon Mac.
I used these settings to get the latest ARM build:

Step 3: Create a New Virtual Machine in UTM
Open UTM and click the “+” button to create a new virtual machine.
Choose:
- Virtualize → because we’re emulating an ARM OS on an ARM Mac (this gives better performance than full emulation)
- Windows → for the guest OS type
On the next screen:
- Make sure that “Install Window 10 or higher” is checked
- Make sure that “Import VHDX image” is unchecked
- Choose the downloaded Windows 11 ARM ISO as the boot image
- Make sure that “Install drivers and SPICE tools” is checked

Click continue, then on the following screens, set up the hardware:
- Set the RAM (I went with 16GB, but you can go higher if you’ve got the memory)
- Leave the CPU settings on default
- Create a new virtual hard disk (I picked 64GB)
- Leave most other settings at their defaults unless you know you want something specific.

On the Summary screen, name the VM, and click Save. On the sidebar, the guest tools will start downloading. Wait for the download to finish before proceeding.

Step 4: Boot and Install Windows
Once the VM is set up, click Start. It will boot into the Windows installer.

From here, go through the regular setup flow:
- Select language settings
- Select keyboard settings
- Enter a product key (or skip it)
- Choose Windows edition
- Accept the terms
- Select install location
After doing all these steps, the blue install screen will be shown and the VM will eventually restart.

This part can take a little while. Once it’s done, you’ll be greeted by the usual Windows setup screens.
Step 5: Install Guest Tools
To improve integration (like better display resolution, mouse syncing, and clipboard support), you can install SPICE tools inside the Windows VM. Once the VM is running:
- Open the File Explorer
- Navigate to the disc drive labeled “UTM Guest Tools”
- Run the installer from inside Windows

That’s It!
Now you’ve got a fully working Windows 11 VM running on your Mac with UTM. It’s surprisingly smooth and does the job well for development and testing — and best of all, it didn’t cost anything.
If you run into any weird quirks or performance issues, check out the UTM documentation or their GitHub Discussions — they’re pretty helpful.

Leave a Reply