UTM

Open source, feature rich, powerful type 2 hypervisor for Mac, can emulate x86-64 OSes on Apple Silicon Macs. There's also an iOS version (so you can run Windows on your iPhone!)

Open Source

UTM Privacy Policy

Privacy Policy Summary

  • There is a date of the last update of the agreements
  • Third parties are involved in operating the service

Score

N/A

Documents

About the Data

This data is kindly provided by tosdr.org. Read full report at: #8038

UTM Source Code

Author

utmapp

Description

Virtual machines for iOS and macOS

#apple#emulation#ios#jailbreak#macos#qemu#utm#virtual-machines#vm

Homepage

https://getutm.app

Repository

  • LicenseApache-2.0
  • Created12 Apr 19
  • Primary languageSwift
  • Size51,543 KB
  • Stars36,522
  • Forks1,883
  • Watchers36,522

Language Usage

Language Usage

Project Health

  • Last commit10 days ago
  • Open issues1,138
  • Latest releasev5.0.8

Recent Commits

  • osy(20 Oct 26)

    project: bumped version

  • osy(20 Oct 26)

    Merge pull request #7996 from utmapp/build/remove-private-apis build: remove private API imports from D3DMetal and DXMT

  • osy(20 Oct 26)

    build: remove private API imports from D3DMetal and DXMT - D3DMetal: install_d3dmetal.sh now rebinds the framework's private imports (CoreAnalytics, Metal's shader-cache path and swizzle-key helpers, two dyld image lookups, the acceleration-structure allocation descriptor) to public-API replacements in d3dmetal-native, under visible names, before signing. The patcher comes from the pinned d3dmetal-native: build_dependencies.sh installs it into the x86_64 sysroot's share/d3dmetal-native, and pack_dir now merges a directory from every arch's sysroot (the main arch's copy wins), so it reaches the universal sysroot. It refuses an unexpected D3DMetal, and a d3dmetal-native that does not export every replacement it binds. - DXMT: native builds no longer import MTLSetShaderCachePath, MTLGetShaderCachePath or bootstrap_register2 on any platform. Logic ops stay enabled everywhere, which also keeps feature level 11_1 valid on iOS. Also picks up d3dmetal-native format fixes: typed UAVs on the packed 16-bit formats, and R9G9B9E5_SHAREDEXP as a blendable multisampled target. Assisted-by: Claude:claude-opus-5-5

  • osy(17 Oct 26)

    project: bumped version Assisted-by: Claude:claude-opus-5-5

  • osy(16 Oct 26)

    Merge pull request #7971 from utmapp/fix/usb-storage-csw-stall qemu: fix Windows installs stalling on USB storage timeouts

  • osy(16 Oct 26)

    docs: correct typo in CONTRIBUTING.md

  • osy(16 Oct 26)

    Merge pull request #7972 from utmapp/fix/d3dmetal-requires-rosetta qemu: use DXMT when Rosetta is not installed

  • osy(16 Oct 26)

    Merge pull request #7973 from utmapp/fix/restore-reverted-changes project: restore changes accidentally reverted by the QEMU patch update

  • osy(16 Oct 26)

    project: restore changes accidentally reverted by the QEMU patch update 10fb1ebf ("qemu: cut GIC exits on HVF, ...") was committed from a stale tree based on 7eadb056, so besides adding patches/qemu-10.0.12-utm.patch it reverted everything merged between 7eadb056 and 7928d11c: #7911 (iPhone Duo), #7910 (camera housing area on macOS 12+, which is why the option only shows on macOS 27 again), #7925, #7957, the README badges, #7959 (QEMUKit zstd snapshot fix), #7960, #7961 and #7962. These all shipped reverted in v5.0.7. Reapply the non-patch part of that commit in reverse. Outside patches/ and Build.xcconfig the tree now matches 7928d11c again. Assisted-by: Claude:claude-opus-5-5

  • osy(16 Oct 26)

    qemu: use DXMT when Rosetta is not installed D3DMetal.framework is x86_64 only, so on Apple Silicon the Neptune render worker that loads it runs under Rosetta. The default DirectX driver picks D3DMetal whenever the framework is bundled, so on a Mac without Rosetta the worker can never start and Windows guests with the 3D drivers boot to "Display output is not active". Fall back to DXMT when Rosetta is not installed, and only offer D3DMetal in Settings once it is. Assisted-by: Claude:claude-opus-5-5

  • osy(16 Oct 26)

    qemu: fix Windows installs stalling on USB storage timeouts QEMU's usb-storage could park a status (CSW) request that arrived while a command was completing and never answer it, so the guest timed out the transfer after 10 s, reset the device and retried. The window is narrow, but with the HVF in-kernel GICv3 from 5.0.7 Windows queues the CSW fast enough to hit it on nearly every burst of reads: installing from the default USB CD copied its files in ~1230 s instead of ~160 s. Pick up the fix from the UTM QEMU fork (ae92cdc41f), which releases the SCSI request before completing the packet. The install now copies its files in ~135 s with the in-kernel GIC. Resolves #7970 Assisted-by: Claude:claude-opus-5-5

  • osy(16 Oct 26)

    project: bumped version Assisted-by: Claude:claude-opus-5-5

  • osy(16 Oct 26)

    Merge pull request #7963 from utmapp/dev/update-graphics build: update graphics stack and QEMU for Neptune fixes

  • osy(15 Oct 26)

    build: update virglrenderer to fix instanced and integer attribs on Apple GL Apple's native OpenGL 4.1 core profile rejected shaders that required GL_ARB_draw_instanced for gl_InstanceID (core since GLSL 1.40), so those draws silently did nothing. Integer vertex attributes were also declared as vec4 on Apple's native GL, so the guest saw the bits of their float conversion. Resolves utmapp/UTM#7944 Assisted-by: Claude:claude-opus-5-5

  • osy(15 Oct 26)

    build: update graphics dependencies for Neptune fixes Pick up the latest fixes across the accelerated graphics stack: - virglrenderer: Neptune ring and wait fixes (park an idle ring until its doorbell, a heartbeat in the ring status word, monotonic-clock timed waits), D3D11 query feedback fixes, a decoder lookup cache sized for a frame's working set, resource updates up to 2 GB, and neptune-protocol wire version 2. Guest shmems/dmabufs can now back DXMT DYNAMIC buffer renames and large D3D12 heap blobs. - MoltenVK: query copy-results and availability fixes, a NULL multisample-state guard for mesh pipelines, and a temp-buffer pool lifetime fix. - DXMT: complete occlusion queries that end in a draw-less chunk, UpdateSubresource into STAGING resources, and embedder-provided shared memory for DYNAMIC buffer renames. - D3DMetal: accurate format-support and multisample-quality answers that refuse what D3DMetal cannot create, DXIL subroutine inlining for every stage, and a pinned shared-texture POD ABI. Assisted-by: Claude:claude-opus-5-5

  • osy(09 Oct 26)

    qemu: cut GIC exits on HVF, honor host refresh rate, fix virtio-gpu stalls Pick up QEMU patches needed for the Neptune graphics work: - hvf: use the Hypervisor.framework in-kernel GICv3 on macOS 15+ so SGIs, timer PPIs and GIC register accesses no longer each cost a VM exit, which is expensive for guests whose job systems wake threads across CPUs. On by default (kernel-irqchip=on); the hypervisor GIC has no ITS, so the board exposes a GICv2m MSI frame instead. Its state is saved and restored, so suspend and migration keep working. - edid: carry the host refresh rate into the standard timings and range limits. Windows built every mode at 60 Hz, and a host display past 125 Hz produced a self-contradicting EDID that made Windows drop the adapter and fail D3D device creation. Timings the base block cannot express get a DisplayID 2.0 section. - virtio-gpu: park a create whose id still has a deferred unref instead of rejecting it; the Windows viogpu3d KMD reuses ids this way and came up with no display. - virtio-gpu: initialise the per-command deferred/suspended flags in every handle_ctrl loop. Leftover heap bytes left commands unanswered, hanging Windows on shutdown and stalling 3DMark on Linux. Assisted-by: Claude:claude-fable-5-1 Assisted-by: Claude:claude-opus-5 Assisted-by: Claude:claude-opus-5-5

  • osy(15 Oct 26)

    Merge pull request #7962 from utmapp/fix/usb-capture-unsupported vm(apple): explain USB devices that cannot be captured

  • osy(15 Oct 26)

    Merge pull request #7961 from utmapp/fix/headless-idle-sleep-assertion vm(macOS): release headless idle sleep assertion on pause

  • osy(15 Oct 26)

    Merge pull request #7960 from utmapp/fix/stop-paused-vm-and-alert-buttons macOS: fix force stopping a paused VM and name alert actions

  • osy(15 Oct 26)

    vm(apple): explain USB devices that cannot be captured Virtualization.framework rejects some USB devices for passthrough (for example, devices with isochronous endpoints such as webcams, phones and game controllers) with the undocumented VZErrorDomain code -6. Users only saw "VZErrorDomain error -6" and could not tell that the device itself is unsupported. Map the code to an error that says the device is not supported for capture. Resolves #7914 Assisted-by: Claude:claude-opus-5-5

  • osy(14 Oct 26)

    vm(macOS): release headless idle sleep assertion on pause A headless VM kept its "prevent idle sleep" assertion while paused and created a second one on resume, overwriting the stored ID. Stopping the VM then released only the latest assertion, so the Mac could not idle sleep again until UTM quit. Release the assertion on pause, take it again on resume, and never hold more than one. Found while investigating #7915. Assisted-by: Claude:claude-opus-5-5

  • osy(14 Oct 26)

    Merge pull request #7959 from utmapp/fix/qcow2-zstd-snapshots QEMUKit: fix snapshots of VMs with zstd compressed disks

  • osy(14 Oct 26)

    macOS: name the action in close and quit confirmations The alerts that warn closing a VM window or quitting UTM will kill running VMs, including when saving the suspend state failed, confirmed with "OK". Label the buttons "Close" and "Quit" so it is clear which choice kills the VM. Assisted-by: Claude:claude-opus-5-5

  • osy(14 Oct 26)

    scripting: allow force stopping a paused VM `stop` refused any VM that was not running unless it was killed, so a paused VM could not be stopped by force even though both backends support it. A VM is left paused when `suspend saving true` fails to save its state, which made `stop` report that the VM is not running while it still was. Accept a paused VM for the force method. A power down request still needs a running guest to act on it. Assisted-by: Claude:claude-opus-5-5

  • osy(14 Oct 26)

    QEMUKit: fix snapshots of VMs with zstd compressed disks Compressing a disk creates a qcow2 image with zstd compression. Since QEMUKit started running snapshot commands as jobs, it queries the block nodes first, and its QAPI parser did not know the 'zstd' compression type that query-block reports for such an image. Saving the suspend state then failed with "Invalid parameter 'zstd'" and so did restoring it, which lost the saved state. Update QEMUKit to define CONFIG_ZSTD like the QEMU build does. Fixes #7916 Assisted-by: Claude:claude-opus-5-5

  • osy(14 Oct 26)

    readme: add store and download badges, refresh requirements Link the Mac App Store, App Store (UTM SE) and direct DMG download from badges beside the build status so users can find a release without leaving the page. Translations use their region's App Store storefront. Also update the minimum OS versions (macOS 12+, iOS 15+), mention visionOS, and point install links at docs.getutm.app. Resolves utmapp/UTM#7955 Assisted-by: Claude:claude-sonnet-5-5

  • osy(14 Oct 26)

    Merge pull request #7957 from dnicolson/patch-1 wizard: stop summary Name focus ring clipping

  • Tiffany Fung(14 Oct 26)

    Update translations for zh-Hans & zh-HK (#7925) * Add and update translations for zh-Hans * Add and update translations for zh-HK * Fix translations for zh-Hans * Fix translations for zh-HK * Add translations for zh-HK * Add traslations for zh-Hans * Add translations for zh-Hans

  • osy(14 Oct 26)

    Merge pull request #7910 from utmapp/feature/fullscreen-notch-macos12 display: fill the area beside the camera housing on macOS 12 and later

  • osy(14 Oct 26)

    Merge pull request #7911 from utmapp/feature/duo ios: prepare for iPhone Duo and add a laptop mode

UTM Security

3.8/10

Repo Security Summary

Updated 24 Aug 26

  • Code-Review4/10
  • PackagingN/A
  • Maintained10/10
  • Dangerous-Workflow10/10
  • Token-Permissions0/10
  • CII-Best-Practices0/10
  • Binary-Artifacts10/10
  • Security-Policy0/10
  • License10/10
  • Fuzzing0/10
  • Pinned-Dependencies0/10
  • Branch-Protection0/10
  • Signed-Releases0/10
  • SAST0/10

UTM Website

Website

UTM | Virtual machines for Mac

Securely run operating systems on your Mac

Redirects

Does not redirect

Security Checks

2 security checks failed (63 passed)

  • Domain Recently Created
  • Domain Very Recently Created

Server Details

  • IP Address104.20.19.3
  • LocationSan Francisco,California,United States of America,NA
  • ISPCloudFlare Inc.
  • ASNAS13335

Associated Countries

  • USUS

Safety Score

Website marked as safe

100%

Trackers

Loads 1 third-party tracker

  • google-analytics.comGoogle Analytics

Blacklist Check

mac.getutm.app was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

Website preview

UTM Reviews

More Virtual Machines

  • Open source, powerful, feature-rich virtualization product, supporting x86 and AMD64/Intel64 architectures. Available for Windows, MacOS, Linux and BSD, and free for both personal and enterprise use. VirtualBox is backed by a strong community, and has been under active development since 2007.

  • Open source virtual machine monitor intended to serve as a type-1 hyperviser for multiple operating systems using the same hardware - very useful for servers, as it allows for fully independent virtual Linux machines.

About the Data: UTM

Change History

Edit UTM Data

You can edit UTM's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external sources, a list of these can be found data documentation.

Origin Data

Modify Data

API

You can access UTM's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/v1/services/utm

The REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.

Share UTM

Help your friends compare Virtual Machines, and pick privacy-respecting software and services.
Share UTM and Awesome Privacy with your network!