Are MD5 possibilities really $2^{128}$? I have a simple question:

Are we certain that the md5 hashing algorithm can produce $2^{128}$ different outputs ?
If so, how ?

Note: Sorry if this has already been asked, I really couldn't find it.
MD5 processes a message into a fixed-length output of 128 bits, typically represented as a sequence of 32 hexadecimal digits.

This process is not random, but it’s a so called „pseudo-random“-process (A pseudo-random process is a process that appears to be random but is not 100% random).

There is actually no proof that every hash-value of the MD5-process is reachable for some input, but it is expected to be true.

So MD5 can hash every input to an „arbitrary“ hash-value of 128 bits, bits can be 1 or 0, so $2^{128}$ possible outputs.