UTM
mac.getutm.appMacOpen 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!)
- Homepage:mac.getutm.app
- GitHub:github.com/utmapp/UTM
- Privacy:getutm.app/privacypolicy
- Web info:web-check.xyz/check/mac.getutm.app
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
Documents
- Privacy Policy Created 16 Apr 23, Last modified 2 months ago
About the Data
This data is kindly provided by tosdr.org. Read full report at: #8038
UTM Source Code
Author
Description
Virtual machines for iOS and macOS
Homepage
https://getutm.appRepository
- LicenseApache-2.0
- Created12 Apr 19
- Primary languageSwift
- Size50,923 KB
- Stars35,333
- Forks1,804
- Watchers35,333
Top Contributors
@osy (2437)
@osy86 (718)
@changanmoon (108)
@MMP0 (90)
@conath (56)
@ty-yqs (47)
@js-john (44)
@ktprograms (29)
@j-f1 (23)
@fredyshox (21)
@mavethee (15)
@JezerM (13)
@naveenrajm7 (10)
@wibus-wee (9)
@pan93412 (9)
@JoeMatt (8)
@saagarjha (7)
@LostInCompilation (7)
@pointum (6)
@obbcth (5)
@gnattu (5)
@gabefair (4)
@tie (4)
@cheny0y0 (4)
@Hu1est (4)
@BluDood (3)
@s0rd3s (3)
@muhammadbahaa2001 (3)
@spotlightishere (3)
@peterneutron (3)
@logkos (3)
@ntoskrnl (2)
@monabuu (2)
@garamb1 (2)
@Schamper (2)
@lprazdnik (2)
@KKK669 (2)
@kkebo (2)
@3j14 (2)
@GregOriol (2)
@Evsio0n (2)
@akihikodaki (2)
@afh (2)
@hellcastter (1)
@ekarad1um (1)
@TronickDev (1)
@tbringuier (1)
@hamtiko (1)
@Quetzacoalt91 (1)
@Toerktumlare (1)
@ThatStella7922 (1)
@stewartsmith (1)
@sgallagher (1)
@laosb (1)
@reidpr (1)
@PeterDaveHello (1)
@tan9 (1)
@3xp0rt (1)
@Vvorcun (1)
@wegank (1)
@fulldecent (1)
@yakovmanshin (1)
@yukienomiya (1)
@bismansahni (1)
@lshzh-ww (1)
@matapo (1)
@nikolan123 (1)
@soo941226 (1)
@sigitkusuma (1)
@somnisomni (1)
@startergo (1)
@stinovlasmp (1)
@tearsinthegame (1)
@alex-kinokon (1)
@alexis-martel (1)
@dwangoac (1)
@Starwarsfan2099 (1)
@andrewlukoshko (1)
@andylin2004 (1)
@Armanio (1)
@muasiq (1)
@Benjamin123-tech (1)
@burakssen (1)
@Daniate (1)
@kant (1)
@dmathern86 (1)
@ledwardchow (1)
@EkkoG (1)
@Halo-Michael (1)
@haroldm (1)
@AlexGeissler (1)
@hyunwook13 (1)
@jackhinkle (1)
@jobearrr (1)
@ktemkin (1)
@luken11 (1)
@ku1ik (1)
@zeldin (1)
@taupiqueur (1)
@elguero (1)
Recent Commits
osy(02 Sept 26)
project: bumped version
osy(02 Sept 26)
readme: use file-based workflow badge URL so it shows build status The legacy workflows/Build/badge.svg endpoint renders "no status" for branch=main&event=push even though those runs exist. The actions/workflows/build.yml/badge.svg form resolves them correctly. Assisted-by: Claude:claude-fable-5-1
osy(02 Sept 26)
Merge pull request #7802 from changanmoon/l10n Update translations for zh-Hans & zh-HK
osy(02 Sept 26)
Merge pull request #7805 from michaelbnewman/fix-readme-links Fix README links to MacStadium opensource
osy(02 Sept 26)
Merge pull request #7806 from sigitkusuma/apple-explain-newer-guest-install-failure apple: explain macOS install failure when guest is newer than host
osy(02 Sept 26)
Merge pull request #7845 from utmapp/display-upscaling-default-linear config: use linear upscaling except on classic guests
osy(02 Sept 26)
Merge pull request #7840 from lprazdnik/fix/caps-lock-release input(macOS): preserve Caps Lock key releases
osy(02 Sept 26)
Merge pull request #7837 from lprazdnik/feature/command-option-swap input(macOS): add command and option key swap
osy(02 Sept 26)
Merge pull request #7832 from naveenrajm7/feature/full-vm-snapshots snapshots: expose QEMU full-VM snapshots
osy(02 Sept 26)
Merge pull request #7829 from synrest/upstream/graceful-quit macOS: add graceful power-down quit policy
Leo(29 Aug 26)
input(macOS): preserve Caps Lock key releases macOS treats Caps Lock as a locking modifier and never delivers its physical release, so once "Caps Lock is treated as a key" is enabled a guest that uses it as a held modifier (e.g. a screen reader's NVDA key) never sees it let go. While VM input is captured, remap Caps Lock to F20 on each attached keyboard through IOHIDEventSystemClient (Apple TN2450) so macOS delivers a normal key down/up pair, which VMMetalView translates back to the Caps Lock scan code. The keyboard's previous mapping is put back when capture ends, and a remap left behind by a crash is removed at the next launch. F20 is the highest function key macOS delivers and is on no Apple keyboard, so no physical key is shadowed. Fixes #7838 Assisted-by: Codex:gpt-5 Assisted-by: Claude:claude-fable-5-1
osy(01 Sept 26)
config: use linear upscaling except on classic guests The nearest-neighbour default (ba5f7f7f, #3371) was chosen for low-resolution guests, where linear washes out already-chunky text. It is the wrong choice everywhere else: a modern guest rarely upscales by an integer ratio, so nearest duplicates source pixels unevenly and looks blocky rather than sharp -- the complaint behind #6209 and #6572. Default to linear and let the wizard select nearest for the guests the original change was about: Classic Mac OS, Windows 7 and below, and any OS configured for legacy hardware. Legacy hardware is checked on its own rather than folded into the Windows case so that choosing a legacy machine opts in under any OS, and because the summary page can enable it after the Windows page has already latched isWindows10OrHigher. Existing VMs are unaffected: upscalingFilter is a required coding key, so a saved configuration always carries its own value. The UTM 2.x migration path is likewise unchanged, since an absent displayUpscaler already defaulted to linear. Assisted-by: Claude:claude-opus-5
osy(01 Sept 26)
Merge pull request #7844 from utmapp/download-vm-zip-traversal download: reject ZIP entries escaping the .utm folder
osy(01 Sept 26)
download: never extract a symlink from a downloaded VM Bumping ZIPFoundation to 0.9.20 brought in its symlink containment guard, but that guard is not sufficient here. `URL.isContained(in:)` collapses repeated separators in a single pass, so a link target ending in `<package>///../elsewhere` is accepted while the filesystem resolves it to `<package>/../elsewhere`. A crafted archive could pair such a link with a later regular file underneath it, whose own path passes the containment check, and write outside the package again. Nothing in UTM ever stores a symlink inside a package, so reject them outright instead of trying to validate the target. Also remove the destination on failure. Extraction created the .utm directory up front and a mid-loop error left the partial contents in place, where the library would list them as a real virtual machine that survives a relaunch. Assisted-by: Claude:claude-fable-5-1
osy(01 Sept 26)
download: show the real reason a VM download failed The three error types in this file declare `errorDescription` but conform only to `Error`, so the description is never consulted. `downloadUTMZip()` alerts with `error.localizedDescription`, which for a plain `Error` falls back to "The operation couldn't be completed. (UTM.UTMDownloadVMTask... error 1.)" -- the localized strings here have never reached a user. Conform them to `LocalizedError` instead, matching every other error type in the codebase. No other type has this defect. `CreateUTMFailed` is currently unthrown; it is included so the three stay consistent rather than leaving one behind. Assisted-by: Claude:claude-fable-5-1
osy(01 Sept 26)
download: reject ZIP entries escaping the .utm folder A downloaded VM archive is attacker-controlled, so an entry named `some.utm/../../elsewhere` must not be able to write outside the package it claims to belong to. The extraction path was built by substituting the archive's .utm prefix out of the entry path and appending the remainder, and `appendingPathComponent()` does not resolve `..` -- the traversal was only resolved by the filesystem at write time, landing anywhere in the app container the depth reached. Derive the relative path by dropping the prefix, and resolve every destination through a containment check before extracting. Separators are collapsed in a loop because `fopen()` and `URL.standardized` disagree on a path such as `/../elsewhere`, and a single collapse pass still lets `///../elsewhere` through. Also bump ZIPFoundation to 0.9.20 for its accumulated fixes. This file is the only call site in the tree and the deprecated failable initializer it uses is still present, so the bump is source compatible. Reported-by: Vo Duc Thang (ugvxb) Assisted-by: Claude:claude-fable-5-1
osy(01 Sept 26)
build: update virglrenderer An unused reply for SUBMIT_FENCE causes the QEMUL BQL to be held which impacted performance at higher core counts.
osy(01 Sept 26)
system: keep Metal validation out of debug logging MTL_DEBUG_LAYER, MTL_DEBUG_LAYER_ERROR_MODE and ANGLE_METAL_DEBUG_BINDINGS were set alongside the loggers in -setHasDebugLog:, but they are not loggers: they turn on Metal API validation, which wraps every Metal object and validates every call. The environment is inherited by everything QEMU spawns, so the cost lands both in the virglrenderer render-server workers and in QEMU's own per-frame scanout blit, which is encoded and committed with the BQL held and therefore stalls every vCPU behind it. Measured with the Cyberpunk 2077 built-in benchmark on an aarch64 Windows guest (Neptune/D3D12 on the D3DMetal backend, 6 vCPUs), as the median frame time over the steady part of the flythrough: 55.5-56.7 fps with "Debug Log" enabled against 67.3 fps with it disabled -- a 19% loss purely from the validation layers. That makes verbose logging unusable for exactly the reports it is most needed for, since anyone asked to reproduce a performance problem with logging on measures a different machine. Move the three variables behind a separate hidden opt-in so debug logging stays a logging switch: defaults write com.utmapp.UTM GraphicsValidation -bool YES It still requires "Debug Log", because the validation output goes to the log. Assisted-by: Claude:claude-opus-5
osy(01 Sept 26)
config: always use GICv3 GICv2 has reduced performance at higher core counts (measured in CP2077)
osy(31 Aug 26)
system: enable DX12 on D3DMetal backend
osy(30 Aug 26)
build: update dependencies for DX12 support
osy(30 Aug 26)
system: default to D3DMetal if available
Leo(28 Aug 26)
input(macOS): add command and option key swap Add a single modifier-key mapping control that preserves the existing Control/Command preference while keeping swap modes mutually exclusive. Map both left and right Command and Option keys for QEMU guests. Assisted-by: Codex:gpt-5
Naveenraj M(20 Aug 26)
snapshots: expose QEMU full-VM snapshots Expose named create, list, restore, and delete operations through AppleScript and utmctl so automation can manage QEMU full-VM snapshots. QEMU image metadata remains the source of truth, the internal suspend snapshot stays hidden and reserved, and Apple virtualization reports the feature as unsupported until it can preserve equivalent VM state reliably. Assisted-by: Codex:gpt-5
vectorseven(18 Aug 26)
macOS: add graceful power-down quit policy Allow users to request guest shutdown when quitting UTM while preserving Save State as the default. Wait for all selected virtual machines to stop, resume paused non-suspended guests, and cancel termination with a visible error when shutdown fails or times out. Related to #5912. Assisted-by: Codex:gpt-5.6-sol Assisted-by: ChatGPT:GPT-5.6-Sol
Tiffany Fung(10 Aug 26)
Merge branch 'utmapp:main' into l10n
osy(05 Aug 26)
Merge pull request #7809 from utmapp/dev/neptune-ios
osy(05 Aug 26)
config(iOS): use physical RAM limit when limit is raised Otherwise the checks won't kick in on a jailbroken device.
osy(04 Aug 26)
project: revert minver bump We can selectively support DXMT on macOS 13, iOS 16 and so we can revert the minver bump.
osy(04 Aug 26)
project: add dxmt to iOS builds
UTM Security
UTM Website
Website
UTM | Virtual machines for Mac
Securely run operating systems on your Mac
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address104.20.19.3
- LocationSan Francisco,California,United States of America,NA
- ISPCloudFlare Inc.
- ASNAS13335
Associated Countries
US
Safety Score
Website marked as safe
100%
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
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
- Added #56
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/utmThe 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!
