Skip to content
AdFreebyBigT

Receipts

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:

<uses-permission android:name="com.google.android.gms.permission.AD_ID"
                 tools:node="remove" />

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 ID
crossword HMAC-SHA256secret key, server only pg_7Kd9x2…stored for Crossword
your store
account ID
wordsearch HMAC-SHA256secret key, server only pg_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.