macOS available now · Linux coming soon

Most Mac apps can't become a .exe. toexe tells you in a second.

toexe is a terminal tool. Run toexe in a folder that contains .app bundles. It finds them, detects what each one is built on, and tries to convert it. Electron apps are repackaged into a real Windows .exe folder. Apps built on Swift, Qt, Flutter and similar frameworks are refused right away. Simple Java/JAR-based apps can be wrapped for Windows.

curl -fsSL https://raw.githubusercontent.com/tommfr38/toexe/main/install.sh | sh

Then cd to a folder of apps and run toexe. Works on Intel and Apple Silicon Macs, because it only inspects the bundle. See exactly what can and can't convert.

toexe sorts each .app into a Windows build, a Java wrapper or a refusal A .app bundle enters a toexe inspection step. An Electron app is repackaged with the Windows Electron runtime, and a simple Java or JAR app is wrapped for Windows and needs a Windows JRE. Everything else, such as Swift apps, is refused with a message. .app toexe inspect Electron or Java Electron: Windows .exe Java: wrapper, needs JRE Everything else Swift, Qt, SwiftUI, Flutter, Tauri, Unity, CEF... cannot become exe possible most apps

Read this first

A native macOS app is compiled for macOS and calls Apple-only frameworks. No tool can generically turn that into a Windows program, and toexe doesn't pretend to. It refuses those apps immediately, so you get a clear answer instead of a broken file. What it can do is repackage Electron apps (their code is JavaScript, so it runs on the Windows build of Electron) and wrap simple Java apps. Even then, test the result on Windows: toexe cannot run it for you.

What it actually looks like

With several apps in a folder, toexe shows a numbered list and asks which one. Here is an Electron app converted, a Swift app refused, then a Java app wrapped.

~/Downloads — zsh
~/Downloads $ toexe
Found 4 apps in ~/Downloads:
  1) JarPeek.app
  2) Markr.app
  3) Notely.app
  4) Sketchbox.app
Which to convert? [number, 1,3, 2-4, all, q] 3,4
Notely.app
  Detected: Electron (repackaged with the official Windows Electron runtime)
  Created a Windows app (Electron 33.2.1, win32-x64)
    Notely.exe  (the Windows Electron runtime running this app's code)
  Not run on Windows by toexe. Test the result on a Windows machine.
 
Sketchbox.app
  Swift based apps cannot become exe
  Why: Swift apps are compiled to native macOS machine code against Apple frameworks. Nothing can be repackaged.
 
1 converted, 1 refused
 
~/Downloads $ toexe JarPeek.app
JarPeek.app
  Created a Java WRAPPER (NOT a native .exe)
  Requires a Windows Java runtime (JRE) on PATH.
 
1 converted, 0 refused

Example session with made-up app names. The messages follow the real CLI output; the Swift "Why" line is shortened.

How it works

Three steps. No GUI, no account.

  1. Install

    Run the one-line installer in your terminal. It needs macOS and Node 18 or newer.

    curl -fsSL https://raw.githubusercontent.com/tommfr38/toexe/main/install.sh | sh
  2. Run it where your apps are

    In any folder with .app bundles, type toexe. It finds them and, if there are several, shows a numbered list and asks which one.

    cd ~/Downloads && toexe
  3. Get a verdict

    toexe inspects the bundle to see what the app is built on. If that is a framework it can't handle, it stops and says so. An Electron app gets a Windows folder with a real .exe, and a simple Java/JAR app gets a Windows wrapper.

    Swift based apps cannot become exe

What can and can't convert

toexe doesn't translate Mac code. It identifies the framework and either refuses, repackages an Electron app with the Windows Electron runtime, or, for simple Java apps, wraps the JAR.

App framework and what toexe does with it
App is built onResultWhat you see
Simple Java / JAR Wrapped A Windows wrapper around the JAR. Not a native exe: the Windows machine needs a Java runtime (JRE).
Electron Converted A folder with a real .exe: the official Windows Electron runtime (downloaded and checksum-verified) running your app's code. Refused with Electron apps with native macOS modules cannot become exe if the app has .node modules, or Electron based apps cannot become exe if its version can't be read.
Swift Refused Swift based apps cannot become exe
Objective-C / AppKit Refused Refused with the same kind of message.
SwiftUI Refused Refused with the same kind of message.
Qt Refused Refused with the same kind of message.
Flutter Refused Refused with the same kind of message.
Tauri Refused Refused with the same kind of message.
Unity Refused Refused with the same kind of message.
CEF (Chromium Embedded) Refused Refused with the same kind of message.
Plain C++ or anything unrecognized Refused Unrecognized app type: toexe could not identify a convertible runtime. Compiled native code can't be translated, so nothing is produced.
  • Refusing is the feature. If an app can't be converted, toexe says so immediately instead of producing a file that won't run.
  • Electron results are untested on Windows. toexe cannot run the output. No icon is embedded in the .exe, and apps that use macOS-only Electron APIs may behave differently.
  • A Java wrapper is not an exe. The Java/JAR result depends on a Java runtime being installed on the Windows machine. Test it there.
  • Your rights. Only work with apps you have the right to modify or redistribute, such as your own or open-source ones.

Platforms

Where you can run toexe today.

macOS

Available

Runs on Intel and Apple Silicon Macs, since it only inspects the .app bundle.

Linux

Coming soon

Not available yet, and there is no date. This website collects no data: no sign-up, no analytics, no cookies.

FAQ

Why can't it convert every app?

A native Mac app is machine code compiled for macOS that talks to Apple's own frameworks, and frameworks such as Qt, Flutter, Tauri and Unity ship macOS-specific binaries too. Windows has none of those pieces, so there is no generic translation. Any tool claiming to convert any Mac app to a Windows exe is overselling. toexe checks what the app is built on and refuses what it can't honestly handle.

Does it work on Apple Silicon?

Yes. It works on both Intel and Apple Silicon Macs because it only inspects the app bundle and doesn't run the app.

Does it convert Electron apps?

Yes, with limits. An Electron app is a copy of the Electron runtime plus your app's JavaScript. toexe downloads the official Windows build of the same Electron version from GitHub, verifies its checksum, and puts the app's code into it. You get a folder with <App>.exe that is a real Windows executable. Apps with native Node modules (.node files built for macOS) are refused, and toexe can't test the result on Windows, so check it there. Use --arch to pick x64, arm64 or ia32.

What does it do with a Java app, and do I need Java?

For a simple Java/JAR-based app it creates a Windows wrapper around the JAR. That is not a native exe, so the Windows machine needs a Java runtime (JRE) installed to run it. Complex apps that merely use Java alongside other components may still be refused.

My app was refused. What now?

Look for an official Windows version from the developer. If the app is open source, it can often be built for Windows from its source code. toexe can't help with either, but it will have saved you from a broken file.

How do I install it?

Run curl -fsSL https://raw.githubusercontent.com/tommfr38/toexe/main/install.sh | sh. It downloads the latest release from GitHub, checks its checksum, installs to ~/.toexe and adds a toexe command in ~/.local/bin. No sudo needed. Then run toexe in a folder with your apps.

When is Linux support coming?

It is planned, but there is no date. macOS is the only available platform today.