In mathematics, a **concrete category** is a category that is equipped with a faithful functor to the category of sets (or sometimes to another category, *see Relative concreteness below*). This functor makes it possible to think of the objects of the category as sets with additional structure, and of its morphisms as structure-preserving functions. Many important categories have obvious interpretations as concrete categories, for example the category of topological spaces and the category of groups, and trivially also the category of sets itself. On the other hand, the homotopy category of topological spaces is not **concretizable**, i.e. it does not admit a faithful functor to the category of sets.

A concrete category, when defined without reference to the notion of a category, consists of a class of *objects*, each equipped with an *underlying set*; and for any two objects *A* and *B* a set of functions, called *homomorphisms*, from the underlying set of *A* to the underlying set of *B*. Furthermore, for every object *A*, the identity function on the underlying set of *A* must be a homomorphism from *A* to *A*, and the composition of a homomorphism from *A* to *B* followed by a homomorphism from *B* to *C* must be a homomorphism from *A* to *C*.^{[1]}

A **concrete category** is a pair (*C*,*U*) such that

*C*is a category, and*U*:*C*→**Set**(the category of sets and functions) is a faithful functor.

The functor *U* is to be thought of as a forgetful functor, which assigns to every object of *C* its "underlying set", and to every morphism in *C* its "underlying function".

It is customary to call the morphisms in a concrete category *homomorphisms* (e.g., group homomorphisms, ring homomorphisms, etc.) Because of the faithfulness of the functor *U*, the homomorphisms of a concrete category may be formally identified with their underlying functions (i.e., their images under *U*); the homomorphisms then regain the usual interpretation as "structure-preserving" functions.

A category *C* is **concretizable** if there exists a concrete category (*C*,*U*);
i.e., if there exists a faithful functor *U*: *C* → **Set**. All small categories are concretizable: define *U* so that its object part maps each object *b* of *C* to the set of all morphisms of *C* whose codomain is *b* (i.e. all morphisms of the form *f*: *a* → *b* for any object *a* of *C*), and its morphism part maps each morphism *g*: *b* → *c* of *C* to the function *U*(*g*): *U*(*b*) → *U*(*c*) which maps each member *f*: *a* → *b* of *U*(*b*) to the composition *gf*: *a* → *c*, a member of *U*(*c*). (Item 6 under Further examples expresses the same *U* in less elementary language via presheaves.) The Counter-examples section exhibits two large categories that are not concretizable.

It is important to note that, contrary to intuition, concreteness is not a property which a category may or may not satisfy, but rather a structure with which a category may or may not be equipped. In particular, a category *C* may admit several faithful functors into **Set**. Hence there may be several concrete categories (*C*, *U*) all corresponding to the same category *C*.

In practice, however, the choice of faithful functor is often clear and in this case we simply speak of the "concrete category *C*". For example, "the concrete category **Set**" means the pair (**Set**, *I*) where *I* denotes the identity functor **Set** → **Set**.

The requirement that *U* be faithful means that it maps different morphisms between the same objects to different functions. However, *U* may map different objects to the same set and, if this occurs, it will also map different morphisms to the same function.

For example, if *S* and *T* are two different topologies on the same set *X*, then
(*X*, *S*) and (*X*, *T*) are distinct objects in the category **Top** of topological spaces and continuous maps, but mapped to the same set *X* by the forgetful functor **Top** → **Set**. Moreover, the identity morphism (*X*, *S*) → (*X*, *S*) and the identity morphism (*X*, *T*) → (*X*, *T*) are considered distinct morphisms in **Top**, but they have the same underlying function, namely the identity function on *X*.

Similarly, any set with four elements can be given two non-isomorphic group structures: one isomorphic to , and the other isomorphic to .

- Any group
*G*may be regarded as an "abstract" category with one arbitrary object, , and one morphism for each element of the group. This would not be counted as concrete according to the intuitive notion described at the top of this article. But every faithful*G*-set (equivalently, every representation of*G*as a group of permutations) determines a faithful functor*G*→**Set**. Since every group acts faithfully on itself,*G*can be made into a concrete category in at least one way. - Similarly, any poset
*P*may be regarded as an abstract category with a unique arrow*x*→*y*whenever*x*≤*y*. This can be made concrete by defining a functor*D*:*P*→**Set**which maps each object*x*to and each arrow*x*→*y*to the inclusion map . - The category
**Rel**whose objects are sets and whose morphisms are relations can be made concrete by taking*U*to map each set*X*to its power set and each relation to the function defined by . Noting that power sets are complete lattices under inclusion, those functions between them arising from some relation*R*in this way are exactly the supremum-preserving maps. Hence**Rel**is equivalent to a full subcategory of the category**Sup**of complete lattices and their sup-preserving maps. Conversely, starting from this equivalence we can recover*U*as the composite**Rel**→**Sup**→**Set**of the forgetful functor for**Sup**with this embedding of**Rel**in**Sup**. - The category
**Set**^{op}can be embedded into**Rel**by representing each set as itself and each function*f*:*X*→*Y*as the relation from*Y*to*X*formed as the set of pairs (*f*(*x*),*x*) for all*x*∈*X*; hence**Set**^{op}is concretizable. The forgetful functor which arises in this way is the contravariant powerset functor**Set**^{op}→**Set**. - It follows from the previous example that the opposite of any concretizable category
*C*is again concretizable, since if*U*is a faithful functor*C*→**Set**then*C*^{op}may be equipped with the composite*C*^{op}→**Set**^{op}→**Set**. - If
*C*is any small category, then there exists a faithful functor*P*:**Set**^{Cop}→**Set**which maps a presheaf*X*to the coproduct . By composing this with the Yoneda embedding*Y*:*C*→**Set**^{Cop}one obtains a faithful functor*C*→**Set**. - For technical reasons, the category
**Ban**_{1}of Banach spaces and linear contractions is often equipped not with the "obvious" forgetful functor but the functor*U*_{1}:**Ban**_{1}→**Set**which maps a Banach space to its (closed) unit ball. - The category
**Cat**whose objects are small categories and whose morphisms are functors can be made concrete by sending each category**C**to the set containing its objects and morphisms. Functors can be simply viewed as functions acting on the objects and morphisms.

The category **hTop**, where the objects are topological spaces and the morphisms are homotopy classes of continuous functions, is an example of a category that is not concretizable.
While the objects are sets (with additional structure), the morphisms are not actual functions between them, but rather classes of functions.
The fact that there does not exist *any* faithful functor from **hTop** to **Set** was first proven by Peter Freyd.
In the same article, Freyd cites an earlier result that the category of "small categories and natural equivalence-classes of functors" also fails to be concretizable.

Given a concrete category (*C*, *U*) and a cardinal number *N*, let *U ^{N}* be the functor

The class of all *N*-ary predicates and *N*-ary operations of a concrete category (*C*,*U*), with *N* ranging over the class of all cardinal numbers, forms a large signature. The category of models for this signature then contains a full subcategory which is equivalent to *C*.

In some parts of category theory, most notably topos theory, it is common to replace the category **Set** with a different category *X*, often called a *base category*.
For this reason, it makes sense to call a pair (*C*, *U*) where *C* is a category and *U* a faithful functor *C* → *X* a **concrete category over** *X*.
For example, it may be useful to think of the models of a theory with *N* sorts as forming a concrete category over **Set**^{N}.

In this context, a concrete category over **Set** is sometimes called a *construct*.