News

Public Mobile’s newest plans disappoint

More expensive and less data across the board

Public Mobile logo on a phone.

Telus-owned Public Mobile launched new plans on July 8 and… they’re not great.

Here’s the breakdown:

  • $40/20GB 5G Canada/U.S./Mexico
  • $50/30GB 5G Canada/U.S./Mexico
  • $35/15GB 4G Canada-wide
  • $25/4GB 4G Canada-wide
  • $19/1GB 4G Canada-wide (ends July 14)

Compared to what Public Mobile offered just a couple days ago, these new plans are extremely disappointing. Both the $40/20GB and $50/30GB plans have significantly less data and cost more than prior options. For example, Public used to have a $36/60GB 5G Canada/U.S./Mexico plan — now it’s charging $4 more for a plan with 40GB less data.

Public Mobile plans as of July 8, 2025

Things aren’t any better when you get to the Canada-wide plans. The $35/15GB plan is more expensive and has less data than the previous $32/20GB 5G and $29/20GB 4G plans. The $25/4GB plan is unchanged, while the $19 plan is set to go away in a few days and likely won’t be replaced by a better offer.

It’s a real shame, as Public Mobile was one of my most recommended wireless providers over the last several months, thanks to its excellent pricing and value, which rivalled only Freedom Mobile among Canadian wireless providers.

Now, Public’s plans sit in an awkward spot between Freedom’s excellent value options and the mediocre plans on offer from other flanker brands, like fellow Telus offshoot Koodo and Rogers-owned Fido. For example, Public’s $40/20GB plan is better than Fido’s new $40/10GB option, but unless you need the Canada/U.S./Mexico roaming, Fido’s $50/60GB plan might be a better option.

Ultimately, I’d recommend anyone in the market for a new wireless plan consider Freedom first, as it still has the best options overall. If you need help finding the best wireless deal for you, check out MobileSyrup‘s plan search tool.

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