The stream flows from north to south, with a logging landscape on the New Hampshire side, and a mixture of woodland and farms on the Quebec side. Near the southern end of the stream, the international boundary diverges from Halls Stream and heads west, along a line which, when it was originally surveyed, was intended to be on the 45th parallel. South of this line, Halls Stream enters the state of Vermont, flowing through the town of Canaan in Essex County for a little over a half mile. In the village of Beecher Falls, Vermont, it empties into the Connecticut River (which forms the boundary between Vermont and New Hampshire).
Where Halls Stream forms the international border, it divides the following municipalities:
Historically, Halls Stream factored into an international boundary dispute in this area, and it formed part of the border of the so-called Republic of Indian Stream.