DetoxDroid makes the restricted phone the default instead of the reward
Use your phone rather than letting your phone use you.
At a glance
- What is it?
- DetoxDroid is an Android app that inverts the usual digital detox model. Instead of starting a timer and trying to resist breaking it, it desaturates the apps you list, keeps Do Not Disturb on, breaks up long scrolling sessions and locks distracting apps behind a wait, with an emergency brake that closes the ways out when you notice you are slipping.
- Who is it for?
- Adopt DetoxDroid if you find that the standard focus-mode approach fails because the timer is opt-in and the reward for breaking it is a bright icon. Skip it if you want fine-grained app limits that you configure from a desktop, since this is a single-device app with an accessibility service, and if you need guaranteed enforcement, since a commitment password is a passphrase rather than a cryptographic lock.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly Kotlin, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 25, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The model is inverted on purpose
The app's description is a slogan: use your phone rather than letting your phone use you.
And the first line of the explanation is the sharpest criticism of the genre. Most digital detox apps are opt-in: you start a timer, then try not to break it.
That observation is the design brief for the whole project, and it is worth sitting with, because the opt-in model has a structural weakness. The timer is a thing you start when you already feel motivated, the state you want to reach is an absence of apps rather than an addition of restrictions, and breaking the timer returns you to a phone full of bright icons with no friction at all. The reward for giving in is maximal and the cost is zero.
DetoxDroid is the opposite. It makes a calmer phone your default state, and the three consequences listed are fewer colors, fewer notifications and fewer distracting apps.
That is a fundamentally different approach. Instead of one protected hour, you get a phone that is always quieter, and the question becomes whether the quiet is enough that you do not need a protected hour at all. And there is still the escape hatch, because you can still take intentional pauses when you need them.
The distinction between a default state and a session is the whole idea, and everything else in the feature list is an implementation of it.
The project is Kotlin, GPL-3.0 licensed, with the default branch master, releases v2.9.1 from 2026-10-13, v2.9.0 from 2026-10-10 and v2.8.2 from 2026-09-22, and the last push on 2026-10-22. There is a web version you can try in a browser at flx.es/detoxdroid, and the project carries Ko-Fi, LiberaPay and PayPal donation links.
Eight features, and the escalation ladder in them
The eight features are worth reading as a ladder rather than a list, because each one adds a layer of enforcement on top of the last.
Make Apps Boring is the base layer. Grayscale, dimmed and blurred. The apps you list lose their color, and on Android 12 and later they go blurry as well. The documentation notes that this works the minute you install the app, and that real grayscale is an upgrade handled separately.
Do Not Disturb by default is the second layer, and it stays on for as long as DetoxDroid runs.
Break Doom Scrolling is the third and the most interesting one. It detects long scrolling sessions, interrupts them, and keeps that feed locked for a cooldown. So the intervention is not a notification telling you to stop; it breaks the session and locks the specific feed for a while, which is a much more effective response because the interruption happens at the moment of the behaviour rather than before it.
Disable Apps is the fourth layer and it has three strengths, which you can pick between. An app can make you wait a few seconds before it opens, it can be blocked behind a warning screen, or it can be deactivated outright with the launcher icon and the notifications included. There is also a daily time budget, where every open costs the wait until the budget is gone and then the app locks.
The time budget is the most granular of these and the most interesting, because it turns a binary rule into a currency. You get a fixed allowance and the wait is the price of spending it.
The Pause Button is the release valve and it is deliberately bounded. You can pause from Quick Settings, from the assistant, or from a long-pressed hardware button, it auto-resumes, and there is a minimum gap between pauses. That last part is what stops the pause from becoming the new default.
The Emergency Brake is the sixth and it is the one that understands how this actually fails. For the moment you notice you are slipping, every feature you have switched on runs at its strictest and the ways out close: no pause, settings locked, and ending early takes a ten-minute wait. You can pull it from the app, from the break screen, from a Quick Settings tile, from a home screen icon, or from an automation app with a specific intent action:
am start -a com.flx_apps.digitaldetox.ACTION_PULL_BRAKEAnd it can pull itself after a few doom scrolling breaks in a row, which means the app can detect the pattern of failure without you asking.
The Commitment Password is the seventh, locking selected settings behind a passphrase. And the eighth is a minimal launcher widget, a text-only launcher for the apps you actually meant to open.
Installing it takes one permission
The installation section is unusually short for an Android app of this kind.
You install the APK from Releases and grant the accessibility service when the app asks. That is the whole setup, and every feature runs.
That last clause is worth emphasising because it is unusual. Most apps of this type ask for a long list of permissions, and a digital detox app in particular sounds like it should need special access. DetoxDroid's design keeps the permission surface to one: the accessibility service, which is what lets it observe which app is in the foreground, which is how it detects a scrolling session and how it knows which app to filter.
The mechanism for the visual filtering is described with the same precision. Where the system color filter is out of reach, DetoxDroid draws its own screen filter that washes the color out of distracting apps and blurs them, and on Android 12 and later the system drops the blur while battery saver is on.
So the app has a fallback tier: it draws its own filter when it cannot change the system one, and the system-imposed limit on the blur is respected. That kind of detail is what you only learn by running the thing on real hardware with battery saver on.
The repository layout backs up the packaging story. There is an app/ directory for the application, build.gradle.kts and settings.gradle.kts for the Gradle build, the gradle wrapper with gradlew and gradlew.bat, gradle.properties, and a fastlane/ directory. The fastlane directory holds the store listing, and there is an install/ directory holding the scripts used for the computer-based permission route.
The build is a Kotlin Gradle project with the Kotlin DSL, which is the current default for Android projects.
Real grayscale needs a permission Android does not offer
The optional upgrade is real grayscale, and the reason it is optional is a specific Android policy.
Android only lets an app touch the system color filter if it holds WRITE_SECURE_SETTINGS, and there is no permission dialog for it.
No dialog is the operative part. A normal permission is granted by the user with a prompt, and the app asks. This one cannot be prompted, so the only way to get it is to grant it out of band, and the project documents three routes.
Shizuku is the first and the recommended one, requiring no computer. The app ships a step-by-step wizard for this, it takes about five minutes, and Shizuku has to be restarted after every reboot although the permission itself stays. That last detail is the trade-off: no root, no computer, but a recurring manual step after every restart of the phone.
Root is the second, and it is one tap inside the app.
The third is from a computer, and it is the most involved. You enable developer mode and USB debugging, which means going to Android Settings, then About Phone, tapping Build Number repeatedly until developer mode is enabled, then opening Developer Options and enabling USB debugging. Some devices also require USB debugging (Security Settings) for pm commands, and some Xiaomi devices require a Mi account sign-in.
Then you connect the phone to your computer, download and unzip the installation script for your operating system, and run it. On Windows you should be able to run install_windows.bat by double-clicking the file, and on Mac and Linux you run bash install_<os-name>.sh. If the phone asks you to allow USB debugging for your computer, tap Allow. And optionally you disable USB debugging again.
There is also an escape hatch for people who would rather not run a script they cannot read. If the script does not work, or you would rather see what it does, there are manual installation steps in the wiki.
What the permission buys is stated precisely. Real grayscale replaces the overlay, and it also adds Extra Dim, which takes the screen below its normal minimum brightness. Grayscale, Extra Dim and the screen filter are separate switches, so you can also run the overlay on top of the real thing, which is the setting you want if you want the app to be visually flat and the screen to be dim even when the system brightness slider is at its lowest.
One troubleshooting entry, and it catches people out
The troubleshooting section has a single entry, and it is the one that catches out new users.
On some Pixel and Android 12 and later devices, you may see an app was denied access dialog when DetoxDroid cannot access usage data.
The fix is three steps. Open Settings, then Apps, then DetoxDroid. Tap the overflow menu and select Allow restricted settings. Then grant the permission. After this, DetoxDroid should read usage data normally.
That setting is one of the restricted settings that Android hides behind that menu by default, and it exists precisely so that an accessibility service cannot quietly read usage data. Which means the permission DetoxDroid needs to detect which app you are using is the same permission Android guards, and on some devices you have to go looking for it in a hidden submenu.
It is a small thing that would cost a new user an afternoon if it were not documented, and it is the kind of detail that comes from the maintainer having run into it on their own devices.
The support section is straightforward: feature suggestions and bug reports through the issue tracker, plus the four donation routes, which are Ko-Fi, LiberaPay as a patron, PayPal, and a Bitcoin address.
There is a maintained badge in the header, and the commit activity graph it links to is the way to check the claim for yourself rather than take it on trust. Given the release dates, the project is moving at a steady rate of a few releases a month.
Where this sits against the built-in focus modes
The comparison is with what Android already gives you, and Android's own focus modes are genuinely good.
The system has Do Not Disturb with per-app exceptions and scheduled schedules, a screen time dashboard that shows you where your hours went, and app timers that notify you when you have used an app for a set period. All of it is free, built in, and has no accessibility service watching your every move.
The difference is in what each one optimises for. The system features are informative and interruptive. They tell you that you have used an app for 40 minutes, and they let you dismiss the notification and carry on. DetoxDroid changes the default state of the device so that the notification never has to arrive.
That is a real difference in kind. A greyscaled, blurred icon is a different object to look at than a full-colour one, and the option to make an app wait several seconds before it opens turns a reflex into a decision. Neither of those things is possible with a system notification, because the system does not change what your apps look like.
The cost is the accessibility service and the app's own permission, which is a meaningful amount of trust to place in a tool whose whole purpose is to restrict you. It also means DetoxDroid cannot work on a device where the service is blocked, and it means the features depend on the behaviour of the Android version you are running, as the blur-under-battery-saver detail shows.
The comparison with the other detox apps is the one the project makes itself, and its argument is about defaults rather than about severity. The other apps are timers that you start. DetoxDroid is a state you stay in, with pauses carved out of it. If your problem is that you cannot resist starting the timer, that is the problem this addresses; if your problem is that you want a hard limit on one app for one period, the system timers are simpler.
There is also a philosophical point in the minimal launcher widget. Replacing your home screen with a text-only list of the apps you meant to open removes the visual channel through which you open things reflexively. Whatever else the app does, that changes what a phone looks like when you pick it up.
Editorial conclusion
Adopt DetoxDroid if you find that the standard focus-mode approach fails because the timer is opt-in and the reward for breaking it is a bright icon. Skip it if you want fine-grained app limits that you configure from a desktop, since this is a single-device app with an accessibility service, and if you need guaranteed enforcement, since a commitment password is a passphrase rather than a cryptographic lock. Verify first whether your device lets you grant restricted settings, since some Pixel and Android 12 devices block usage data until you allow restricted settings, and that you understand the accessibility service is doing the heavy lifting.
Frequently asked questions
How is DetoxDroid different from a focus mode or a timer-based detox app?
Most digital detox apps are opt-in: you start a timer and try not to break it. DetoxDroid makes a calmer phone the default state instead, with fewer colors, fewer notifications and fewer distracting apps, while still allowing intentional pauses. Its features work continuously: apps you list are grayscaled, dimmed and blurred, Do Not Disturb stays on, long scrolling sessions are interrupted and the feed locked, and apps can be made to wait before opening.
How do I install DetoxDroid and what permissions does it need?
You install the APK from the Releases page and grant the accessibility service when the app asks, which is the whole setup and every feature runs with it. Real grayscale is optional because Android only allows an app to touch the system color filter with WRITE_SECURE_SETTINGS, which has no permission dialog, so it is granted through a Shizuku wizard, with root, or with a script run from a computer over USB debugging.
What is the emergency brake in DetoxDroid and how do I trigger it?
The emergency brake is for the moment you notice you are slipping. For a set time, every feature you have switched on runs at its strictest and the ways out close: no pause, settings are locked, and ending early takes a ten-minute wait. You can pull it from the app, the break screen, a Quick Settings tile, a home screen icon, or from an automation app with the intent action `am start -a com.flx_apps.digitaldetox.ACTION_PULL_BRAKE`, and it can also trigger itself after a few doom scrolling breaks in a row.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/flxapps-detoxdroid)Was this useful?