UTM is a full featured system emulator and virtual machine host for iOS and macOS. It is based off of QEMU. In short, it allows you to run Windows, Linux, and more on your Mac, iPhone, and iPad.


  • Full system emulation (MMU, devices, etc) using QEMU
  • 30+ processors supported including x86_64, ARM64, and RISC-V
  • VGA graphics mode using SPICE and QXL
  • Text terminal mode
  • USB devices
  • JIT based acceleration using QEMU TCG
  • Frontend designed from scratch for macOS 11 and iOS 11+ using the latest and greatest APIs
  • Create, manage, run VMs directly from your device

Additional macOS Features

  • Hardware accelerated virtualization using Hypervisor.framework and QEMU
  • Boot macOS guests with Virtualization.framework on macOS 12+


UTM/QEMU requires dynamic code generation (JIT) for maximum performance. JIT on iOS devices require either a jailbroken device, or one of the various workarounds found for specific versions of iOS (see “Install” for more details).

UTM SE (“slow edition”) uses a threaded interpreter which performs better than a traditional interpreter but still slower than JIT. This technique is similar to what iSH does for dynamic execution. As a result, UTM SE does not require jailbreaking or any JIT workarounds and can be sideloaded as a regular app.

To optimize for size and build times, only the following architectures are included in UTM SE: ARM, PPC, RISC-V, and x86 (all with both 32-bit and 64-bit variants).

How to install UTM?

UTM works on all devices running iOS 11 or higher if jailbroken. UTM can also be run semi-tethered on non-jailbroken devices. UTM runs untethered on some non-jailbroken devices with limited compatibility depending on your iOS version and device processor. See the list below for more details.


Non-Jailbroken Devices

If you are running iOS 11, 12, or 13: UTM does not require a jailbreak to use, but you must sideload it. If you are new to sideloading, it is a way to use a developer’s certificate to load unapproved apps on a non-jailbroken iOS device. There are a few limitations to sideloading:

  • Free developer accounts must re-sign every 7 days
  • Paid developer accounts must re-sign every 1 year

The recommended way for non-jailbreak users is to use AltStore which manages re-signing automatically.

If you are running iOS 14.2, 14.3: UTM works with sideloading (non-jailbroken) if your device has an Apple A12 chip or newer. Otherwise, keep reading.

If you are running iOS 14.0, 14.1, 14.4, or higher: UTM works if you are jailbroken or semi-tethered with Jitterbug or AltJIT. “Semi-tethered” means either tethered to a Mac/PC, to another iOS device with Wifi sharing, or to itself (one iOS device running both Jitterbug/AltJIT and UTM) through a on-device VPN profile.


AltStore Repository

Note: at this time, 3rd party repos require a beta of AltStore which is available only to the developer’s Patreon supporters. When installing from the repository, you can recieve update prompts from AltStore.

  1. Install AltStore
  2. Add the source: https://alt.getutm.app
  3. Download UTM from AltStore

AltStore Sideloading

For non beta-testers, the public release of AltStore lacks the ability to add repositories and check updates but can still manage re-signing automatically.

  1. Install AltStore
  2. Download the latest IPA release on your device
  3. Open the IPA with AltStore

Other Methods

There are many “cloud” signing services including AppCake that do not work with UTM because they use the wrong kind of signing certificate. If you get a crash or a black screen while trying to start a VM, it is likely that your signing certificate was invalid.

You can check if you have the right signing certificate by going to Settings -> General -> Profiles & Device Management. If the certificate used for signing UTM is listed under Developer App, then it is good. If it is listed under anything else such as Enterprise App, then it is the wrong certificate.

Jailbroken Devices

UTM requires AppSync Unified which can be found on Karen’s Repo. You need to add both repositories to your package manager (Cydia, Sileo, Zebra, etc.) to install UTM.

  1. Add https://cydia.akemi.ai/ for AppSync Unified.
  2. Add https://cydia.getutm.app/ for UTM.




Last updated



Fixed some broken links to documentation (#4529)
Fixed an issue where running ARM64 emulation on ARM64 gives an error “The ‘host’ CPU type can only be used with KVM or HVF” (#4528)
Fixed a regression where S390x and SPARC VMs cannot start due to missing USB bus
(iOS) Fixed UTM SE cannot launch any VMs (#4516)

Fixed isolated network mode with new vmnet backend (#4022)
Fixed some USB devices not showing up for USB capture (#3975)
(iOS) Added tap to click with Apple Pencil (thanks @luken11)
(macOS) Workaround a SwiftUI freeze then crash in the home view when the scrollbar is visible (#3612)
(macOS) Fixed an error loading Apple Virtualization VMs after updating from macOS 11 to macOS 12 (#4023)
(macOS) Fixed secondary click using Control+Click on the VM list (#4018)

You might also like

Videdit Full – Videdit++
Classic Drum Premium – Classic Drum++
Human Anatomy Atlas++
Avatan Premium – Avatan++
Elevate Premium – Elevate++