We consider languages expressed by word equations in two variables and give a complete
characterization for their complexity functions, that is, the functions that give the number of
words of the same length. Specifically, we prove that there are only five types of complexities:
constant, linear, exponential, and two in between constant and linear. For the latter two, we
give precise characterizations in terms of the number of solutions of Diophantine equations of
certain types. In particular, we show that the linear upper bound on the non-exponential
complexities by Karhumäki et al. in [9], is tight. There are several consequences of our study.
First, we derive that both of the sets of all finite Sturmian words and of all finite Standard
words are expressible by word equations. Second, we characterize the languages of non-exponential
complexity which are expressible by two-variable word equations as finite unions of several
simple parametric formulae and solutions of a two-variable word equation with a finite graph.
Third, we find optimal upper bounds on the solutions of (solvable) two-variable word equations,
namely, linear bound for one variable and quadratric for the other. From this, we obtain an
$\mathcal{O}(n^6)$ algorithm for testing the solvability of two-variable word equations, improving thus very
much Charatonik and Pacholski's $\mathcal{O}(n^100)$ algorithm from [3].