Suppose *C* is a category, *I* is a set, and for each *i* in *I*, an object *X*_{i} in *C* is given. An object *X*, together with morphisms *p*_{i} : *X* → *X*_{i} for each *i* in *I* is called a product of the family (*X*_{i}) if, whenever *Y* is an object of *C* and *q*_{i} : *Y* → *X*_{i} are given morphisms, then there exists precisely one morphism *r* : *Y* → *X* such that *q*_{i} = *p*_{i}*r*.

The above definition is an example of a universal property; in fact, it is a special limit. Not every family (*X*_{i}) needs to have a product, but if it does, then the product is unique in a strong sense: if *p*_{i} : *X* → *X*_{i} and *p*'_{i} : *X* ' → *X*_{i} are two products of the family (*X*_{i}), then there exists a unique isomorphism *r* : *X* → *X* ' such that *p*'_{i}*r* = *p*_{i} for each *i* in *I*.

An empty product (i.e. *I* is the empty set) is the same as a terminal object in *C*.

If *I* is a set such that all products for families indexed with *I* exist, then it is possible to choose the products in a compatible fashion so that the product turns into a functor *C*^{I} → *C*. The product of the family (*X*_{i}) is then often denoted by Π*X*_{i}, and the maps *p*_{i} are known as the **natural projections**. We have a natural isomorphism

If *I* is a finite set, say *I* = {1,...,*n*}, then the product of objects *X*_{1},...,*X*_{n} is often denoted by *X*_{1}×...×*X*_{n}.
Suppose all finite products exist in *C*, product functors have been chosen as above, and 1 denotes the terminal object of *C* corresponding to the empty product. We then have natural isomorphisms