← back to the game

Privacy

Last updated 2026-09-18.

The data controller is UNSEEN FORMS LIMITED, a company registered in England and Wales (company no. 14395660), registered office: 11 Duchy Road, Harrogate, North Yorkshire, HG1 2EZ. Contact: hi@perfectsharp.games.

Twixtle (formerly Twixt) is a free daily word puzzle. We collect a small amount of gameplay data so we can tell whether the puzzles are working and where players are coming from. We never sell it or share it, and no advertising company ever sees it. Playing needs no account and doesn't ask who you are. Two optional things change that, and only if you choose them: joining a league (a display name other members see) and becoming a PerfectSharp+ member (an email address). Both are covered below.

What we collect

When you load the page we record an anonymous event with:

We also record anonymous events of the same shape for a short, fixed list of things players do: finishing the first-visit tutorial, sharing a result, opening the archive, looking at the membership, creating, joining or sharing a league, seeing or skipping an advert, and following a link to perfectsharp.games. They tell us which parts of the game are used.

For every puzzle play we additionally record:

The fingerprint lets us tell that the same visitor refreshed mid-puzzle (so we count one play, not two) and approximately whether a player has played before in the current 90-day window. It cannot be reversed back to your IP address, and once the salt rotates old fingerprints can no longer be matched to current ones. Each play record also carries the random token your browser holds (see What stays on your device), which does not rotate. That is what lets us tell a returning player from a new one, work out streaks and badges on our side, score leagues, and, if you are a signed-in member, connect your plays to your account. We look at play data in aggregate to understand traffic, puzzle difficulty, retention, and growth; we do not build a profile of you.

Your IP address itself is briefly cached server-side so we don't re-resolve the same address repeatedly; cached IPs are deleted after 30 days at the latest, and the cache is not joined back to the play records.

How long we keep it

Visit and tutorial-completion events (the rows that carry the source bucket and, where applicable, the referrer hostname) are kept for at most 90 days, then deleted. Puzzle play records are kept indefinitely so we can track puzzle-by-puzzle difficulty over time. The fingerprint inside them rolls every 90 days; the browser token does not, so records from one browser can be connected to each other for as long as it keeps its token.

We take a nightly backup of our databases, which is deleted after 30 days, so something you ask us to erase may persist in a backup for up to that long.

League data (your display name, your membership, and your daily scores) is kept for as long as the league is in use, because a league's whole point is the record it builds up. If you leave a league you stop appearing in its table straight away. Your past score rows are kept, because other people's results were worked out partly from them and deleting them would rewrite weeks that have already been played. Ask us and we will delete your league data outright.

What stays on your device

Your streak, completion of today's puzzle, and the in-progress state of an unsolved puzzle are stored in your browser's localStorage. This is "strictly necessary" storage to deliver the game; it is not used for tracking. It isn't sent to our servers, with two exceptions: if you are a signed-in member, each day you finish is also saved to your account; and the badges you earn are also stored against your browser's token, so they can be restored if your browser loses them.

Your browser also keeps two dates for the advert described under Adverts: the day you first played and the day you last saw one. Neither is sent to us.

When you follow a link from Twixtle to perfectsharp.games, today's result goes with it: for each of today's puzzles, whether you started, finished or solved it, and your seal, score and time. It travels in the part of the web address after the # sign, which your browser doesn't send to any server, including ours, and it carries nothing that identifies you or your device. perfectsharp.games keeps it in your browser for three days so it can show your day, and then deletes it.

Your browser also holds a short random token, created the first time you load the game. It does three things: it makes a link you share attributable to you, so that sharing can unlock archive puzzles; it is the identifier a league uses to know which row in the table is yours; and it lets us count how many people arrived through a link another player shared, which is how we tell whether the game is spreading. That last one is for us rather than for you, so it is worth stating plainly. It is random, it means nothing outside Twixtle, and it is not used to follow you to any other site. Clearing your browser storage clears it: you would start again as a new player, and you would need your league's invite link to get back into it.

Why we don't show a cookie banner

We set no advertising cookie and no cross-site tracking identifier, and nothing we store on your device is shared with, sold to, or readable by anyone else. Most of it exists purely to deliver the game you asked for: your progress, your settings, your sign-in if you have an account, and your place in a league.

The exception is the counting described above. As well as carrying your share links and your league identity, the random token lets us measure how many players arrive through a shared link. That is first-party audience measurement: it stays on our servers, it is never used for advertising, and it is not used to build a profile of you or to follow you anywhere else. We judge a consent banner to be disproportionate for storage of that kind on a free puzzle with no advertising, so we don't show one.

Our server-side fingerprint is not stored on your device at all. It is derived from information your browser already sends with every request, and as described above it is anonymous, first-party, and used only for audience measurement.

The only cookies we set are strictly-necessary sign-in cookies: one if you sign in to your account, and one for our own admin login. Neither is used for tracking, and if you never sign in you never receive a cookie at all.

Leagues

Leagues are optional. If you never create or join one, nothing in this section applies to you and nothing about you is stored on our servers beyond the anonymous records described above.

If you do create or join a league, we store:

These are tied to the random token your browser already holds, described under What stays on your device. That makes them personal data in a way the rest of our gameplay data is not: a display name attached to a persistent identifier can identify you, which is why this is set out separately here.

We store it because it is the only way to run a league you asked to take part in: a weekly table needs to know who is in it, what to call them, and what they scored. We do not use league data for anything else, and it is never used for advertising or shared with anyone outside the league.

Who can see it. Your display name, your scores and how each score was made up are visible to the other members of that league, which is at most 50 people, all of whom joined through an invite link. The breakdown shows things like whether you played the day before and whether you are a member. Leagues are not listed, searchable, or discoverable: the only way in is a link from someone already in it. A league's standings can be shared as an image, which shows the display names and scores in that table. There is no way to message another player through Twixtle, and no other player can see your email address, your other leagues, or anything else about you.

The name you choose. Please pick something you are happy for the other members to see. It does not have to be your real name, and we would rather it wasn't. Names are checked against a character whitelist and cannot contain links. Your own display name cannot be changed once you have joined a league. A league's name can be changed by whoever created it, and we keep a record of what it was called before. If a name is reported, or we otherwise become aware of one that breaks our terms, we replace it so it no longer appears anywhere, and a name we have replaced cannot then be changed by its owner.

If you are a member and signed in, your league membership is also tied to your account so it follows you between devices.

Adverts

If you are not signed in as a PerfectSharp+ member and you are back on a later day than your first, Twixtle may show you one short advert a day before the puzzle, for another of our games or for PerfectSharp+. We make them ourselves and no advertising company is involved. Whether you see one depends on whether you are signed in as a member, and on the two dates your browser keeps (above). We count how often an advert is shown, watched, tapped or skipped, as events of the kind described under What we collect.

PerfectSharp+ and your account

Playing Twixtle needs no account. If you are a PerfectSharp+ member (which includes anybody who bought Twixtle+), you have an account, and it is one account for every Perfect Sharp game, kept in a database those games share. It holds your email address, which memberships you hold and until when, which devices you have signed in on, and the days you have finished: for each, the date, which puzzle, whether you solved it, how long you took, how many reveals you used, your seal and your score. That is what lets your history follow you between devices, and lets perfectsharp.games show what you have played today. If you choose a name for the supporters list, it is kept there too and appears on the supporters page of every Perfect Sharp game; we keep a record of every name that has appeared there, including one you have since taken down, so that a complaint about it can still be dealt with.

You sign in on perfectsharp.games with a link we email you from perfectsharp.games, and Twixtle then opens already signed in, using a one-time code that works once and within a minute. Your purchase confirmation also comes from perfectsharp.games. Payments are processed by Stripe; your card details go to Stripe directly and never touch our servers. We keep the Stripe references for your payments, the amount and currency, and the date your membership runs to. If you still have a Twixtle+ subscription, you can cancel it at any time from the account screen here. The shared account is described in full at perfectsharp.games/privacy.php.

We will delete your account on request, apart from the record of your payments, which we have to keep for six years for tax.

While you are signed in, your browser also keeps the email address you signed in with in its localStorage, so that if you are ever signed out it can fill that address in for you. It stays on your device, and signing out removes it.

Third parties

To resolve IP addresses to country codes we query ip-api.com, a free public lookup service. Payments are handled by Stripe as described above. Our server, our backups and the email we send run on Amazon Web Services (the server in London, the backups in Ireland). Stripe is a US company; payment data it holds is transferred under the safeguards in Stripe's own terms (the UK International Data Transfer Addendum and the EU standard contractual clauses). We do not share data with advertising or analytics providers.

Why we do this

For play records and event counts, our lawful basis is legitimate interests: knowing how many people play, how hard a puzzle turned out to be, and roughly where players are, so the game can be run and improved. For leagues, it is running the league you asked to take part in. For accounts and payment, it is performance of a contract: we cannot give you something you have paid for without knowing who you are. For keeping records of reports and complaints, it is our legal obligation and our legitimate interest in running a service people are safe on.

Your rights

Play records are tied to a random browser token, not to your name, so on their own they don't tell us who you are. If you want yours found or deleted, send us the token: it is the r= part of any link you have shared from Twixtle. Without it we can't tell which records are yours.

League data is different, because it is deliberately tied to an identifier we can look up. Email us at the address below with your display name and the league it appears in, and we will delete your name, your membership and your scores. Account data is the same: email us and we will delete it, apart from payment records we must keep for tax.

You can also ask us for a copy of the league or account data we hold about you, ask us to correct it, or object to us holding it, and you can complain to the Information Commissioner's Office if you think we have got it wrong.

Contact

Questions: hi@perfectsharp.games.

← back to the game