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 type | Runs under Rosetta 2 | Reason |
|---|---|---|
| Intel-only macOS apps | Yes | Core purpose of the translator |
| Command-line tools and scripts with x86 binaries | Yes | Translated like any user process |
| Kernel extensions | No | Kernel code must be native Arm64 |
| x86 virtual machines such as Intel Windows | No | Requires full system emulation |
| Code using newer vector extensions | Partly | Support depends on macOS version |
| x86 Linux binaries in an Arm Linux VM | Yes, with setup | Rosetta can be shared with Linux guests |
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.
| Approach | What it runs | Mechanism |
|---|---|---|
| Universal binary | Native code for both architectures | No translation needed |
| Rosetta 2 | Intel macOS apps and tools | Binary translation with caching |
| Virtualization | Arm versions of Windows and Linux | Apple Virtualization framework or hypervisors |
| CrossOver and Wine | Windows x86 apps | API translation running under Rosetta 2 |
| Game Porting Toolkit | Windows games for evaluation | Wine, Rosetta 2 and a DirectX to Metal layer |
| Boot Camp | Intel Windows | Only on Intel-based Macs |
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.
| Task | How it is done | Note |
|---|---|---|
| Check an app’s architecture | Kind field in Get Info or the Activity Monitor kind column | Shows Apple or Intel |
| Force a universal app to run translated | Open using Rosetta checkbox | Used for legacy plug-ins |
| Run a command as x86-64 | arch -x86_64 before the command | Useful for build tools |
| Install without user prompt | softwareupdate with the Rosetta option | For fleet management |
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.