---
title: "macOS — Windows 11 USB Creation when install.wim Exceeds 4 GB (wimlib split)"
aliases: [macos-windows-usb, wimlib-split, windows-usb-fat32, install-wim-split]
tags: [macos, windows, usb, wimlib, fat32, bootable-usb]
sources:
  - "daily/2026-05-08.md"
created: 2026-05-08
updated: 2026-05-08
---

# macOS — Windows 11 USB Creation when install.wim Exceeds 4 GB (wimlib split)

Modern Windows 11 ISOs include an `install.wim` that exceeds 4 GB — above the FAT32 single-file limit. balenaEtcher and `dd` fail silently or produce an unbootable drive. The correct approach is to copy the ISO contents manually and split `install.wim` into `.swm` chunks using `wimlib-imagex`.

## Key Points

- FAT32 maximum single-file size is 4 GB; modern `install.wim` is typically 5–6 GB.
- `balenaEtcher` on macOS fails silently when the ISO contains files exceeding this limit.
- `wimlib-imagex split` produces `.swm` (split WIM) files the Windows installer detects automatically.
- The USB must be formatted **FAT32 MBR** (not exFAT, not GPT) for UEFI legacy compatibility.
- All ISO contents are copied first; `install.wim` is excluded and replaced with the split `.swm` files.

## Procedure

### 1. Install wimlib

```bash
brew install wimlib
```

### 2. Format the USB as FAT32 MBR

```bash
diskutil list                        # identify the USB disk, e.g. /dev/disk4
diskutil eraseDisk FAT32 WINUSB MBRFormat /dev/disk4
```

### 3. Mount the ISO

```bash
hdiutil attach /path/to/Win11.iso    # mounts as /Volumes/CCCOMA_... or similar
```

### 4. Copy ISO contents excluding install.wim

```bash
rsync -avh --exclude=sources/install.wim \
    /Volumes/CCCOMA_X64FRE_EN-US_DV9/ \
    /Volumes/WINUSB/
```

Replace the mount path with the actual volume label.

### 5. Split install.wim into 3 GB chunks

```bash
wimlib-imagex split \
    /Volumes/CCCOMA_X64FRE_EN-US_DV9/sources/install.wim \
    /Volumes/WINUSB/sources/install.swm \
    3000
```

The `3000` argument is the maximum chunk size in MB. This produces `install.swm`, `install2.swm`, `install3.swm`, etc.

### 6. Eject and boot

```bash
diskutil eject /dev/disk4
```

Boot the target machine from USB. The Windows installer automatically detects `install.swm` alongside the original `install.wim` reference.

## Why .swm Works

The Windows Setup loader (`setup.exe` / WinPE) understands Split WIM format natively. When it encounters `install.swm` in `sources/`, it reassembles the parts in memory during installation. No user action is required — the file picker shows a single "Windows 11" entry as normal.

## Common Mistakes

| Mistake | Result |
|---------|--------|
| Using balenaEtcher with a modern ISO | Silent failure or unbootable USB |
| Formatting as exFAT | Some older UEFI firmware can't boot exFAT |
| Forgetting `--exclude=sources/install.wim` in rsync | Rsync hangs or fails on the oversized file |
| Splitting to the wrong destination path | Installer can't find `.swm` files |

## Related Concepts

- [[wiki/concepts/apple-silicon-usb-passthrough]] — when the USB becomes hardware-locked read-only after a `dd` write, use UTM for recovery
- [[wiki/concepts/kingston-usb-readonly-lock]] — Kingston DataTraveler read-only controller lock triggered by macOS `dd`

## Sources

- [[daily/2026-05-08.md]] — Windows 11 USB creation on macOS Apple Silicon; install.wim was 5.4 GB; balenaEtcher failed silently; wimlib split resolved the issue
