Salmon Brook begins at Martins Pond in Groton. It then flows approximately 17.5 miles (28.2 km) north-northeast to the Merrimack River. It runs through Lost Lake/Knops Pond, Whitney Pond, Cow Pond, and Upper and Lower Massapoag Ponds. All of these water bodies are dammed. The brook runs roughly parallel to the Nashua River from Lost Lake to the brook's mouth in Nashua.