Viejo vs. anciano vs. antiguo

The Spanish words 'viejo', 'anciano', and 'antiguo' all basically mean 'old', but are used in different contexts. 'Viejo' generally refers to old age in persons or things, 'anciano' specifically refers to an old person, while 'antiguo' refers to something old in time or ancient.

Viejo

'Viejo' can refer to an old person, usually someone around middle age or beyond. It can also refer to objects, meaning they are worn out or not new.
Mi padre es muy viejo.
(My father is very old.)
Ese coche es viejo.
(That car is old.)

Anciano

'Anciano' is more respectful and specifically refers to a very old person, similar to the English term 'elderly'.
Mi abuelo es un anciano.
(My grandfather is an elderly man.)
Los ancianos necesitan cuidados especiales.
(The elderly need special care.)

Antiguo

'Antiguo' usually refers to something old in time, like an object, building or custom from long ago. Something is 'antiguo' if it has been in existence for a long time.
Este edificio es muy antiguo.
(This building is very ancient.)
Es una costumbre antigua.
(It's an old custom.)

Summary

Though all three words – 'viejo', 'anciano', and 'antiguo' – have the basic meaning of 'old', they are used differently. While 'viejo' can refer to both old persons and objects, 'anciano' is a more respectful term that specifically refers to very old people. On the other hand, 'antiguo' is used when referring to things that are old in terms of time or history.