Privacy Policy

Effective September 10, 2026 · Qirai Technologies (3-101-960370 Sociedad Anónima) · Río Segundo, Alajuela, Costa Rica.

Tiny Dungeon is a single-player puzzle game made by Qirai Technologies. There is no user name, no password, no advertising and no social features. This policy describes everything it collects and why.

The short version. Nothing reaches us until you ask for it. The game saves on your phone; only when you turn on cloud saves — or buy gems, which turns them on — do we create an anonymous ID and keep your progress, your balances, what you bought and your settings against it. We use Google Firebase to do it. We do not ask for your name or email, we do not see your payment details, and we do not sell anything to anyone.

Would you rather read the short version? Privacy in plain words says the same things without the legal vocabulary. It is written to be understood by a thirteen-year-old, which is the youngest this game is meant for.

Contents

  1. Who we are
  2. What we collect
  3. Why we collect it
  4. Who processes it
  5. How long we keep it
  6. Your rights
  7. Children
  8. This website
  9. Changes
  10. Contact

1. Who we are

The controller of the data described here is Qirai Technologies (3-101-960370 Sociedad Anónima), Río Segundo, Alajuela, Costa Rica.. You can reach us at privacy@qirai.tech.

Tiny Dungeon is sold worldwide, so more than one data protection law applies to it, and we hold ourselves to all of them:

Where these differ we apply whichever gives you more protection, to every player, wherever they live. We do not offer a weaker standard outside Europe.

Our EU and UK representatives have not been appointed yet. Because we are established outside the European Union, Article 27 of the GDPR requires us to name a representative in the Union, and the UK GDPR requires a separate one. Both are real appointments with named firms, so we will not print a placeholder that looks like one. Until they are in place, write to us directly at the address in section 10 and we will answer as if you had written to them; this notice will be replaced with their names and addresses when they are appointed.

2. What we collect

An anonymous player ID

The app does not create an account when you first open it. It creates one the first time you turn on cloud saves, or the first time you buy gems — a purchase has to be verified on our servers before it can be credited, so buying turns cloud saves on and says so before the store opens. Until one of those happens there is no identifier, no document, and nothing about you on our servers at all.

The account, when it is created, is anonymous, through Firebase Authentication: a random identifier, not linked to your name, email, phone number, or any account you hold elsewhere. We cannot use it to identify you as a person. It exists so your progress can be carried between devices and so purchases can be credited to the right save.

Game data

Stored on your device. With cloud saves on, the same data is also kept on our servers under your anonymous ID; with cloud saves off it never leaves your phone:

DataExample
ProgressWhich rooms you have completed, how far you have reached
BalancesYour gold and gems
InventoryWhich heroes you own and which is equipped
Reward recordsWhich rooms have already paid their one-time gold
SettingsLanguage, sound preferences, hints, vibration
ProfileWhen the save was created, when it was last used, which platform created it

Purchase records

When you buy gems, we record the store the purchase came from, the product identifier, the store's transaction identifier, whether it was a sandbox or production purchase, how many gems it granted, and when. This is what lets us give you what you paid for exactly once, and support a refund or a dispute later.

We also record the storefront the store reports for that purchase — Apple's storefront, or Google Play's region code, for example USA or DE. It comes from the store's own verified answer rather than from your device, and we use it for support and accounting.

We never see your payment details. Card numbers, billing addresses and the payment itself are handled entirely by Apple or Google.

Analytics

Off unless you switch it on. The game asks once, after the age question, and collects nothing until you say yes. Declining is one tap, the same size as accepting, and the game is identical either way. You can change your mind whenever you like in Settings → Privacy, and turning it off stops collection immediately rather than at the next launch. If you never answer, nothing is collected.

If you do agree, we use Firebase Analytics to understand how the game is played — which rooms people reach, where they stop, whether a purchase flow failed. The events we send are: starting and completing a room, selecting or buying a hero, opening the shop, buying a gold bundle, starting, completing or failing a gem purchase, and changing language. They carry a room number, a hero name, a product identifier or a language code, and nothing else.

Firebase Analytics also collects some information automatically, including an app instance ID, device model, operating system version, and approximate country. We do not send it purchase tokens, receipts, or anything that identifies you as a person.

Crash reports

On the same switch as analytics, and off by default. If you agree, and the app crashes, Firebase Crashlytics sends us a report: the error, where in the code it happened, the device state at the time, and an installation identifier Crashlytics generates for itself. We do not attach purchase data or anything that identifies you as a person.

Refusing costs us the crash reports and costs you nothing, which is the trade we chose deliberately. A crash report is diagnostic rather than measurement, and we could have argued a different legal basis for it; we decided that a player who says no to being measured has said no to having their device described to us as well.

Abuse protection

Firebase App Check verifies that requests come from a genuine copy of the app, using Play Integrity on Android and App Attest on iOS. This helps stop people forging requests to our servers to award themselves currency.

The services behind all of this

Everything above runs on Google Firebase. Naming the parts, because "we use Firebase" is not a description of anything:

ServiceWhat it does here
Firebase AuthenticationIssues the anonymous ID, and holds the optional link to an Apple or Google account
Cloud FirestoreStores your progress, balances, heroes and synced settings under that ID
Cloud FunctionsRuns the server side of every purchase and reward, so a balance is never set by the app on your phone
Firebase AnalyticsThe gameplay events above. Consent only
Firebase CrashlyticsCrash reports. Consent only
Firebase App CheckAttests that a request came from a genuine copy of the app

Purchases themselves are handled by Apple or Google Play as the merchant. We never see a card number.

If you told us you are under 16

Neither analytics nor crash reporting runs at all, whatever you tap afterwards. The age answer is checked first and independently of consent, so a younger player who agrees to analytics still sends none. This is a real difference in how the app behaves, not a policy promise: the two checks are separate conditions in the code and both must pass.

We use 16 rather than 13 for this. The stores list the game as suitable from 13, and data-protection law across the EU sets the age of consent anywhere between 13 and 16; taking the highest of those means one rule protects everyone, wherever they live.

What we do not collect

3. Why we collect it

PurposeLegal basis (UK/EU GDPR)
Saving your progress and balances, delivering purchases Performance of a contract — Art. 6(1)(b). It is the service you asked for. Payment itself is taken by Apple or Google as the merchant, under their own terms
Preventing duplicate or fraudulent purchases; App Check Legitimate interests — protecting the service and paying customers
Keeping purchase records for refunds, disputes and accounting Legal obligation and legitimate interests
Analytics and crash reporting Consent, and nothing else — Art. 6(1)(a). Asked once, off until given, withdrawable at any time in Settings without losing anything, and never applied at all to a player under 16
Keeping your purchase when you change phone Performance of a contract — Art. 6(1)(b). You asked us to keep something you bought. Optional, and deliberately not bundled with the analytics question, which rests on consent
App Check, and refusing forged requests Legitimate interests — Art. 6(1)(f). Protecting the service and the people who paid for it. It attests the app binary and carries no identity of yours

4. Who processes it

We use Google Firebase (Google Ireland Limited / Google LLC) for authentication, storage, analytics, crash reporting and abuse protection. Google acts as our processor and its own terms apply to that processing.

Apple and Google Play process purchases as independent controllers under their own privacy policies. We receive only confirmation of a purchase and its identifiers.

Where your data goes

We are established in Costa Rica and Google's infrastructure is global, so your data is processed outside Costa Rica and outside the European Economic Area, including in the United States. Two mechanisms cover that:

Neither of those is something we negotiated; both come with using Firebase, and we name them so you can check them rather than take our word for it.

We do not sell personal information, and we do not share it for advertising.

5. How long we keep it

DataKept for
Progress, balances, heroes, synced settings Until you delete it. There is no automatic expiry — no code deletes it on a timer, and we would rather say so than invent a period we do not enforce
Your anonymous ID, and any linked account Until you delete it, which deletes the account itself
Purchase records Indefinitely, with your ID removed when you delete. They are financial records, and the transaction ID is what stops a refunded purchase being paid out twice
Analytics events The period configured in Firebase, which Google caps at 14 months for event data
Crash reports Google's own retention for Crashlytics, which is 90 days for a closed issue
Settings on your phone Until you uninstall. They never leave the device unless cloud saves are on, and they carry nothing of value

6. Your rights

We extend these to every player, whether or not the law where you live requires it:

How to make a request

Because your save is anonymous, we cannot connect it to you as a person from an email address alone — there is no name on it to match. The identifier is the only thing that tells us which save is yours, and the app will show it to you:

  1. Open Settings in the game and scroll to the bottom. The player ID is printed under the version number, and it is selectable so you can copy it.
  2. Email privacy@qirai.tech with that identifier and what you want: a copy of your data, a correction, deletion, a machine-readable export, or an objection to analytics.
  3. We reply to confirm we have it, and we answer in full within 30 days. If a request is genuinely complex we may take longer, and we will tell you why before the 30 days are up rather than afterwards.

If cloud saves are off and you have never bought gems, there is no identifier to show — because there is nothing of yours on our servers to ask about. Everything is on your phone, and uninstalling removes it.

We do not charge for any of this, we do not ask for identity documents — we have nothing to check them against — and we will not treat you differently for asking. If we cannot act on a request, we say which one and why, and you keep the right to complain to a supervisory authority.

Erasure has a page of its own, because one thing survives it and you should know that before you ask: see Delete my data. You can also delete your cloud save from inside the game, without emailing anyone, in Settings → Cloud saves.

7. Children

Tiny Dungeon is a mixed audience app: adults play it, and it plainly appeals to children too. We treat it that way rather than claiming otherwise.

We ask, once

The first time you open the game it asks what year you were born. The question is deliberately neutral — it does not tell you what answer gets you anything, and no year is filled in for you. Your answer is stored on your device and in your own save. Nothing about the game changes because of it; only what we collect does.

If you do not answer, we treat you as a child. That is the cautious direction: it means less is collected, not more.

What changes for a player under 16

Under 1616 and over
No analytics at all. Collection is switched off. The gameplay events listed in section 2
Links out of the game are behind a question a small child is unlikely to answer Links open directly
No advertising, no advertising identifier and no ad personalisation, for anybody, at any age — the game carries no advertising at all

We use 16 rather than 13. Data-protection law sets the age of consent anywhere between 13 and 16 depending on the country; taking the strictest common threshold means one rule protects everyone, wherever they live.

Purchases

Parents can disable in-app purchases entirely through Screen Time on iOS or parental controls in the Google Play Store. If you believe a child has made a purchase you did not authorise, Apple and Google both offer refunds — see Support.

If you believe a child has given us information you would rather we did not hold, email privacy@qirai.tech and we will remove it. See also Delete my data.

8. This website

Everything above describes the game. This section is about the site you are reading. It is separate: there is no account here, no login, and nothing you do on these pages is joined to anything you do in the game. What is stored in your browser, by whom and for how long, is listed item by item on Cookies and storage.

We use Google Analytics to count visits and see which pages people reach. It is off until you agree to it. Until you accept, nothing is stored in your browser. Google still receives a signal that a page was opened, but it carries no identifier that outlives the page or joins one visit to the next. The legal basis is your consent and nothing else, and declining costs you nothing — every page works exactly the same either way.

If you do accept, Google Analytics stores an identifier in your browser and receives the page you opened, the page that sent you here, your approximate country, and your browser and device type. Your IP address is used to work out an approximate location and is not stored. We never send your name, your email address or anything from the game, because this site holds none of those. It is not used for advertising: the advertising signals are set to denied in the code, and there is no button, anywhere, that turns them on. Google Ireland Limited acts as our processor for this, under its own terms.

You can change your mind whenever you like. Clearing this site's storage in your browser does the same thing.

We also use Cloudflare Web Analytics to count page views. It stores nothing on your device — no cookie, no browser storage, and no fingerprint of your browser or machine — and it cannot follow you between sites. Because it stores nothing, there is nothing to consent to and nothing to switch off. Cloudflare, which already delivers this site to you, acts as our processor for it.

Beyond that the site sets nothing. There is no advertising, no social tracking and no fingerprinting. Heading fonts are served by Google Fonts, which necessarily receives the request for the font file itself; nothing else on the page is fetched from anywhere but this site.

9. Changes

If we change this policy we will update the effective date at the top. If a change materially affects how we handle your data, we will say so in the app.

10. Contact

Qirai Technologies (3-101-960370 Sociedad Anónima), Río Segundo, Alajuela, Costa Rica.
privacy@qirai.tech