Streaming

Majority of Canadians who stream TV use ad tiers: survey

People are gravitating more and more towards lower-cost ad options

The vast majority of Canadians who stream TV are also consuming ad-supported content, according to new data from Roku.

In its sixth annual Video on Demand Evolution study, company survey Canadian users to unpack their streaming consumption habits. Of particular note is the fact that 85 per cent of respondents said they consume content with in-stream ads. This is a marked increase from the 69 per cent reported in last year’s Roku survey.

On top of that, Roku says average time spent watching ad-supported content has gone from 7.3 hours per week to 10.2 hours. Further, TV streamers are spending 43 per cent of weekly TV viewing time on ad-supported content. Meanwhile, SVOD (subscription video -on-demand) usage declined slightly from 85 per cent to 80 per cent.

It’s interesting to see these marked increases considering people were initially so vocally against introducing ads to streaming services. After all, that was one of the positives that they offered over cable.

But of course, the lower price can’t be ignored, especially amid increasing belt-tightening worldwide. In the case of ad-enabled tiers, you often save quite a bit. For instance, Netflix’s base ad-enabled tier is $7.99/month, while the lowest price ad-free membership, Standard, costs $18.99/month. Similarly, Disney+ Standard with Ads costs $8.99/month, while Standard (ad-free) is $12.99/month and Premium is $15.99/month.

Even with the higher tiers also offering better streaming quality and support for simultaneous usage on more devices, people are still gravitating more and more to the cheaper ad-enabled tiers. To give some context to this, Netflix confirmed in May that it had reached nearly 100 million monthly active ad users, out of around 300 million total subscribers.

Of course, there are also FAST channels (free ad-supported streaming television). This includes the 200-plus channels that are on Roku’s own Roku Channel, as well other services like PlutoTV and Tubi. In its report, Roku notes that this increasingly popular type of platform is now accessed by 41 per cent of TV streamers and used for an average of 4.2 hours per week.

The study also examines the kinds of content that TV streamers want. For one, Roku notes that 44 per cent of people said it’s “stressful” to figure out what to watch, leading the company to suggest that companies help guide them towards content they’d like. The study also found that 59 per cent of TV streamers say they’d feel more positively toward brands that highlight Canadian-made products.

All in all, it’s a pretty interesting read. You can access the full study from Roku’s website. To conduct the survey, Roku says it commissioned Fuse Insights to poll 2,018 respondents across Canada — 1,728 respondents of whom are TV streamers. The data was collected between June and July 2025.

Do you sign up to any ad-supported streaming services? Let us know in the comments.

MobileSyrup may earn a commission from purchases made via our links, which helps fund the journalism we provide free on our website. These links do not influence our editorial content. Support us here.

Related Articles

Fatal error: Uncaught Aws\S3\Exception\PermanentRedirectException: Encountered a permanent redirect while requesting https://ms-staging-baselayer-static-assets.s3.ca-central-1.amazonaws.com/?list-type=2&delimiter=%2F&prefix=uploads%2Fwpcf7_uploads%2F. Are you sure you are using the correct region for this bucket? in /var/www/html/vendor/aws/aws-sdk-php/src/S3/PermanentRedirectMiddleware.php:49 Stack trace: #0 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(209): Aws\S3\PermanentRedirectMiddleware->Aws\S3\{closure}(Object(Aws\Result)) #1 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(158): GuzzleHttp\Promise\Promise::callHandler(1, Object(Aws\Result), NULL) #2 /var/www/html/vendor/guzzlehttp/promises/src/TaskQueue.php(52): GuzzleHttp\Promise\Promise::GuzzleHttp\Promise\{closure}() #3 /var/www/html/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(163): GuzzleHttp\Promise\TaskQueue->run() #4 /var/www/html/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php(189): GuzzleHttp\Handler\CurlMultiHandler->tick() #5 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(251): GuzzleHttp\Handler\CurlMultiHandler->execute(true) #6 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(227): GuzzleHttp\Promise\Promise->invokeWaitFn() #7 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending() #8 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList() #9 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(272): GuzzleHttp\Promise\Promise->waitIfPending() #10 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(229): GuzzleHttp\Promise\Promise->invokeWaitList() #11 /var/www/html/vendor/guzzlehttp/promises/src/Promise.php(69): GuzzleHttp\Promise\Promise->waitIfPending() #12 /var/www/html/vendor/aws/aws-sdk-php/src/AwsClientTrait.php(58): GuzzleHttp\Promise\Promise->wait() #13 /var/www/html/vendor/aws/aws-sdk-php/src/ResultPaginator.php(151): Aws\AwsClient->execute(Object(Aws\Command)) #14 /var/www/html/vendor/aws/aws-sdk-php/src/functions.php(52): Aws\ResultPaginator->valid() #15 /var/www/html/vendor/aws/aws-sdk-php/src/functions.php(69): Aws\map(Object(Aws\ResultPaginator), Object(Closure)) #16 [internal function]: Aws\flatmap(Object(Aws\ResultPaginator), Object(Closure)) #17 /var/www/html/wp-content/plugins/s3-uploads/inc/class-stream-wrapper.php(695): Generator->valid() #18 [internal function]: S3_Uploads\Stream_Wrapper->dir_readdir() #19 /var/www/html/wp-content/plugins/contact-form-7/includes/file.php(362): readdir(Resource id #734) #20 /var/www/html/wp-includes/class-wp-hook.php(322): wpcf7_cleanup_upload_files() #21 /var/www/html/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, Array) #22 /var/www/html/wp-includes/plugin.php(517): WP_Hook->do_action(Array) #23 /var/www/html/wp-includes/load.php(1280): do_action('shutdown') #24 [internal function]: shutdown_action_hook() #25 {main} thrown in /var/www/html/vendor/aws/aws-sdk-php/src/S3/PermanentRedirectMiddleware.php on line 49