Program boundaries are determined through viewing behavior. More specifically, edge and/or commercial boundaries of programs may be determined by monitoring viewing behavior of different video segments using forward and backward correlations between video segments. In a described implementation, a video portion is divided into segments. To monitor the viewing of the video portion, whether each particular segment is played by a viewer (as compared to being unviewed or viewed in an accelerated manner) is tracked for a number of different viewers. For each segment, correlations with previous and subsequent segments are calculated based on viewership. The segments may then be categorized. A segment that is strongly correlated with subsequent segments but not previous segments is categorized as a starting segment. A segment that is strongly correlated with previous segments but not subsequent segments is categorized as an ending segment. Middle and island segments may also be categorized.