A broad catalog, a considered pick.
Title search covers JustWatch’s live catalog of films and series, including titles currently unavailable to stream. Results load in small pages. The movie picker retrieves candidates using country, service, genre, release-year and runtime filters, then asks AI to compare their premises against the complete request. Candidates are checked again against your requirements before a pick is shown. Requests for a film like a named title resolve its actual synopsis and genres, then retrieve that film’s country-specific related-title list. The list supplies candidates, not proof of an identical story. Shared genres, documentary/fiction type, release years, runtime and included offers are checked; AI compares the actual premises and leaves weak matches out. If none qualify, we explain that instead of substituting a random genre pick. Related lists can be small, and an exact match in story or tone cannot be guaranteed.
A reviewed shelf when evidence matters.
Mood and attention scores are editorial estimates. Runtime refers to the listed edition. Streaming availability and offer editions must be verified separately.
Our independently reviewed shelf contains 46 films. Strict violence, jump-scare, ending and language requirements use supported evidence; unknown catalog fields do not qualify. Descriptions, catches and mood assessments are original what.stream material. Film posters come from JustWatch’s image service, matched to the reviewed film. Fact sources and the reviewed edition are linked from each recommendation’s details. Provider logos come from the same catalog and are served as local assets. Poster and provider trademark rights belong to their respective owners. We do not copy review text. Catalog cards show an opening premise immediately. Opening a movie keeps its existing description and does not request AI-generated copy. The Movie brief button adds a brief introduction, catalog genres and an explanation of how the title relates to your search. It does not replace the original description.
Streaming evidence, checked separately.
We check country-specific listings from JustWatch, using verified film identifiers and country-specific subscription packages across Europe, Canada, Mexico and the United States. Armenia, Georgia and Kazakhstan remain selectable, but our current services have no verified country coverage there. Only known subscription packages on your selected services qualify. Rentals, purchases, free broadcaster listings and extra channel add-ons are excluded.
Successful checks are stored in a shared server cache for up to six hours. Each result shows the original check time and links to its JustWatch listing. Cached offers can change before their next check; account tiers, regional changes and playback editions can affect what you can watch. Expired evidence, outages and missing data are never presented as a verified offer.
This is an independent noncommercial project using JustWatch data with permission for this project. We are not affiliated with JustWatch, and availability of its data service can change. The provider selector covers supported packages, including Paramount+ Essential in the US, NOW Cinema and ITVX Premium in the UK; it is not a complete directory of every service or subscription tier.
Collections and permanent movie guides.
Our recommendation collections group movies by a specific kind of evening, runtime or storytelling experience. Selection notes explain the connection and the tradeoff without describing endings. These are AI-assisted what.stream editorial judgments, not individual viewer reviews or objective ratings. Runtime and presentation facts link to their sources. Collection and movie-guide text is prepared content; reading it does not generate a fresh AI response. A movie’s inclusion does not establish streaming availability. The separate country check verifies current cached subscription listings when requested.
AI, with film facts behind it.
Our server compares the complete request with up to 24 verified film premises. Ordinary requests use one comparison, which can also provide short descriptions and several convincing alternatives. Reference-film comparisons and ambiguous requests retain an interpretation step first. If the initial pool is weak, the model can suggest titles for further catalog verification and another comparison. Suggestions never establish availability. Years, runtime, services, seen films and supported exclusions are enforced in code. The model can decline weak matches.
When AI allowances are unavailable, the picker first reuses title selections for the same brief where possible, then uses factual ranking. Reuse checks current cached country-specific offers and all hard requirements again. Mood and attention preferences use reviewed evidence where catalog metadata is insufficient. A reference comparison is never treated as an exact storytelling guarantee. Movie briefs use the existing safe opening premise, catalog genres and a factual explanation when fresh generation is unavailable. These results are not presented as newly generated AI text.
Recommendations and summaries can use Cloudflare Workers AI, Google’s Gemini API, Kilo, NVIDIA, Z.ai and OpenRouter. Each route uses an explicitly selected free model or free trial endpoint. Google’s route uses the free Gemma model. Ollama and DeepSeek adapters support the same tasks, but remain blocked when free access cannot be verified. DeepSeek requires a usable granted balance with no purchased balance; Ollama requires verified free-only account access. We do not enable paid fallbacks. Requests use one provider at a time, with at most three attempts within the generation deadline. A recent healthy provider is preferred on later requests. Providers impose their own quotas and availability can change. Editorial browsing and title search remain available when AI is unavailable.
Alternatives can be reused for the same request for up to 20 minutes. The browser holds a signed selection bundle for this visit; changes to the brief require a new comparison. Reuse checks title identity, current cached streaming evidence, hard requirements and seen or rejected films before displaying a pick. A shared six-hour recommendation cache stores hashed brief keys, selected title IDs and structured constraints; it does not store personal explanation text.
Short introductions, without plot reveals.
Introductions describe the initial setting and central situation. The writing prompt receives only the opening premise and forbids later events, solutions, outcomes and hidden identities. Text with obvious reveal cues or personal recommendations is rejected from shared descriptions. The opening premise remains readable when generated text is unavailable. Automated filtering cannot guarantee that every source or generated sentence is free of spoilers.
Valid neutral summaries are shared across visitors for up to 90 days, independently of personal recommendations. Existing safe summaries survive provider changes. Missing descriptions can be included in the recommendation comparison; viewing that result does not trigger another generation. Catalog, saved and editorial movie views keep their existing descriptions without requesting summaries. The legacy summary endpoint serves existing cached text only, including requests from older open tabs. Pressing Movie brief reuses a bundled recommendation summary when available; otherwise it requests a summary and search-specific explanation together. Existing neutral summaries are reused across visitors. Search-specific explanations stay out of the shared cache and are remembered in browser memory for up to 20 minutes. Closing a movie cancels pending summary work. Personal explanations are kept separate from shared descriptions.
Keeping searches available.
Browsing and fresh work have separate limits. An identified connection can make up to 45 requests per minute and 500 per UTC day, with smaller allowances when connection metadata is missing. Fresh work has a per-connection allowance of 120 units per UTC day and a shared 6,000-unit daily ceiling. A fresh catalog or availability batch reserves one unit; an AI generation reserves four. Cache hits do not reserve fresh-work units. Each connection can request up to 20 fresh AI generations per UTC day; exhausted AI allowances use factual matching and movie briefs instead. Abuse limits still apply. Provider counters and cooldowns remain separate. OpenRouter has an application ceiling of 50 calls per UTC day. Other enabled providers have application ceilings of 15 calls per minute, 180 per hour and 3,000 per UTC day, and providers can impose lower account limits. Cloudflare Workers AI retains its shared 9,000 Neuron daily application budget and conservative reservations. No paid fallback is used. Shared leases prevent simultaneous duplicate movie-brief generations across Worker instances, and expired cache records are removed in bounded batches.
Requirements stay requirements.
Exact release years, year ranges, requested genres, excluded genres, runtime limits, seen films, language choices and supported content exclusions are checked before ranking. Titles inside quoted comparisons are kept separate from extra requirements such as “with no horror”. Unknown violence, jump-scare or ending evidence does not pass an exclusion. Mood and attention are softer editorial preferences. We do not display invented match percentages.
Your taste stays here.
Saved and seen films, service selections and optional feedback are stored in this browser. Your free-form request and candidate film premises are sent through our server to Cloudflare, Google, Kilo, NVIDIA, Z.ai, OpenRouter, Ollama or DeepSeek and their applicable model providers, subject to the free-access checks above. They do not receive your saved or seen-film list. Our shared cache does not store your personal request or taste history. These services process AI requests under their applicable API terms. Title search queries and factual genre/runtime filters are sent to retrieve catalog entries. Automatic country selection uses the connection’s country code from our hosting network when available. If that metadata is missing, the browser estimates the country from its time-zone or explicit region settings. Device estimates run locally and can differ from your current location; the country menu labels the source. A saved manual selection takes priority, and you can switch back to automatic detection in the country menu. No precise location permission is requested. Posters are loaded from JustWatch’s image service. Our availability endpoint receives film identifiers, country and selected services; the provider receives title and country lookups. This version has no advertising or analytics trackers. Hosting and data services may keep operational request logs.
You can reset local taste memory through the privacy panel on the homepage. Film share links contain only a film identifier. There is no what.stream account to create. Short-lived hashed identifiers derived from connection metadata enforce search limits; we do not store raw IP addresses in our cache.