An Air Canada flight from Shanghai to Toronto has been diverted to Calgary after heavy turbulence injured 21 passengers, including three children.

Some were taken to hospital, where they were in a stable condition with non-life threatening neck and back injuries, Emergency Medical Services spokesman Stuart Brideaux said.

Air Canada spokeswoman Isabelle Arthur said flight AC088 was carrying 332 passengers and 19 crew members. The Boeing 777 landed without incident.

Fire crews and other emergency staff were on alert when the plane landed.

Sign up to our free newsletters

Get the best updates straight to your inbox:
Please select at least one mailing list.

You can unsubscribe at any time by clicking the link in the footer of our emails. We use Mailchimp as our marketing platform. By subscribing, you acknowledge that your information will be transferred to Mailchimp for processing.