Every app in this category says it respects you. We would rather you did not have
to take our word for it, so this page sets out what is actually in these games,
how it works, and how you can check without our cooperation.
No ads
There is no advertising code in these games. Not fewer ads, not optional ads,
not a rewarded video in exchange for a hint — none.
What that means, in plain terms
You know how some games carry a banner strip across the top or the bottom,
sitting in space the board could have used? There is none of that here.
You know how you finish a level and a full-screen ad takes over — sometimes
a video you sit through, sometimes an actual playable demo of some other game you
have to fumble through for thirty seconds before you are allowed back into the one
you were playing? That does not happen here either.
No ad when you open the app. No ad between puzzles. No countdown before a close
button appears, no close button that turns out to be four pixels wide or drifts as
you reach for it, and no accidental trip to the store when you miss it. No offer to
watch a video in exchange for a hint. No audio starting up unannounced because you
happened to be somewhere quiet.
These games do not have an advertising mode that is switched off. There is no
advertising in them to switch.
The details
No advertising network is in the build. These are .NET MAUI apps.
The third-party components they ship are SkiaSharp, which draws the boards;
RevenueCat, which handles purchases; the platform games service, for sign-in; and
Firebase, covered below. Nothing else. No AdMob, no Google Mobile Ads, no Unity Ads,
AppLovin, ironSource, Vungle, Chartboost or Meta Audience Network — none of
them appear anywhere in the dependency graph.
On Android, the advertising ID is actively removed, not merely unused.
Firebase pulls in a Google library that declares the AD_ID permission in
its own manifest, and Android merges that into the app unless you stop it. Every one
of our app manifests carries a directive that strips it back out:
We check the artifact, not the intention. Before any release can be
uploaded, a verification script runs against the built app bundle itself, and one of
its checks fails the build if that permission is present. It is a property of the file
that ships rather than a line in a policy — and it has to pass again for every
version, so it cannot quietly stop being true.
There is nothing to sell you. Some apps promising “no ads”
mean “no ads once you pay.” No such purchase exists here. Our catalogues
contain puzzle packs and nothing else — there is no ad-free upgrade, because
there is no version of these games with ads in it.
Checking this yourself
On the store listing. Google Play labels apps containing advertising
with a “Contains ads” badge. Ours carry none. That is Google’s
assessment of the binary, not our description of it.
On Android, in the package. Pull the APK and dump its manifest with
aapt dump permissions or apkanalyzer manifest permissions.
The only permissions declared are INTERNET and
ACCESS_NETWORK_STATE. AD_ID is not among them.
Your data
We never ask you for anything that identifies you, and we do not need to — you
can install any of our games and start playing without telling us a single thing about
yourself. If you choose to sign in, there is an identifier attached to your play, but
it cannot be traced back to you personally and it cannot be connected to your play in
any of our other games. The exact mechanism is spelled out below, in enough detail
that you can check it rather than take our word for it.
What that means, in plain terms
You never create an account with us. No email address, no password,
no confirmation link, no profile. There is nothing to sign up for — and so
nothing for us to leak, sell or lose.
“Signing in” here means something different from what it usually
does. It means letting the game-store account your phone already has vouch for
you — Google Play Games on Android, Game Center on Apple devices. You are not
creating anything, and you are not giving us a password. The platform tells us
“this is the same person as last time,” and we never learn who that
person is.
It is optional, and skipping it costs you almost nothing. Do not sign
in and every puzzle, every setting and every feature works exactly the same. The one
thing you give up is carrying your progress and purchases to a new or reset phone
— not because we are withholding it, but because there would be nothing for us
to attach them to.
If you do use it, the platform will greet you by name. Play Games and
Game Center both show their own welcome overlay with your player name when you sign in.
That is the platform saying hello, drawn on top of the game — not us. Our apps
are offered your display name and profile picture and read neither one. Nothing in any
of our games ever displays your name, because we never asked for it.
What we hold instead is an identifier we scramble, one way, and separately for each
game. If you play two of ours, you are two unrelated players as far as we can tell.
That is not a policy we follow — it is arithmetic we cannot undo.
We do measure how puzzles go, and we would rather say so than imply
otherwise. It exists so we can verify that a puzzle labelled Hard really is hard. What
it gives us is a row saying someone took 2 minutes 17 seconds on puzzle 14 and
used one hint — not that you did. We have no way to get from that row
to a person.
The details
What we never receive. No name, no email address, no phone number, no
contacts, no location. Not stored-and-protected — never collected. On Android the
apps declare exactly two permissions, INTERNET and
ACCESS_NETWORK_STATE. There is no location permission, no contacts
permission, and no notification permission that you will ever be prompted to grant.
How the identifier works. When you sign in, the platform gives us an
identifier that proves the sign-in is genuine. We use it to verify you and then throw it
away — it is never written to our database. What we store instead is the output of
an HMAC-SHA256 over that identifier combined with the game’s name, keyed with a
secret that exists only on our server and never ships inside the app.
The same person, signed in to two of our games
your store account IDcrosswordHMAC-SHA256secret key, server onlypg_7Kd9x2…stored for Crossword
your store account IDwordsearchHMAC-SHA256secret key, server onlypg_2Xb4mQ…stored for WordSearch
Same person, same account, two identifiers with no discoverable relationship. Your
account ID is verified and discarded; only the right-hand column is ever stored.
Three consequences follow from that:
The result cannot be reversed, and not by us either. There is no key that undoes it.
Because the game’s name is part of the input, the same person produces a
completely unrelated identifier in each of our games.
Because the secret key is not in the app, nobody who pulls our binaries apart can
reproduce the mapping either.
We removed the ability to correlate you rather than promising not to.
What a measurement contains. The puzzle’s identity, its difficulty
and size, whether you completed or abandoned it, active playing time, hints used, how
often you left the board or opened help, and which comfort settings were on at the time.
It is entirely numbers and fixed choices — there is no free-text field anywhere in
it, so nothing you type can reach us.
Measurements are stored against your scrambled per-game identifier, and
we would rather be direct about that than hide behind the word “anonymous.”
Without this hashed ID we could not tell one player’s twenty puzzles from twenty
players’ one, and the difficulty calibration would be meaningless. It remains
un-linkable to you, and un-linkable across our games, for the reasons above.
Who else receives anything. RevenueCat handles purchases and receives
the scrambled identifier and your purchase receipts — never a platform account
identifier. The app stores process the payment itself under their own policies. Firebase,
a Google service, currently provides crash reporting and basic usage analytics, disclosed
in full in the privacy policy. We are removing the analytics half
of it — not because we can see anything personal in it, but because Firebase
and its partners potentially can. We would rather give up our own dashboards than
route your play through a third party whose downstream use we cannot inspect or vouch for.
Server logs. Ordinary operational diagnostics — which requests were
made, whether they succeeded, how long they took. IP addresses are masked before storage
and never kept. Player identifiers appear in logs only by length, never by value.
Those logs are deleted after ninety days, and it is worth being specific
about what does the deleting. It is not a cleanup job we wrote and have to remember to run
— it is the retention setting on the log tables themselves, enforced by the hosting
platform on a schedule we do not control and cannot postpone. A deletion promise that
depends on us running something is only as good as our diligence. This one is not.
Checking this yourself
There is no sign-up to find. Install any of the games and play. Nothing
asks who you are.
Pull the manifest apart, if you are inclined and able — we would encourage
it. On Android, aapt dump permissions or
apkanalyzer manifest permissions against the APK. The manifest is plain text
and unobfuscated, and the permission list is two entries long. An app collecting location
or contacts has to declare it there; Android gives it no way around that.
In fairness, the code is another matter — release builds are shrunk and
obfuscated by R8, and the .NET assemblies are compressed into a single native library,
which is ordinary practice for a shipped Android app and not something we would claim
otherwise. What we are pointing you at is the manifest, the permission list and the
network traffic, all of which are readable and none of which we control the reading of.
On our listing in the store where you got the app. The privacy
disclosures the store requires — Data Safety on Google Play — are a
structured record of what we declared, and they have to match what the app actually does.
No sound, no show
There is no sound in these games, no animation, and no notifications. Not turned off by
default — not present.
What that means, in plain terms
You know how some games chime every time you tap something, play a little fanfare when
you finish, and run background music you have to dig into a settings menu to silence?
None of that exists here. You can have the volume all the way up in a quiet room and
these games will not make a sound.
You know how you put a game down for a fortnight and it starts nudging you —
“Your puzzles miss you!”,
“Your streak is about to expire!” — and you have to go into
your phone’s settings to make it stop? That will never happen, because there is no
code in these apps capable of sending you a notification. There is nothing to opt out of.
And nothing bounces, fades, slides or celebrates. Screens change immediately. If you
finish a puzzle you are told you finished it; you do not sit through three seconds of
confetti first.
None of this is a setting we shipped switched off. It is absent from the code.
The details
No audio, at all. There is no audio API call anywhere in any of the
games — no MediaPlayer, no SoundPool, no audio package in
the dependency list, and not one .mp3 or .wav in any of the
apps. There is no mute switch in our settings because there is nothing that could make
a sound.
No animation, at all. No FadeTo, ScaleTo,
TranslateTo, RotateTo or LayoutTo calls, and no
animation or transition markup in any view. The only moving thing in any of these apps is
a loading spinner while the store is being read or a purchase is being confirmed —
and that is a network wait, not decoration.
No notifications, at all. No push messaging SDK ships in any of the apps,
and no notification permission is declared, so your phone will never ask you to allow
them. We have no technical means of reaching you after you close the app. That is
deliberate: email is the only channel we have, and only if you ask for it.
Checking this yourself
Turn the volume up. Play a whole puzzle. That is the entire test, and it
needs no tools.
Look at the app’s notification settings on your phone. There is
nothing to disable, because nothing was ever requested.
On Android: dump the manifest as above. Both
POST_NOTIFICATIONS and every audio-related permission are absent from a list
that is two entries long.
Pay once
Everything we sell is a one-time purchase. There are no subscriptions, no consumable
currency, and nothing that expires or stops working.
What that means, in plain terms
Every game arrives with two hundred puzzles to start, and you can play all of them without
spending anything or being asked to.
There is no energy meter that empties and makes you wait. No lives to run out of. No
coins, gems or tokens to buy, earn or top up. No daily reward you are punished for
missing. Nothing in these games is designed to make waiting unpleasant enough that you
pay to skip it.
If you do buy something, you buy it once. It does not expire, it does not need renewing,
and it does not stop working if you do not come back for a year.
The details
No subscription products exist. Not disabled, not planned — there
are none in any of our store catalogues. Every product we sell is registered as a
one-time purchase.
Your purchases follow you, and we still do not know who you are. This
sounds like it cannot be true at the same time, and it is worth explaining. When you sign
in, the store account already on your phone confirms you are the same person as last time.
That confirmation gets scrambled into the per-game identifier described above before
anything is stored. Purchases are recorded against that — so a new phone
signed into the same store account restores everything, while what we hold remains
something that cannot be turned back into a person.
What our payment processor sees. RevenueCat receives the scrambled
identifier and your purchase receipts, and never a platform account identifier. The
payment itself is handled by the app store under its own privacy policy — we never
see a card number.
Checking this yourself
On the store listing. In-app products are listed publicly with their
type. Ours are all one-time purchases; there is no subscription among them.
Play without paying. The free set is not a demo. Nothing is
time-limited, nothing degrades, and nothing will interrupt you to ask.
What you cannot check
Some of what is on this page you can verify without our help. Some of it you cannot, and
we would rather draw that line ourselves than let you find it.
Things you can check independently: the permissions an app declares, the
absence of an advertising ID, whether the store labels it as containing ads, what network
traffic leaves your phone, and whether any of it makes a sound. None of those depend on us
being honest.
Things you are taking on trust: that our server derives identifiers the
way we have described, that the secret key is what we say it is, and that we delete what
we say we delete. Our backend is not open source. You can see what leaves your device, but
you cannot see what happens after it arrives.
We could have written this page without that paragraph and it would have read more
confidently. But a page that implies everything is externally provable is doing the same
thing as an app that says it respects you — asking to be believed while making it
awkward to check. The useful version tells you which claims carry proof and which carry
only our word, so you can weigh them differently.
If something here turns out to be wrong, we would like to know before your review does.
support@adfreebybigt.com reaches a person.