A concurrent-read concurrent-write parallel algorithm for detecting all squares in a string is presented. A tight lower bound shows that it is the fastest possible algorithm over general alphabets, with optimal O ( log log n ) time. To locate the squares within the string, the authors use an optimal parallel string-matching algorithm together with periodicity properties.