How to Uninstall or Disable System Apps on Android Without Root Using ADB

14 min read Learn step‑by‑step how to safely remove or disable unwanted system apps on Android without rooting, using ADB commands, with troubleshooting tips. October 10, 2026 03:00 How to Uninstall or Disable System Apps on Android Without Root Using ADB

Many Android devices ship with pre‑installed applications—often called bloatware—that you cannot remove through the normal Settings UI. These apps consume storage, run background services, and sometimes display unwanted ads. If you are not willing to root your device, the Android Debug Bridge (ADB) provides a safe, reversible way to disable or even uninstall many of those system packages.

Why ADB works when the UI does not

System apps are stored in the /system partition, which is read‑only for normal users. The Settings app only offers a “Disable” toggle for some of them. ADB, when run with the pm (package manager) tool, can issue commands directly to the system service that controls packages. Because ADB runs as a privileged shell user (not as root), it can request the system to hide or remove a package without altering the /system image. The change is stored in the device’s pm database, making it reversible by re‑enabling the app later.

Before you start

  • Backup important data. The process does not touch personal files, but a faulty command could affect app functionality.
  • Charge your phone to at least 60 %. A loss of power during a command can leave the package manager in an inconsistent state.
  • Enable Developer Options. Go to Settings > About phone and tap Build number seven times.
  • Enable USB debugging. In Settings > System > Developer options, toggle USB debugging on.
  • Install ADB on your computer. The official platform‑tools package from Google works on Windows, macOS, and Linux.

Step 1 – Install and verify ADB

  1. Download the latest platform‑tools zip for your OS.
  2. Extract the folder to a convenient location (e.g., C:\adb or ~/adb).
  3. Open a terminal (Command Prompt, PowerShell, or Terminal) and navigate to the folder.
  4. Run adb version. You should see something like Android Debug Bridge version 1.0.41. If you get an error, ensure the folder is in your PATH or call it with the full path.

If the command succeeds, ADB is ready. Next we need to confirm the phone is recognized.

Step 2 – Connect your device

  1. Connect the phone to the computer with a USB‑C or micro‑USB cable.
  2. On the phone, you will see a prompt “Allow USB debugging?”. Tap Allow. You can also check Always allow from this computer to avoid the prompt on subsequent connections.
  3. In the terminal, run adb devices. The output should list a device serial number followed by device.
    List of devices attached
    ABCD1234    device

If the device appears as unauthorized, re‑grant the permission on the phone or try a different cable.

Step 3 – Identify the package name of the unwanted app

Every Android app has a unique package identifier (e.g., com.example.app). You need this name to issue ADB commands.

  1. Open the Settings app on the phone and navigate to the app’s info screen (usually Settings > Apps > [App name]).
  2. Scroll down to the bottom; some OEM skins display the Package name directly. If not, note the exact app name for the next step.
  3. Back on the computer, run:
    adb shell pm list packages -3 | grep -i "partial_name"
    Replace partial_name with a distinctive part of the app’s name (case‑insensitive). The -3 flag limits the output to third‑party apps; omit it to see system packages as well.
  4. Example: To find the package for the pre‑installed “Facebook” app, run:
    adb shell pm list packages | grep -i facebook
    You might see:
    package:com.facebook.katana
    The string after package: is the identifier you will use.

If you cannot locate the package, you can list all system packages and search manually:

adb shell pm list packages -s

Step 4 – Decide: Disable vs. Uninstall

Not every system app can be fully uninstalled without root. Android distinguishes three states:

  • Disabled – The app remains on the device but is hidden and its background processes are stopped. This is safe and reversible.
  • Uninstalled for the current user – The app’s APK stays on the system partition, but the user profile no longer sees it. This frees up storage for the user’s data partition.
  • Completely removed (requires root) – The APK file is deleted from /system. ADB cannot do this without root.

For most bloatware, “disable” is sufficient. If the app occupies significant space in /data (e.g., pre‑installed games), you can uninstall it for the user.

Step 5 – Disable an app

  1. Run the command:
    adb shell pm disable-user --user 0 com.example.bloatware
    Replace com.example.bloatware with the package you identified.
  2. ADB will respond with Package com.example.bloatware new state: disabled-user if successful.
  3. Verify by opening the app drawer – the icon should disappear. You can also check the app’s status with:
    adb shell pm list packages -d | grep com.example.bloatware
    If it appears in the list, it is disabled.

Disabling also stops any background services the app may have started, which can improve battery life.

Step 6 – Uninstall an app for the current user

  1. First, disable the app (some OEMs require the app to be disabled before uninstalling):
    adb shell pm disable-user --user 0 com.example.bloatware
  2. Then uninstall for the user:
    adb shell pm uninstall --user 0 com.example.bloatware
  3. A successful response looks like Success. The package is now removed from the user profile, freeing up its data directory (usually /data/user/0/com.example.bloatware).
  4. To confirm, run:
    adb shell pm list packages -u | grep com.example.bloatware
    If the package does not appear, it is gone for the current user.

Note that the APK still resides on the system partition, so a factory reset will restore the app.

Step 7 – Re‑enable or reinstall a disabled/uninstalled app

If you later discover that the app was needed (e.g., a carrier‑specific service), you can bring it back.

  1. To re‑enable a disabled app:
    adb shell pm enable com.example.bloatware
  2. To reinstall an app you uninstalled for the user, run:
    adb shell cmd package install-existing com.example.bloatware
  3. Both commands should return Success. The app will reappear in the launcher.

Step 8 – Automate the process (optional)

If you have several apps to debloat, you can place all commands in a simple batch (Windows) or shell (Linux/macOS) script. Example for a Windows .bat file:

@echo off
adb devices | findstr /i "device" >nul || (echo Connect a device first & pause & exit /b)

set APPS=\
    com.example.bloatware1 \
    com.example.bloatware2 \
    com.example.bloatware3

for %%A in (%APPS%) do (
    echo Disabling %%A …
    adb shell pm disable-user --user 0 %%A
    echo Uninstalling %%A …
    adb shell pm uninstall --user 0 %%A
)

echo All done.
pause

Replace the placeholder package names with the ones you want to remove. Running the script will process each entry sequentially.

Step 9 – Troubleshooting common issues

9.1 Command returns “Permission denied”

Some OEMs (e.g., Samsung, Huawei) lock down the package manager for certain system apps. In those cases ADB cannot disable or uninstall the package. You can try the following:

  • Check if the app is marked as a “Device admin” (Settings > Security > Device admin apps) and revoke the admin rights first.
  • Use the pm hide command as an alternative to disable-user:
    adb shell pm hide com.example.bloatware
  • If the app is still protected, you may need a specialized debloat tool that uses the OEM’s own APIs (e.g., adb shell dpm set-device-owner tricks) – these are beyond the scope of a no‑root tutorial.

9.2 App re‑appears after a reboot

Some carriers embed their apps in the “carrier‑config” partition, which can restore the app on boot. If this happens:

  • Confirm the package truly shows as disabled or uninstalled with adb shell pm list packages -d or -u.
  • If the package re‑appears, consider disabling the related “carrier services” app first, then repeat the debloat steps.

9.3 “Failure [INSTALL_FAILED_INVALID_URI]” when reinstalling

This error usually means the APK is not present for the current user. Use the install-existing command (as shown in Step 7) instead of a full APK install.

9.4 Device reports “Package not found”

Double‑check the exact spelling and case of the package name. The pm list packages output is authoritative.

Step 10 – Safety checklist before you start debloating

  • Make a list of apps you plan to remove. Keep a copy of the list in a text file for later reference.
  • Research each package online (search the package name). Some apps are essential for telephony, SMS, or device stability.
  • Avoid removing anything that mentions android, systemui, settings, telephony, carrier, or framework unless you are absolutely sure.
  • Test after each batch: reboot the phone and verify that calls, messaging, Wi‑Fi, and other core functions still work.

Alternative approaches (when ADB is not enough)

If ADB cannot disable a particular app, you have two main alternatives:

  1. Use a third‑party debloat app that works without root. Apps like Package Disabler Pro (Samsung) or Debloater (generic) use the device’s accessibility service to hide apps. They are less powerful than ADB but work on locked‑down devices.
  2. Flash a custom ROM or install a custom recovery. This is a more advanced route that requires unlocking the bootloader and typically voids the warranty. It gives you full control over the /system partition, allowing true removal of APK files.

Both methods have trade‑offs. The ADB technique described here offers the best balance of safety, reversibility, and no‑root requirement.

Final thoughts

Using ADB to disable or uninstall unwanted system apps gives you the same level of control that a rooted device provides—without the security and warranty risks of rooting. By following the steps above, you can reclaim storage, reduce background activity, and enjoy a cleaner Android experience. Remember to proceed methodically, keep a backup of your package list, and test after each change. If you ever need to revert, the same ADB commands bring the apps back, making this a truly low‑risk customization.

User Comments (0)

Add Comment
We'll never share your email with anyone else.