The 16-year-old boy, who has not been named because of his age, is accused of placing the explosive device in his locker at St. Helens High School, the St. Helens Police Department said in a statement.
Police responded to calls by school staff reporting that they received information about the student possibly harboring an explosive, police said in a statement posted online.
"When the student was confronted, he admitted that he did bring a homemade explosive device to school and placed it in his locker," police said.
The boy is being detained at the Cowlitz County Juvenile Detention Facility on charges of Manufacture and Possession of an Explosive Device and Disorderly Conduct, police said.
Police said they will continue to interview students to determine a possible motive for the bomb-making or for bringing the bomb to school, located about 30 miles north or Portland.
"This investigation has not revealed a specific threat or any motivation of the suspect," police said.
After the bomb threat was called in, students from the high school were transported by bus to a nearby elementary school until the campus was deemed safe.
Police have taken the explosive device to the office of the Oregon State Police to analyze it.