How-to
How to uninstall system apps on Android with ADB (and bring them back)
List packages, disable them, remove them for your user with pm uninstall, restore them with install-existing, and the safety rules that keep a phone working.
Settings can disable many preinstalled apps, but not all of them. ADB, Google's command-line tool for Android, can disable or remove almost any package for your user account, without root. It is also completely reversible if you follow a few rules. This guide assumes ADB already works; if not, start with how to set up ADB.
What can ADB do that Settings can't?
ADB talks to the phone's package manager directly. That gives you three things Settings lacks:
- It can disable apps whose Disable button is hidden or greyed out.
- It can remove an app for your user, which hides it more completely than Disable.
- It can list every package on the phone, so you can review them all at once.
It cannot delete files from the system partition. Nothing you do here is permanent, which is exactly why it is safe to try.
How do I find the package name?
Every command needs the package name, such as com.samsung.android.app.spage, not the display name. List them all:
adb shell pm list packagesUseful filters:
adb shell pm list packages -s # system packages only
adb shell pm list packages -3 # apps you or a store installed
adb shell pm list packages -d # disabled packages
adb shell "pm list packages | grep facebook"The quotes in the last line make the search run on the phone, so it works the same on Windows, Mac and Linux. To find the package of an app you can open, open it and run:
adb shell "dumpsys window | grep mCurrentFocus"Paste the full list into the package-list audit to see a verdict next to each line, or look up a single name with the package lookup.
Should I disable or uninstall?
Start with disable. It is the gentler change and the easiest to reverse.
| Command | What it does | How to undo |
|---|---|---|
| pm disable-user --user 0 | Turns the app off for your user. It stays installed but cannot run. | pm enable |
| pm uninstall -k --user 0 | Removes the app for your user. The system copy stays. | cmd package install-existing |
Uninstalling for your user also removes the app from Settings lists and stops it receiving updates. Some apps that ignore Disable, or that another app keeps re-enabling, stay gone only when uninstalled this way.
How do I disable a package with ADB?
adb shell pm disable-user --user 0 com.samsung.android.app.spageThe phone answers with a line saying the new state is disabled-user. User 0 is the phone's main user. Test the phone for a day before you change anything else.
To turn it back on:
adb shell pm enable com.samsung.android.app.spageHow do I uninstall a package for my user?
adb shell pm uninstall -k --user 0 com.samsung.android.app.spageA reply of Success means it worked. The -k option keeps the app's data and cache directories, which makes a later restore smoother. The --user 0 part matters: it limits the change to your user, which is the only kind of removal ADB is allowed to make on a system app.
How do I bring a package back?
To restore an app you uninstalled for your user:
adb shell cmd package install-existing com.samsung.android.app.spageThis reinstalls the copy that is still in the system area. If you also disabled it earlier, run pm enable afterwards. Open the Play Store or the maker's store to bring it up to date. To see packages that are removed for your user but still on the phone, add -u to the list command:
adb shell pm list packages -uCompare that list with pm list packages to find what you removed. A factory reset also brings everything back, but you lose your data with it. Our guide to restoring a disabled system app covers more cases.
What does this not do?
Be clear about the limits before you start:
- It does not free system storage. The system partition is read-only and keeps its size.
- It is not permanent. A factory reset restores every app, and a major system update can reinstall or re-enable some of them. See what changes after an Android update.
- It does not affect other users or a work profile on the same phone. Each has its own user number.
- It does not root the phone or change the bootloader, so banking apps and system updates keep working.
What are the safety rules?
The commands are reversible, but a phone that will not boot is hard to fix with a command. These rules prevent that:
- Check the verdict first. Never remove a package marked Do not remove. That includes com.android.systemui, com.android.settings, the phone and messaging stack, the package installer and the launcher you use. On phones that use Google services, leave com.google.android.gms alone.
- Disable before you uninstall. If a disabled app causes no problems for a few days, you can then uninstall it.
- Change a few packages at a time and restart the phone between batches.
- Write down every package you change. Save your full list before you start:
adb shell pm list packages > before.txt- Keep USB debugging available until you are sure everything works, so you can undo changes.
- Leave a work-managed phone alone. Ask your administrator instead.
If an error mentions SecurityException or "cannot change component state", the package is protected; leave it. An error with DEVICE_POLICY_MANAGER means the app is a device admin, which you must turn off in Settings first.
How do I do many packages at once?
Once you know which packages are safe for your phone, a loop saves typing. On Mac or Linux:
for p in com.example.one com.example.two; do adb shell pm disable-user --user 0 $p; doneThe audit tool and the debloat checklist write a ready script with only the lines you tick, for Windows or for Mac and Linux. Our brand guides list the packages most people remove, starting with the Samsung list.
Which packages this touches
Questions people ask
Does pm uninstall --user 0 delete the app permanently?
No. It removes the app for your user only. The original copy stays in the system area, comes back after a factory reset, and can be restored at any time with install-existing.
Do I need root for these commands?
No. They run through ADB with USB debugging turned on. The phone is not rooted and the bootloader stays locked.
Why does uninstalling not free much space?
The original app lives on the read-only system partition, which does not shrink. You free only the space its updates, data and cache used.
Sources
- Android Developers: Android Debug Bridge (adb), package manager commandsDeveloper documentation
- AOSP source: PackageManagerShellCommand (pm and cmd package)Android source
- Android Help: Delete, disable and manage unused apps on AndroidVendor documentation
- Xiaomi Support: Why can't some system software be uninstalled?Vendor documentation
- Universal Android Debloater (community package list)Community list
Each source answered when this page was checked on 25 October 2026.
Written and checked by the MySystemApp editors. Something wrong or out of date? Request a correction.