TCleanner
In development
Search your own Telegram history with regular expressions — offline, on the phone — and
delete what you find, for everyone.
What it is for
People leave things in chats: a password sent in a hurry, a one-time code, an API key, a
card number, an address. Telegram's own search finds a word if you remember which chat it
was in and which form the word took. TCleanner builds a plain index of your history on the
device and lets you run a real regular expression over all of it at once, then select what
it found and delete it — for everyone, on every device, with the exact count in front
of you before anything goes.
It reads only your own account, never sends a message, and never indexes broadcast channels you subscribe to.
It reads only your own account, never sends a message, and never indexes broadcast channels you subscribe to.
Where the data is
There is no server. Nothing is collected, nothing is shared, and there is no account with
the developer to have. The index and the session live in the app's private storage on your
phone, excluded from device backups, and uninstalling takes them with it. The only network
traffic the app makes is to Telegram itself, as your client, over MTProto.
The full text is the privacy policy.
The full text is the privacy policy.
How it is built
Kotlin Multiplatform holds the domain and the presenters; the interface is native on each
platform — SwiftUI and Jetpack Compose over one shared state contract. Telegram is reached
through TDLib with its own message database switched off, because this app owns its index.
That index is SQLite through SQLDelight, searched by a full scan with an early stop rather
than a word index: a word index cannot answer a regular expression.
Behaviour is written down before it is written: eleven capability specifications with executable scenarios, and a linter that fails the build when the code stops matching their shape. Indexing paces itself at a page a second, resumes after a kill without losing more than the page in flight, and asks before it starts — with the message count, the megabytes and the minutes it will take.
Behaviour is written down before it is written: eleven capability specifications with executable scenarios, and a linter that fails the build when the code stops matching their shape. Indexing paces itself at a page a second, resumes after a kill without losing more than the page in flight, and asks before it starts — with the message count, the megabytes and the minutes it will take.
Status
Not in the stores yet. The whole product runs on both platforms — signing in, indexing,
searching, deleting — and there is a demo archive built in, so it can be used, and reviewed,
with no Telegram account at all. What is left before a release needs the outside world:
Telegram application credentials of its own, store accounts, and a run against a large real
archive. The source is private for now; this page and the policy are what it has in public.