Portuguese flag

Cão vs. cachorro

While both cão and cachorro translate to "dog" in English, their usage depends heavily on the region (Brazil vs. Portugal) and the age of the animal. In short, one is more formal or adult-specific, while the other can be general or strictly for puppies depending on where you are.

Cão

A1
In European Portuguese (Portugal), cão is the standard, neutral word for an adult dog. In Brazilian Portuguese, cão is rarely used in daily conversation; it sounds formal, poetic, or scientific. In Brazil, it is mostly reserved for compound words describing working roles, such as cão-guia (guide dog) or cão de guarda (guard dog).
O cão ladrou quando o estranho se aproximou.
(The dog barked when the stranger approached.)
O cão-guia ajuda o seu dono a atravessar a rua.
(The guide dog helps his owner cross the street.)
Cuidado com o cão.
(Beware of the dog.)
O ser humano e o cão têm uma amizade antiga.
(Humans and the dog have an ancient friendship.)

Cachorro

A1
In Brazilian Portuguese, cachorro is the everyday, common word for a dog of any age or size. However, in European Portuguese, cachorro has a very specific meaning: it only refers to a puppy or a young dog. It is also the word used in both regions for the food cachorro-quente (hot dog).
Eu levo meu cachorro para passear todo dia.
(I walk my dog every day.)
A cadela teve cinco cachorros ontem à noite.
(The female dog had five puppies last night.)
O cachorro comeu o meu dever de casa.
(The dog ate my homework.)
Vamos comer um cachorro-quente no jantar.
(Let's eat a hot dog for dinner.)

Summary

The main difference is geographical. If you are in Brazil, use cachorro for any dog and reserve cão for formal contexts. If you are in Portugal, use cão for adult dogs and use cachorro only when referring to puppies.