Rosetta 2

On this page 7

Rosetta 2 is the binary translation layer in macOS that allows applications compiled for Intel x86-64 processors to run on Macs with Apple silicon by converting their machine code into Arm64 instructions. In the Apple silicon transition it is the compatibility bridge that let Intel-only software keep working while developers rebuilt their apps natively.

Rosetta 2 arrived with macOS Big Sur in 2020, alongside the first M1 Macs. Its name refers to the original Rosetta, which translated PowerPC code on Intel Macs from 2006 until it was removed in Mac OS X Lion. Like its predecessor, Rosetta 2 is designed as a transitional tool, not a permanent part of the platform.

How Rosetta 2 translates x86-64 code

Rosetta 2 relies mainly on ahead-of-time translation. When an Intel-only app is installed or first launched, Rosetta translates its executable and libraries into Arm64 code and caches the result on disk. Later launches use the cached translation, which is why the first start of a translated app is noticeably slower than the following ones.

Code that does not exist until the program runs, such as output from a JavaScript engine or a plug-in loaded at runtime, is handled by a just-in-time translator. This path costs more, so apps that generate large amounts of code dynamically tend to show the largest performance penalty under Rosetta 2.

Translation alone would not be enough for good performance. Apple silicon includes hardware support for x86 memory ordering, a mode that enforces the stricter total store ordering of Intel processors for translated processes. Without it, multithreaded x86 code would need costly barriers around memory accesses. The chips also help with x86 flag calculations that Arm normally does not compute.

What Rosetta 2 can and cannot run

Rosetta 2 translates user-space applications, command-line tools and their libraries. It does not translate anything that runs inside the kernel or that requires a whole x86 machine to be emulated.

Software typeRuns under Rosetta 2Reason
Intel-only macOS appsYesCore purpose of the translator
Command-line tools and scripts with x86 binariesYesTranslated like any user process
Kernel extensionsNoKernel code must be native Arm64
x86 virtual machines such as Intel WindowsNoRequires full system emulation
Code using newer vector extensionsPartlySupport depends on macOS version
x86 Linux binaries in an Arm Linux VMYes, with setupRosetta can be shared with Linux guests
Software types and Rosetta 2 support

A single process must use one architecture throughout. A native Arm app cannot load an Intel-only plug-in, which is why some audio and design programs offer an Open using Rosetta option in Finder’s Get Info window: the whole app then runs translated so that older plug-ins still load.

Rosetta 2 compared with other compatibility approaches

Apple silicon Macs offer several ways to run software from other platforms. Rosetta 2 is the only one that is built into macOS and invisible to the user, but it covers only Intel macOS code and command-line binaries.

ApproachWhat it runsMechanism
Universal binaryNative code for both architecturesNo translation needed
Rosetta 2Intel macOS apps and toolsBinary translation with caching
VirtualizationArm versions of Windows and LinuxApple Virtualization framework or hypervisors
CrossOver and WineWindows x86 appsAPI translation running under Rosetta 2
Game Porting ToolkitWindows games for evaluationWine, Rosetta 2 and a DirectX to Metal layer
Boot CampIntel WindowsOnly on Intel-based Macs
Ways to run non-native software on Apple silicon

The universal binary is the preferred long-term answer. It contains native code for both Arm64 and x86-64 in one file, so macOS chooses the native slice automatically and Rosetta 2 is never involved.

Installing and checking Rosetta 2

Rosetta 2 is not installed by default. macOS offers to install it the first time an Intel-only app is opened, and administrators can install it silently with softwareupdate --install-rosetta --agree-to-license, which is useful in managed deployments.

TaskHow it is doneNote
Check an app’s architectureKind field in Get Info or the Activity Monitor kind columnShows Apple or Intel
Force a universal app to run translatedOpen using Rosetta checkboxUsed for legacy plug-ins
Run a command as x86-64arch -x86_64 before the commandUseful for build tools
Install without user promptsoftwareupdate with the Rosetta optionFor fleet management
Practical tasks related to Rosetta 2

Developers should treat translation as a temporary fallback. Profiling under Rosetta 2 does not reflect native performance, and some tools behave differently when they detect a translated environment.

Limitations and the end of the transition

Translated apps usually run well, but always slower than native builds and with higher energy use. The gap varies with the workload: compute-heavy code with heavy vector use or constant code generation suffers most, while ordinary productivity apps often feel close to native.

  • First launch delays occur while the ahead-of-time translation is created.
  • Anti-cheat and copy protection that inspect the processor may refuse to run translated.
  • Drivers and system extensions require native versions from the vendor.
  • Apple has announced a phase-out: full Rosetta 2 support is planned to end after macOS 27, with only a limited subset kept for older games.

For organizations, the practical consequence is clear: inventory Intel-only software now and plan replacements or updates before translation is no longer available.

The idea in brief

Apps are written in the language of a specific processor. Older Mac apps speak the language of Intel chips, while new Macs use Apple’s own chips, which speak a different one.

Rosetta 2 acts as a fast, built-in interpreter. It translates an old app once, saves the translation and then runs it as if it had been written for the new chip. Most people never notice it working. It is meant to bridge the gap until developers update their apps, not to stay forever.

A practical scenario

A small accounting firm replaces its Intel iMacs with Mac mini computers using M-series chips. Most of its software is already available as universal apps, but a tax-form utility from a small vendor still exists only as an Intel-only build. On the first launch, macOS asks to install Rosetta 2; the office administrator later installs it on every machine with the softwareupdate command during setup.

The utility starts slowly the first time while its code is translated, then opens in a few seconds on each later launch and runs without errors. The administrator records it on a list of translated apps and asks the vendor for a native version, because Rosetta 2 is scheduled to be phased out. The firm completes the hardware move without losing access to any business software.