Born in Sarnia, Ontario, Butler was selected 55th overall by the New York Rangers in the 1971 NHL Amateur Draft despite scoring only 6 goals in junior the previous season. He spent most of his first two professional seasons in the minors, earning an 8-game callup during the 1972–73 season during which he scored his first NHL goal. Called up again late in the 1973–74 campaign, he impressed with 16 points in 26 games, and remained with the team during the playoffs, appearing in 12 of 13 games. In 1974–75, Butler's first full NHL season, he recorded 17 goals and 16 assists for 33 points in 78 games, and earned a positive reputation for his speed, hustle, and quality defensive play. However, at the conclusion of the season he was traded to the St. Louis Blues as the centerpiece of a deal for star goaltender John Davidson. In St. Louis, he received the opportunity to play on one of the Blues' top lines with Garry Unger and Bob MacMillan, and responded with the finest year of his career, finishing the 1975–76 season with 17 goals and 41 points despite missing 14 games due to injury. He had another solid year in 1976–77, posting 12 goals and 32 points for the Blues. Just after the start of the 1977–78 campaign, Butler was dealt to the Toronto Maple Leafs for Inge Hammarstrom. In Toronto, he received less icetime, as coach Roger Neilson used him exclusively as a defensive/penalty killing specialist. Although his offensive numbers suffered and he finished the year with just 18 points, he was by now considered one of the best penalty killers in the NHL, and was an important part of a Toronto team which nearly reached the Stanley Cup finals in 1978. Butler spent three seasons in Toronto before being dealt to the Vancouver Canucks late in the 1979–80 season. In 1980–81, Butler recorded 12 goals and 32 points for Vancouver, his highest offensive totals since his time in St. Louis. However, he lost his spot in the Canucks lineup during the 1981–82 season and was sent to the minors for the first time since 1974, and thus missed the Stanley Cup finals in 1982. Released by the Canucks, he signed with the Winnipeg Jets as a free agent for 1982–83. He recorded 3 goals and 9 points in 42 games, but was demoted to the minors late in the season. Rather than accept the assignment, he chose to retire. Butler finished his NHL career with 99 goals and 120 assists for 219 points in 641 games, along with 515 penalty minutes.