GuessTheRest

About Guess The Rest

Guess The Rest is a set of 31 guessing games that share a single mechanic: you start with almost nothing, and every extra look costs you points. A tenth of a second of a song. Two tiles of a game cover. A patch of feathers at five times magnification. Name it from that, or pay for more.

It is one website, free, with no account requirement and no app to install. It is also built under a deliberate constraint that shaped almost every game in it.

The constraint: no API keys

Every game sources its content from a public API that needs no key, no account and no billing relationship. That was chosen at the start and never relaxed, and it is the reason the set looks the way it does.

Audio previews come from the iTunes Search API, which serves 30-second clips to anyone who asks. Photographs, portraits, box art, maps and logos come from Wikipedia's REST summary endpoint. Trailers and theme tunes are YouTube embeds. The street panoramas are Google's keyless Street View iframe, which needs no key but only renders when it really is inside an iframe.

The cost of that constraint is real. It rules out the properly licensed film databases, which is why the poster and cover games use Wikipedia's low-resolution fair-use files and reveal them through tiles rather than by zooming — magnifying a 220-pixel poster thirteen times is unreadable mush. The benefit is that the whole thing runs from a clone with no setup: no keys to obtain, no quota to manage, and nothing that stops working when somebody's free tier expires.

The content is verified, not assumed

Every seed list was checked against the live APIs before it shipped, and the checks kept finding things. Thirty of 117 candidate films failed, mostly YouTube trailer ids that no longer played — which to a player reads as a broken game rather than as stale data. Three of 227 Wikipedia pages were wrong: two were disambiguation pages and one needed a different title.

For the theme-tune game, 977 candidate uploads were scraped and scored, and the survivors put through two gates: YouTube's keyless oEmbed endpoint, then a real embedded player watched to confirm playback actually advanced, because oEmbed will bless a video whose owner has turned embedding off. Of 165 series researched, 153 made it.

The written decks were held to the same standard for a different reason. The quotations are only ones that hold up — no Einstein insanity line, no invented Marilyn Monroe. The film lines are quoted as they are actually spoken rather than as everyone repeats them. The word definitions are written from scratch and mechanically checked not to contain the word. A quiz that teaches you something false is worse than no quiz.

How it is built

A single-page app in TypeScript, built with Vite, using the React API compiled against Preact for size. Only game metadata is loaded up front — 31 titles, taglines and accents — so opening one game downloads one game's code rather than all 31.

Every zoom, blur and tile effect is a CSS transform or filter rather than a canvas operation. That sidesteps cross-origin canvas tainting entirely, which matters when every image is loaded from somebody else's domain, and it animates on the compositor for free.

Decks stream rather than block: a game starts on round one and loads the rest behind it. Before that change, the quote game did forty Wikipedia lookups before anything appeared on screen. Time to first round went from between three and twenty seconds to under a second. Hovering a card on the home page starts building its deck, on the reasonable assumption that you are about to click it.

The written pages you are reading, including this one, are generated as real HTML at build time. The app itself is hash-routed, so without them a visitor arriving without JavaScript would see an empty document.

Accounts, data and ads

No account is needed for anything except a name that follows you between browsers. Scores save to your device by default; a Supabase project, if one is configured, mirrors them to a global board. The only thing stored about a player is the name they pick.

The site runs Google AdSense in auto-ads mode. Ads are deliberately skipped in development and in headless browsers, so local runs and screenshot tests never load a tracker.

Nothing is redistributed. The repository contains titles, artist names, emoji, quotations, ingredient lists and Wikipedia article ids — the media itself is fetched from its source at the moment you play, and credited where its licence requires it.