A streaming service with 4,000 films sees the same thing every evening: a viewer opens the app, scrolls past the same posters for a minute and closes it without pressing play.

A movie recommendation system exists to stop that. It pays off when you judge it by what viewers watch and whether they stay subscribed, and most services should start with simple, measured rows before paying for a custom model.

What is a movie recommendation system?

A movie recommendation system decides which films and series each viewer sees on the screen, and in what order. The viewer never sees an algorithm. They see rows.

Netflix described its home page in a 2015 paper by Carlos Gomez-Uribe and Neil Hunt: roughly 40 rows per page, each filled by a different algorithm, with the choice and order of the rows personalized as well. A Top Picks row ranks the catalog against the member's whole history. A Because You Watched row anchors to a single title the member watched and shows similar ones. Continue Watching orders what was started and not finished, and genre rows such as Suspenseful Movies choose and order titles within a genre.

The vocabulary has spread across the industry. Amazon Personalize, AWS's managed recommendation service, ships ready-made video-on-demand recipes called "Because you watched X", "More like X", "Most popular", "Trending now" and "Top picks for you".

Not every row is personalized in the same way. Some read the profile's own viewing, some reorder a list everyone shares, and some are chosen by an editor.

A typical streaming home screen with five rows and the signal behind each. Continue watching, Top picks for you and Because you watched are personalized from the profile’s own viewing: titles started and not finished, the whole history, and one finished title with similar ones. Trending now is partly personalized, this week’s most watched titles reordered for the viewer. New this week is the same for everyone, chosen by editors, and also serves as the fallback when a personalized row fails.A TYPICAL HOME SCREENTHE SIGNAL BEHIND EACH ROWHomeSeriesFilmsMy listContinue watchingPERSONALIZEDTitles this profile startedand did not finishTop picks for youPERSONALIZEDThe whole viewing history,ranked against the full catalogBecause you watched Northern LinePERSONALIZEDOne title the viewer finished,and titles similar to itTrending nowPARTLY PERSONALIZEDThis week’s most watched titles,reordered for the viewerNew this weekSAME FOR EVERYONEChosen by editors; also the fallbackwhen a personalized row fails
A typical streaming home screen, illustrative. Row names follow those Netflix and Amazon Personalize use; each row is filled from a different signal, and only some of them read the viewer's own history.

Why recommendations matter for a streaming business

Choosing a film is harder than it looks.

The same Netflix paper cites the company's consumer research: a typical member "loses interest after perhaps 60 to 90 seconds of choosing, having reviewed 10 to 20 titles (perhaps 3 in detail) on one or two screens". After that, the risk of the member abandoning the service "increases substantially".

That is the business case for recommendations. A viewer who cannot find something to watch tonight is a candidate to cancel next month.

What Netflix measured

In 2015 Netflix said its recommender system influenced the choice behind about 80% of hours streamed; the other 20% came from search. Over years of work on personalization the company had reduced monthly churn "by several percentage points", and it estimated that personalization and recommendations together saved it more than $1 billion a year. The saving came from churn: a member who stays keeps paying and does not have to be replaced by a new one. These are Netflix's own figures, from 2015.

Newer evidence comes from Netflix's researchers. A study first published in November 2025 and revised in June 2026 modeled viewing on Netflix and estimated that replacing the current recommender with a classic matrix factorization model would cut engagement by 4%, and replacing it with a popularity list by 12%, with less varied viewing in both cases. Five of its six authors were Netflix employees.

Recommendations decide how much of your catalog gets watched

The same study found the largest gains for mid-popularity titles, rather than for hits everyone finds anyway or for very niche films. For a service that pays for its catalog, that matters: a licensed film nobody discovers is a cost with no viewing behind it.

Netflix's 2015 paper measured the same effect with a number it called the effective catalog size, which shows how widely viewing is spread across the catalog. With personalized ranking it came out roughly four times larger than with a single popularity ranking for everyone.

Does this apply to a smaller service?

Does any of it apply to a service a thousandth of Netflix's size? Partly.

The mechanism is the same: limited patience and a catalog larger than one screen. The absolute gains are smaller, and so should the budget be. The BBC's data scientists reported in 2023 that on BBC iPlayer, with over 10 million weekly active users, "simple models represent strong baselines", and that a public service broadcaster has "substantially different objectives to a commercial service".

For a niche service that means two things. Write down your own objective, and make any complex model beat a simple one before you pay for it.

How movie recommendations work, explained simply

Behind the rows, a few families of methods do the work, and most services combine them. Our guide to what a recommendation engine is covers them for other industries; here is what they mean for films and series.

Content-based filtering: more like this

Content-based filtering recommends titles that share attributes with what the viewer watched: genre, director, cast, era, mood, language. If you finished three slow Scandinavian crime series, you get offered a fourth.

It needs only good catalog data, so it works for a film on the day it is added. Its weakness is narrowness. It keeps offering more of the same, and it knows only what the tags say, so a catalog tagged with nothing but genre and year gets crude recommendations.

Collaborative filtering: viewers like you also watched

Collaborative filtering ignores what a film is about and learns from behavior. Viewers whose history overlaps with yours finished a documentary you have not seen, so it is offered to you. That is how a recommendation can surprise a viewer in a way tags never would.

The price is the cold start. A new film has no viewing history, so collaborative filtering cannot recommend it, so it gets no viewing. The same goes for a new subscriber on their first evening.

Hybrid systems, which is what services actually run

Almost every production system is a hybrid. Content signals carry new titles and new viewers, viewing data takes over as it builds up, and business rules filter the result. The Netflix home page above is a hybrid in practice, with different methods behind different rows.

What LLMs and embeddings changed

The largest recent change is in how a system understands a title. A language model can turn a synopsis, a review or a subtitle file into an embedding: a list of numbers that places the film near others with a similar story, tone and pace, without anyone tagging it by hand.

That removes much of the cold-start problem for new releases. In March 2025 Netflix described a single foundation model for recommendations, trained on hundreds of billions of interactions, which lets new titles with little viewing lean on their metadata until viewing data builds up.

When each approach can start recommending a newly added film. Content-based filtering works from the day the film is added, limited by its tags. Embeddings of the synopsis and subtitles also work from day one, from what the film is about. Collaborative filtering waits until people have watched the film, then learns from who watches it. A hybrid system, which is what services run, relies on content signals at first and lets viewing data take over once there is enough of it.WHEN A NEWLY ADDED FILM CAN BE RECOMMENDEDAdded to the catalogFirst viewersEnough viewing dataContent-basedgenre, cast, tagsFrom day one, limited by the tagsEmbeddingssynopsis, subtitlesFrom day one, from what the film is aboutCollaborativeviewing behaviorWaits for viewing dataLearns from who watches itHybridwhat services runContent signalsViewing data takes over
When each approach can start recommending a newly added film, illustrative. How soon there is enough viewing data depends on how many people watch the title.

Language models also change the search box. A request such as "something funny under 90 minutes the kids can watch too" can be read by a model and turned into filters and a description for the recommender to match against the catalog.

If you want the engineering detail (retrieval, ranking, generative recommenders and what they cost to run), our guide to building a recommendation engine covers it.

How to build a movie recommendation system in seven steps

The steps below follow the order in which the decisions depend on each other. None of them asks you to pick an algorithm on day one.

For a catalog of a few thousand titles, a first measured result can arrive in about three months. The plan below shows typical durations; your data and your choice at step 4 set the real one.

A typical first project for a movie recommendation system, in weeks, illustrative. Goals and the metric take about a week, the data check two weeks, and simple baseline rows about four weeks, overlapping. The build or buy decision falls around week four. The pilot takes about six weeks: three to build and three for the A/B test, ending around week twelve. Rollout takes two weeks, and measuring and improving continues from week fourteen onward.A TYPICAL FIRST PROJECT, IN WEEKS (ILLUSTRATIVE)02468101214161. Goals and metric1 week2. Data check2 weeks3. Baseline rows4 weeks4. Build or buydecision5. Pilot and A/B testbuildA/B test6 weeks6. Rollout2 weeks7. Measure, improveongoing
A typical first project, illustrative: durations assume a managed service or a small custom engine on a catalog of a few thousand titles. A full custom engine makes step 5 longer.

1. Decide what the system is for, and how you will judge it

Write down one primary metric before anyone talks about models. For a subscription service it is usually retention, with viewing hours per member as its early signal. For an ad-funded service it is viewing time. For a public broadcaster it may be reach across genres and audiences.

Then add guardrails, the numbers that must not get worse: app start time, plays that come from search, complaints.

Why not judge the system by how accurately it predicts what people like? Because accuracy measured on past data and results with real viewers often disagree. Booking.com compared 23 pairs of models and found a correlation of -0.1 between offline gains and business gains. The metric that decides is the one you measure on real viewers.

2. Check the data you already have

Most services hold more than they think, in their player logs. Before any build, check that you can answer yes to these:

  • Play events with start, stop and completion, tied to a profile rather than only to a household account.
  • A record of what was shown on screen, in which row and position, and not only what was clicked. Without it, an ignored title and an unseen one look the same.
  • Catalog data beyond genre and year: cast, director, language, themes, a synopsis.
  • Rights windows per title and territory, so the system never recommends what a viewer cannot play.
  • Profile flags such as kids profiles and maturity ratings.
  • Consent records for viewers who opted out of personalization.

As a check on volume, Amazon Personalize's video recipes need at least 1,000 interactions from at least 25 viewers with two or more each. A service far above that has enough to learn from. One near it needs editorial rows and popularity first.

3. Start with simple rows and measure them

The first version needs no machine learning: Continue Watching, Trending Now computed per country and per week, popular titles per genre, and an editor's row. It takes weeks rather than months, it already helps viewers, and it becomes the baseline every later model has to beat.

Will viewers notice the difference? Continue Watching alone saves them hunting for the episode they were in the middle of, and the BBC's experience on iPlayer shows how hard a simple baseline can be to beat.

4. Decide whether to build or buy

For most services the next step is a managed service rather than a custom engine. The table shows how the choice usually falls.

QuestionManaged serviceCustom build
Time to a first pilotWeeks: send events and catalog data, pick ready-made recipesMonths: the data pipeline, models and serving are yours to build
Business rules (rights windows, kids profiles, live events)The filters the service supportsAny rule you can write down
Data and model ownershipYour data goes to the provider, and the trained model stays inside the serviceData and models stay in your own cloud account
Running costPer request, rising with trafficInfrastructure and a team, close to flat as traffic grows
Fits bestAn ordinary catalog and audience, a small teamRecommendations are part of what you sell, unusual rules, or very high traffic

The managed options for video are mature. Amazon Personalize has the video-on-demand recipes named above. Google offers media recommendations in its Agent Search product, with a getting-started tutorial built on a movie ratings dataset. Algolia Recommend and Recombee sell recommendation APIs with usage-based prices. Our technical guide compares their published prices at one, ten and a hundred million requests a month.

Build your own when the recommendations are part of what makes your service different, when your rules do not fit a vendor's filters (sports rights by match, a live schedule, a children's service with strict curation), when the data cannot leave your systems, or when request volume makes per-request prices higher than running your own. A mixed route is common: a managed service for the first year, with the event log kept in your own storage, so moving later means retraining on data you already hold.

5. Run a pilot as an A/B test

Show the new recommendations to part of your audience, keep the rest on the baseline, and compare your primary metric. One row is enough for a first test. Because You Watched is a common choice, since viewers understand why a title is there.

Run the test for whole weeks. Sunday evening viewing is not Tuesday morning viewing, and Microsoft gives seven days as the typical length of an A/B test there, warning that day-of-the-week effects can change the result. New recommendations also draw clicks simply because they are new, so trust the result once it settles, not the first few days.

6. Roll out row by row

If the pilot wins, extend it one row and one device at a time; the TV app often behaves differently from the phone. Every personalized row needs a fallback, a list it shows when the recommendation service is slow or down, so the home screen never has an empty row.

Bring your content team in at this point too. Editors still decide what the service promotes, and the system decides who sees it first.

7. Measure and keep improving

Tastes change, the catalog changes every month and licenses expire. Models need retraining on a schedule, and the metrics from step 1 need a dashboard someone reads every week.

The next gains often come from outside the model: the order of rows, the number of titles per row and the artwork. Netflix described in 2017 how it chooses, for each member, which image to show for a title, because the artwork is often what a viewer judges the title by.

Common mistakes that make movie recommendations feel wrong

Most complaints about recommendations trace back to a few failures of rules and data rather than of the model.

Recommending what the viewer cannot play

A film that is not licensed in the viewer's country, or has left the catalog, is the most irritating recommendation there is. Rights windows belong in the system as a hard filter, applied before anything is shown.

The same ten hits for everyone

A system tuned only for clicks drifts toward the most popular titles, and the back catalog you pay for goes unwatched. Track catalog coverage as a guardrail: how many different titles get recommended and played each week. The Netflix study above found that a popularity list loses engagement and narrows viewing compared with personalized ranking.

A filter bubble of one genre

The opposite failure. A viewer who watched two true-crime documentaries sees nothing else for a month. Keep a slot or two in each row for titles outside the viewer's usual genres, and let editors' picks in.

Shared profiles and kids' viewing

A household on one profile looks like a single person who likes cartoons, horror and cooking shows. Encourage separate profiles, keep viewing on a kids profile from shaping the adults' recommendations, and keep adult titles off kids profiles entirely.

Viewer privacy and consent

Viewing history tied to an account is personal data under the GDPR, and it can hint at things the regulation treats as special categories, such as religion or health. Handle it with the same care as payment data.

In practice that means saying in your privacy notice that viewing history shapes recommendations, collecting consent wherever your counsel says tracking requires it, and letting viewers remove a title from their history so it stops feeding Because You Watched. Build the consent check into the data pipeline, not only into the app, so an opted-out viewer's events never reach model training.

Building a movie recommendation system with Stratoflow

We have built a recommendation engine as our own product. Recostream was designed for ecommerce sites and content platforms. It returned a new recommendation in 20 to 30 milliseconds under very high event volumes, installed with one line of JavaScript, and reported its effect in Google Analytics so each client could run its own A/B tests. GetResponse acquired Recostream in December 2022.

If you run a streaming or VOD service and want recommendations on your platform, our AI integration pilot follows the steps above: an agreed metric, an evaluation set and an A/B test, in four weeks for a ready, bounded scope, with the code in your repository. When a managed service is the better buy, we say so. A scoping call gets you a written ballpark with its assumptions.