# Traffic Light: an Android data usage tracker that keeps the accounting local

> Traffic Light is an open source Android app that tracks network and data usage against your plan, with widgets, a status bar indicator and historical analytics, and it is distributed in two flavours that differ on whether Shizuku is available for multi-SIM accounting. The project is GPL-3.0, ships a privacy statement, and openly discourages machine-generated contributions.

**leekleak/traffic-light** — Track your network and data usage with privacy

- Repository: https://github.com/leekleak/traffic-light
- Stars: 902 · Forks: 35
- Language: Kotlin
- License: GPL-3.0
- Published: 2026-10-20 · Updated: 2026-10-20 · Language: en
- Canonical page: https://hysenlabs.com/projects/leekleak-traffic-light

## The problem: the number your carrier hides until you have already used it

Most mobile plans come with a data allowance, and most carriers will happily tell you what you have used, but only if you go and look, in an app that wants an account, or over a web page that wants a login. The number you actually want, the remaining allowance, is usually one screen further away than the number of minutes left.

Traffic Light is an open source tool for tracking network usage while ensuring total privacy, and the project says it was inspired by Internet Speed Meter and GlassWire. The name is a metaphor that explains the whole interface: a light that goes from green to amber to red as you approach the limit, instead of a number you have to interpret.

The audience is a person on a metered connection who wants the answer on their home screen, and the feature list is aimed squarely at that. There is data plan tracking, including for multiple SIMs, widgets, a status bar network indicator, in-depth historical data tracking and at-a-glance usage analytics. There is also a battery page in the wiki, and the project claims it uses less battery than alternatives, which is the claim that matters most for something that runs all day in the background.

The privacy claim is the differentiator and it is stated without hedging. No account, no server, and a PRIVACY.md file in the repository root. The licence is GPL-3.0, and the repository is not archived with the last push on 2026-10-11, so the app is being worked on. The release history is quick and recent: v3.4 on 2026-10-11, v3.3.2 on 2026-10-04 and v3.3.1 on 2026-09-30.

## The two flavours, and the Shizuku question that separates them

Traffic Light ships in two flavours, and the difference between them is not cosmetic.

The full flavour has all features and is available from GitHub releases, F-Droid and Obtainium. The Play flavour is on the Google Play Store and the table that lists the two says what it gives up: no Shizuku, and therefore no multi-SIM support.

That is a real functional difference, not a packaging detail. The multi-SIM tracking is what Shizuku enables, and Shizuku is the Android service that lets an app use system APIs it would otherwise need elevated privileges to reach, without root. The wiki has a dedicated page on setting up Shizuku for multi-SIM tracking, which tells you it is a setup step the user has to do rather than something the app can do for itself.

So the choice of flavour is the choice of capability. If you have a dual-SIM phone and want to know how much of your secondary plan is left, the Play Store version cannot do it. If you have one SIM and do not want to run a background service just to see a number, the Play version is simpler.

The distribution channels reinforce the choice. F-Droid and Obtainium exist for people who install from source and do not want a store account in the loop, and the GitHub releases cover everyone else who wants the newest build immediately. The Play Store version trades immediacy and the Shizuku capability for a one-click install.

## What the app actually shows you

The feature list is worth reading as a description of the daily experience.

Plan tracking is the core, and it is the feature that requires the most from the operating system, since the app has to know what your allowance is and count against it. Multiple SIMs extend that to the case where the allowance is split across lines, which is where Shizuku earns its place.

Widgets put the remaining allowance on a home screen, and the status bar network indicator puts a small persistent marker in the notification shade so the number is visible from any app. The wiki even has a page on hiding the status bar icon when you are disconnected, which is the kind of detail that only matters if the indicator is actually good enough to leave on.

The historical side is where most trackers of this kind get thin. In-depth historical data tracking and at-a-glance usage analytics are the two claims, and together they mean the app is trying to answer not just how much is left but how that number arrived there, which is a different question and the one that determines whether you change your habits.

The overall pitch is speed and appearance, fast and modern with a design the project describes as stunning, and there is a fastlane directory with store metadata and screenshots for the Play listing, which is the level of care a real published app usually shows.

There is also an iperfIntegration directory in the repository, which suggests the app can measure throughput directly rather than inferring it from the operating system counters, a detail that matters when you want to know whether the connection is actually slow.

## Distribution across four channels, and what each one implies

The project is distributed in four ways, and the choice of channel is a statement about who the audience is.

GitHub releases is the direct route and gives you the newest version the day it is tagged, which is why the release cadence of a few days between 3.3.1, 3.3.2 and 3.4 is usable at all. F-Droid provides an independently maintained build for people who prefer their software to come from a repository with its own review process. Obtainium is a third option that tracks the GitHub releases and updates an installed app from them, so it gives you a store-like update experience without a store.

The Play Store version is the fourth, and it exists because a great many people will not install anything that is not in the Play Store. It is the same application with the Shizuku-dependent capability removed, which is the part of the design that a store build can carry.

For a user who values the privacy claim, the channel matters less than it might appear, because the tracking happens on the device either way. What changes is where the binary comes from and how quickly you get updates. Someone who wants the newest build and reads release notes will use GitHub or Obtainium, and someone who wants the app to update itself alongside everything else will use the Play Store and accept the reduced feature set.

The package name is com.leekleak.trafficlight in every channel, so an install from one flavour and a later install from another channel is a straightforward replacement rather than a second app.

## Privacy as a property of the architecture, not a promise

The privacy claim deserves a technical reading rather than a marketing one, because a tracker that runs all day on your phone has obvious opportunities to leak.

The architecture is what makes the claim plausible. Everything the app knows about your usage comes from counters the operating system already keeps, and the accounting happens on the device. There is no account, because there is no server holding your history, and there is no sync, because there is nothing to sync to. The PRIVACY.md file in the repository root is where the specifics are supposed to live, and its presence is the minimum evidence for the claim rather than the whole of it.

The comparison with the tools it takes inspiration from is instructive. Internet Speed Meter and GlassWire are the well known names in this category, and both have a commercial relationship with the data: the app you check your allowance in is not the same app that helps you find a cheaper plan. Traffic Light's answer is that the app is free, open source and has nothing to sell you, which is why the licence is GPL-3.0 and why the code is available to read.

That combination has a consequence for adopters. An app that has no business model has to be maintained by someone who wants to maintain it, and the project is explicit that it is a complex app relying on interfacing with obscure Android APIs, which is hard to test and hard to verify. The GPL-3.0 licence means anyone can fork it, audit it, or take the privacy properties as a starting point for their own build, and for an organisation with a policy on network telemetry that option has value on its own.

## The repository layout, the build flavours and the module split

The top-level entries show a conventional Gradle Android project with one unusual choice: the product flavours are directories.

There is app/ for the application, and then three integration directories that correspond to the variants of the app: shizukuIntegration/, playIntegration/ and iperfIntegration/. The settings file and the build script in Kotlin DSL tie them together, and the .gitmodules file suggests at least one of those pieces is pulled in as a submodule rather than vendored.

That is a sensible way to express the trade described earlier. The Shizuku integration, the Play Store integration and the throughput measurement are separable concerns, and keeping them in their own modules means the core app does not have to know which capability set it was built with.

The rest of the tree is standard. There is a fastlane/ directory holding the store listing metadata and the screenshots, a branding/ directory with the badge images and the feature graphic, a gradle/ directory with the wrapper, gradle.properties, build.gradle.kts, settings.gradle.kts, the gradlew and gradlew.bat wrappers, and a .github/ directory for the workflows and issue templates. CONTRIBUTING.md and LICENSE sit at the root next to PRIVACY.md.

The issue templates matter here, because the documentation asks contributors and reporters to follow the template, and says that reports not following the general outline will be closed without further consideration. On a project where a bug report often depends on the reporter's device, their carrier and their network configuration, a structured template is how the maintainer gets the information needed to reproduce anything at all.

## The LLM policy, and where this app is the wrong answer

The contributions section contains an explicit LLM policy, and it is unusual enough to quote in substance. The project states that it is a complex app relying on interfacing with obscure Android APIs, that this makes it hard to test and verify, and that this makes it a poor match for agentic workflows, so their use for contributions is heavily discouraged. It asks people not to use LLMs to generate issues and pull request descriptions, because they add no useful information and make the work harder to read, and it says that ignoring the policy earns a warning first and a permanent ban from contributing on the second strike.

That is a defensible position for this particular project, and it is worth understanding rather than judging. The hard part of an app like this is not writing code, it is reproducing a counter discrepancy on a specific carrier, a specific Android version and a specific OEM build. A generated bug report that says the number is wrong is not a step towards a fix.

Code contributions are still welcome, with the ordinary condition of creating an issue first and explaining why a feature would be useful to you. Translations are handled through Weblate, which the documentation links with a status widget, so a translator does not need to touch the repository at all.

As for when this is the wrong tool: if you are on iOS, or on a desktop, or you want a network monitor that shows per-connection traffic rather than a plan allowance, this is not it. If you have a multi-SIM phone and use the Play Store build, the multi-SIM tracking you are paying attention to is not there. And if your carrier reports usage in a way the operating system does not surface, no amount of app will make the number correct. The wiki, with its troubleshooting page and its Shizuku setup guide, is where those questions get answered, and the documentation suggests looking there first for whatever you need.

## Conclusion

Adopt Traffic Light if you are on Android, you are on a metered plan, and you want to see how much data you have left without handing your usage history to a third party. Do not adopt it if you need multi-SIM accounting and you cannot or will not run Shizuku, in which case the Play flavour is the only one available to you, and do not expect iOS or desktop support. Before you install, read PRIVACY.md and the wiki troubleshooting page, and check whether your device exposes per-SIM counters at all, because the accuracy of the plan tracking depends on what the operating system reports.

## FAQ

### What is Traffic Light and what does it track?

It is an open source Android app for tracking network and data usage with a focus on privacy. It provides data plan tracking including multiple SIMs, widgets, a status bar network indicator, historical data tracking and usage analytics.

### What is the difference between the full and Play flavours of Traffic Light?

The full flavour has all features and is distributed through GitHub releases, F-Droid and Obtainium, while the Play flavour comes from the Google Play Store. The Play flavour has no Shizuku, and therefore no multi-SIM support.

### How do I get multi-SIM tracking in Traffic Light?

You need the full flavour, because multi-SIM tracking depends on Shizuku, and the Play flavour does not include it. The project wiki has a dedicated page on setting up Shizuku for multi-SIM tracking.

### Does Traffic Light send my usage data anywhere?

The project describes the app as fully private, with no account and no cloud sync, and ships a PRIVACY.md file in the repository. The accounting is done on the device from counters the operating system already keeps.

### What licence is Traffic Light released under?

GPL-3.0, with the LICENSE file at the root of the repository. The latest release is v3.4 on 2026-10-11, and the last push was on the same date.

## Sources

- [Issues](https://github.com/leekleak/traffic-light/issues)
- [leekleak/traffic-light on GitHub](https://github.com/leekleak/traffic-light)
- [License: GPL-3.0](https://github.com/leekleak/traffic-light/blob/main/LICENSE)
- [README](https://github.com/leekleak/traffic-light/blob/main/README.md)
- [Releases](https://github.com/leekleak/traffic-light/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/leekleak-traffic-light
