You flashed a Magisk module. Rebooted. Now your phone shows the logo, vibrates, shows the logo again, and never reaches the lock screen. That's a boot loop, and it almost always means the module you just installed is incompatible with your Magisk version or your Android build. Don't panic — your data is fine. The module is just blocking boot. Here's how to get out, starting with the easiest fix.
Before you start: what happened
Magisk loads modules early in the boot process, before the system UI even starts. If one of those modules throws a fatal error — a bad post-fs-data.sh script, a mismatched Zygisk version, a module built for Android 12 running on Android 14 — the boot stalls. The kernel keeps retrying, and you get the loop.
The good news: Magisk has built-in escape hatches so you don't have to wipe. Work through these in order. Stop as soon as your phone boots normally.
Fix 1: Boot into Magisk safe mode (30 seconds)
This is the fastest fix and it works on most phones. Magisk safe mode disables all modules for one boot cycle. Your phone boots clean, you open Magisk, delete the bad module, and reboot normally.
- Hold the power button until the phone force-restarts. You'll feel a vibration — keep holding through that first vibration and don't let go.
- When the second vibration hits (usually 3–5 seconds later), release the power button and immediately press Volume Down repeatedly.
- The phone should now boot into Android. It might take 60–90 seconds the first time because Magisk is rebuilding its state.
- Open the Magisk app. You'll see a banner that says "Safe mode is enabled" or the module list will show all modules as disabled.
- Tap Modules, find the module you just flashed, and tap Remove (the trash icon).
- Reboot. Your phone should boot normally.
If the second vibration never comes, or if Volume Down doesn't do anything, skip to Fix 2. Some OEMs (looking at you, Samsung and Xiaomi) block this key combo at the bootloader level.
Fix 2: Use Magisk's rescue script (5 minutes)
Magisk has a lesser-known feature called magisk --remove-modules. It runs from a shell and removes every module in one shot. You need access to a shell, which means either ADB from a computer or TWRP's terminal.
Option A: ADB from a computer
You need USB debugging enabled before the boot loop started. If you never enabled it, jump to Option B.
- Connect your phone to a computer with a USB cable.
- Open a terminal or Command Prompt and check ADB sees the device:
adb devices
You should see something like ABCD1234 device. If it says unauthorized, you can't use this method — the authorization prompt is stuck behind the boot loop. Move to Option B.
- Run the rescue command:
adb shell magisk --remove-modules
You'll see output like Removing modules... followed by a list of module IDs. The phone reboots on its own about 10 seconds later. It should boot clean.
Option B: TWRP terminal
If you have TWRP installed, this is your best friend.
- Boot into TWRP (usually Power + Volume Up, or Power + Volume Down depending on your device).
- Tap Advanced → Terminal.
- Type this exactly and hit Enter:
magisk --remove-modules
That binary lives in /data/adb/magisk/, and TWRP can reach it because it mounts /data by default. If the command returns not found, try the full path:
/data/adb/magisk/magisk --remove-modules
Reboot from TWRP's main menu. Your phone should boot normally with all modules gone.
Fix 3: Manually delete the module folder (15+ minutes)
If both of the above fail — or if you don't have ADB access and TWRP can't mount /data — you'll need to delete the module folder directly. This requires a custom recovery that can read /data.
Step 1: Boot into TWRP or OrangeFox
OrangeFox is friendlier if you have the choice. Either works.
Step 2: Mount /data
In TWRP, tap Mount and check the box next to Data. If mounting fails, your /data partition is encrypted and TWRP can't read it — you'll need to format data (which wipes everything) or sideload the Magisk uninstaller from ADB. That's a different article.
Step 3: Find the offending module
Every Magisk module lives in its own folder under /data/adb/modules/. Use TWRP's built-in file manager:
- Tap Advanced → File Manager.
- Navigate to
/data/adb/modules/. - You'll see folders named after each module. If you don't know which one is bad, look for the folder with the most recent modification date — that's your culprit.
Alternatively, from the terminal:
ls -la /data/adb/modules/
The timestamps will tell you which module you flashed most recently.
Step 4: Disable instead of delete (safer)
You don't have to delete the folder. Just create an empty file called disable inside it. Magisk skips any module with that file present.
touch /data/adb/modules/suspicious-module/disable
Or in TWRP's file manager, navigate into the module folder and create a new file named disable with no content. That way, if you guessed wrong, you can just delete the disable file and the module comes back.
Step 5: Reboot
Reboot from TWRP. Your phone should boot. If it still loops, repeat Step 4 on the next-newest module folder. Two or three bad modules stacked together is rare but it happens.
After you're booted: what to do differently
- Check the module's "last updated" date. A module that hasn't been touched in 18 months probably doesn't support your Magisk version.
- Enable Zygisk before flashing Zygisk modules. Sounds obvious. Half the boot loops I've seen come from this.
- Keep a TWRP backup from before you flash anything. Five minutes of backup saves an hour of recovery.
- Read the module's XDA thread, not just the Magisk repo listing. The repo doesn't show boot loop reports. The thread does.
If you're on Android 14 or 15 with Magisk 27+, you can also use Magisk's "Core Only Mode" toggle in the app settings before rebooting. It disables all modules without you having to delete anything. Enable it the moment you suspect a module is misbehaving, then reboot.
That's the whole flow. Safe mode first, rescue script second, manual deletion third. Nine times out of ten, Fix 1 gets you back to your home screen in under a minute.