How to disable any pre-installed system app bloatware on Android without root

How to disable any pre-installed system app bloatware on Android without root

What we define as “bloatware” is subject to personal preference, but I think we can all agree that some manufacturers and carriers are more guilty of including it on their smartphones than others. Bloatware can, depending on your point of view, range from being a pre-installed app like Facebook to the stock, non-Google Photos gallery app. One person’s hated bloatware is another person’s beloved feature, but unfortunately for the person who classifies certain pre-installed apps as bloatware, they typically can’t uninstall it. Sometimes you can disable system apps, but not every system app will let you disable it.


There are ways around these limitations, though. We wrote a guide a while back that taught you how to “uninstall” any pre-installed system app on your Android smartphone or tablet. The problem with that method is twofold: it doesn’t actually fully uninstall the app and return space to the user and reverting the change requires you to either sideload the APK (if you can find it) or factory reset. Still, that method is quite useful and we’ve seen dozens of forum posts and user scripts taking advantage of it to debloat their new Android devices. To help users debloat their devices in a safer way, we would like to turn your attention towards another method that will not only disable the pre-installed bloatware of your choosing but also make it super easy to re-enable them at your convenience, making any mistake a lot easier to recover from. We’ll still be using ADB commands to mess with system applications so be sure you don’t disable anything absolutely critical (use your best judgment), but this method is a lot friendlier in case you disable the wrong app.

Disable Any Pre-Installed System App On Android Without Root

  1. Follow this tutorial to get ADB up and running on your Windows, Mac, or Linux PC. ADB, or Android Debug Bridge, is a developer tool that lets you issue some powerful commands to control your device. We use it a lot in our tutorials to do things that you otherwise can’t do without a rooted device.
  2. Download an app like App Inspector from the Google Play Store.
  3. Get the package name of the app you want to disable using App Inspector. Here are screenshots showing you how:
  4. Launch a Command Prompt/PowerShell (Windows) or Terminal (Mac/Linux) in the directory where you stored the ADB binary. For Windows users, this can be done by holding shift then right-clicking in the folder. In the menu, select the “open command window here” or “open PowerShell window here” option.

    Opening command window on Windows 10

  5. Once you’re in the command prompt or terminal, enter the following command depending on your OS:
    Windows Command Prompt: adb shell pm disable-user --user 0 <package_to_disable>
    Windows PowerShell: .\adb shell pm disable-user --user 0 <package_to_disable>
    Mac/Linux Terminal: ./adb shell pm disable-user --user 0 <package_to_disable>
  6. For example, here’s what it looks like if you wanted to remove Cleanmaster (com.miui.cleanmaster) which comes preinstalled as part of MIUI on the Xiaomi Mi Mix 2S:
    Windows Command Prompt: adb shell pm disable-user --user 0 com.miui.cleanmaster
    Windows PowerShell: .\adb shell pm disable-user --user 0 com.miui.cleanmaster
    Mac/Linux Terminal: ./adb shell pm disable-user --user 0 com.miui.cleanmaster

And we’re done! The app should immediately become disabled and will disappear from your launcher. Do note that on rare occasions, some apps may automatically be re-enabled if the system has a function to re-enable it. For example, disabling the stock EMUI 9 launcher on Chinese Huawei or Honor devices will result in the stock launcher become automatically re-enabled after some time. If that bothers you, try the “uninstall” method.

Re-enable Any Disabled Pre-installed System App

What if you disabled an app and want it back? It’s very easy to re-enable the app! First, go to Settings > Apps and look at the “All apps” list (it may be located somewhere different on your device.) Usually, you can filter here to see the names of all disabled apps. Once you know what app you want to re-enable, follow these steps:

  1. Open a command prompt or terminal window and run the following command:
    Windows Command Prompt: adb shell pm list packages -d
    Windows PowerShell: .\adb shell pm list packages -d
    Mac/Linux Terminal: ./adb shell pm list packages -d
  2. This command lists all disabled packages. Find the package name that corresponds to the app you want to re-enable. Now, just run the following command to re-enable one of them:
    Windows Command Prompt: adb shell pm enable <package_to_enable>
    Windows PowerShell: .\adb shell pm enable <package_to_enable>
    Mac/Linux Terminal: ./adb shell pm enable <package_to_enable>
  3. If you have any issues, try rebooting after re-enabling the app.

What did we do?

First of all, it’s important to differentiate what this command does and why it’s superior to the method that we used in our previous bloatware removal tutorial. In that tutorial, we uninstalled an application at a user level, which means it was still installed on the device in the system partition but not for the primary user (user 0). This is why to get it back you either needed to factory reset or sideload the APK. In this tutorial, we are disabling the app for the primary user rather than uninstalling it, which means that we can enable it without re-installing it again.

The pm disable-user command has been around for years, but it’s been overlooked in favor of pm disable. You would think that both pm disable-user and pm disable –user 0 would be identical, but you would be wrong. For some reason, the disable-user command lets you disable basically any application you want while the regular disable command is quite limited.

The best part about this method is that if you mess up and disable an application that you shouldn’t, it’s a really easy fix. You’ll also still receive OTA updates as you aren’t actually modifying any system files. That’s why we need the “–user 0” part of our command, which specifies that the app will only be disabled for the current user, not all users, which would require root access.

About author

Adam Conway
Adam Conway

I'm the senior technical editor at XDA-Developers. I have a BSc in Computer Science from University College Dublin, and I'm a lover of smartphones, cybersecurity, and Counter-Strike. You can contact me at [email protected] My Twitter is @AdamConwayIE and my Instagram is adamc.99.

We are reader supported. External links may earn us a commission.