A string graph is the intersection graph of a set of curves in the plane. Each curve is represented by a vertex, and an edge between two vertices means that the corresponding curves intersect. We show that string graphs can be recognized in NP: The recognition problem was not known to be decidable until very recently, when two independent papers established exponential upper bounds on the number of intersections needed to realize a string graph (Mutzel (Ed.), Graph Drawing 2001, Lecture Notes in Computer Science, Springer, Berlin; Proceedings of the 33rd Annual ACM Symposium on Theory of Computing (STOC-2001)). These results implied that the recognition problem lies in NEXP: In the present paper we improve this by showing that the recognition problem for string graphs is in NP; and therefore NP-complete, since Kratochvi?l showed that the recognition problem is NP-hard (J. Combin Theory, Ser. B 52). The result has consequences for the computational complexity of problems in graph drawi...