The scroll goes flat
Not slower — flatter. Several flicks in a row hunting for something that will hold you, then off again. That shape is the whole signal.
Android · nothing leaves your phone
ScreenLing waits for the scroll you did not decide to do. Then a small creature is drawn on top of it, and you can poke it, throw it, or tickle it until it laughs.
Nothing is blocked, nothing is counted, nothing is uploaded.
The moment
ScreenLing exists for that one moment, and for about eight seconds either side of it.
Not slower — flatter. Several flicks in a row hunting for something that will hold you, then off again. That shape is the whole signal.
A linglet, about the size of your thumb, drawn over whatever you were looking at. Nothing is dimmed. Nothing is locked.
Keep scrolling, or leave. Both are fine, nobody is keeping score, and it wanders off by itself either way.
How it knows
Both of them are “forty minutes in an app”. What separates them is the shape of the gestures, and it is not subtle once you look.
Someone working through an article advances once, then reads. Someone grazing a feed flicks four, six, eight times in a row hunting for something, stops on it for however long it happens to be worth, and comes back. ScreenLing looks for the second shape and nothing else.
Decline the accessibility service and it falls back to counting minutes in an app. Blunter, wrong more often, and still entirely on your phone.
One advance, then a steady, self-paced pause.
1flick in an average run
Bursts, then pauses of wildly uneven length.
8flicks in an average run
canRetrieveWindowContent="false", so Android does not hand it over.
never
Not another blocker
You have tried those. You quietly uninstalled them.
Why a creature and not a warning. A scrolling trance breaks when attention is captured, not merely obstructed. Something that plays back does that far more reliably than something that merely appears — which is also why the overlay draws no scrim, and why the buttons wait a few seconds before they arrive.
The eight
Eight ship in the app, and exactly one of them is chosen at any time. Tap to choose — they are the same drawings that turn up on the phone.
Playing with it
It arrives sulking — brows down, mouth turned down, faintly affronted — and the first couple of touches change its mind. A creature that turns up already delighted has nothing to give anybody.
Pokeit squashes, ticks under your thumb, and leaves a ripple
Dragit follows your finger continuously
Throwit coasts, spins, and bounces off the wall it hits — thoroughly pleased
Shovethe round ones roll, always landing the right way up
Ticklepoke it quickly a few times and it laughs, in sparks
Ignore itit wanders off, or stops and looks around for you
The creature itself is completely inert — a drawing with no code and no notion of input. Everything above is done to it from outside, which is the same property that makes it safe to draw over a stranger’s banking app.
Your business stays yours
Each one is a constraint built into the app, enforced by Android rather than by our good intentions.
The service’s packageNames is set at runtime to exactly the
apps you picked, so the operating system never delivers an event from
anything else. Not your keyboard, not your bank, not your messages.
Not the words, not the pictures. canRetrieveWindowContent
is declared false, so screen contents are not switched off
by us — they are never handed over in the first place.
No account, no sign-in, no analytics, no advertising ID, no crash reporter, no server that receives anything. There is no data for us to lose, because none of it ever reaches us.
The one time ScreenLing touches the network is when you open the
creature catalogue and install one. Those are static, signed files, and
nothing about you or your phone is sent with the request. Never open it and
the app makes no network requests at all.
Read the full privacy policy →
Safe to draw over anything
It is going to be drawn full-screen over a stranger’s banking app, so the format is inert by construction: one declarative renderer, no scripting, no external files — and no text layers at all, which is what makes it structurally incapable of imitating a system dialog.
A flash is a pair of opposing luminance changes. Requiring a direction reversal is what separates a strobe from a fade — and getting that distinction right is the one calculation in the product that is never approximated to save time.
Let it in, pick who turns up, and carry on with your evening.
Android only. The overlay behaviour this depends on does not exist on iOS.