After redshirting as a freshman at Penn State without an athletic scholarship as a defensive back., Butler rose to the top of the depth chart alongside Derrick Williams to provide a solid deep threat for quarterbacksMichael Robinson and Anthony Morelli. During his freshman season, Butler broke four school freshman records: season receptions, receiving yards in a game, season yards, and touchdown catches. Butler also holds the single-game receiving yards record with 216 yards on 11 receptions against Northwestern on September 30, 2006. He finished 2007 with 47 receptions for 633 yards and 4 touchdowns. He had a season-high 7 catches for 93 yards and a touchdown in Penn State's 38–7 blowout win over Wisconsin. In the 2008 season, Butler caught 47 passes for 810 yards and seven touchdowns. He caught eight passes for 105 yards against Michigan. Butler was a record-setting receiver for Coach Joe Paterno's Nittany Lions. Butler passed Bobby Engram to become Penn State's all-time receptions leader in November of his senior season against the Indiana Hoosiers.
The Seattle Seahawks traded up to select Butler in the 3rd round of the 2009 NFL Draft. They traded the Philadelphia Eagles a 5th- and 7th-round pick plus a 3rd-round pick in 2010 in order to position themselves to select Butler. The team's interest in Butler reportedly stemmed, in part, from conversations with Butler's college teammate, Aaron Maybin, during a pre-draft interview in Seattle. He signed a four-year, $3.2 million contract with the team on July 24, 2009. He received a $680,750 signing bonus.
2010 season
He got his first receiving touchdown on September 12, 2010, against the San Francisco 49ers. It was his only catch of the game and it was for 13 yards. His second touchdown came against the Chicago Bears. After Deion Branch was traded to the New England Patriots Butler was named a starter, only to be replaced in the starting line-up several weeks later by teammate Ben Obomanu. He was put on injured reserve after breaking his leg during a touchdown catch against the 49ers in week 14.
Butler played in all four preseason games with the Seahawks, but was waived on August 31, 2012, as part of the final roster cuts from 75 to 53 players. On December 15, 2012, the Seahawks signed Butler after clearing a physical.