삐에로 복장을 하고 마을행사를 해주며 떠돌이 생활을 하는 마음씨 고약한 광대(Norm Snively: 마이클 제터 분)와 함께 지내며 묘기를 보여주는 개, 버디는 그의 구박을 받으며 두려움 속에서 살아간다. 그러던 어느 날, 버디의 실수로 생일 잔치는 엉망이 되고 광대는 마을에서 쫓겨난다. 잔뜩 화가 난 광대는 버디를 도축장으로 보내겠다고 으름장을 놓은 후 상자로 된 우리 속에 가둔다. 난폭하게 운전하는 트럭 위에 있던 버디는 우리 속에 갇힌 채로 도로 위에 떨어지고 광대는 이 사실을 모른 체 그냥 가 버린다. 한편 비행 시험 도중 돌아가신 아버지를 그리워하며 외로움 속에서 살아가던 12살 소년 조쉬(Josh Framm: 케빈 제거스 분)는 이사를 하고 새로운 학교에 전학을 하지만 적응을 하지 못한다. 조쉬는 어느 날 오래된 집에서 낡은 농구 코트를 발견하고 그 곳에서 외로움을 달랜다. 조쉬와 버디는 농구 코트에서 만나게 되고, 버디가 농구를 할 수 있다는 것을 알게 된 조쉬는 버디를 집으로 데려온다. 그러던 중 조쉬는 학교 농구부에 뽑힌다. 경기 도중 갑자기 버디가 코트에 뛰어 들어 경기는 난장판이 되지만 사람들은 버디의 슛을 보고 경악을 금치 못한다. 결국 버디는 조쉬가 소속된 농구팀 마스코트가 되어 유명해지고 각종 TV프로그램에 출연하는 등 마을의 스타가 된다. 그러나 TV에 출연한 버디를 발견한 광대는 버디를 이용해 돈을 벌 목적으로 조쉬에게서 버디를 빼앗아 간다. 결승전을 앞두고 있던 조쉬의 농구팀은 사기를 잃는다. 슬픈 날들을 보내던 조쉬는 나쁜 광대로부터 버디를 구출하고, 그에게서 벗어나게 해주기 위해 눈물을 흘리며 버디를 떠나 보낸다. 한편 결승전에 오른 조쉬의 팀은 사력을 다하지만 역부족이다. 또한 설상가상으로 선수들의 부상으로 한사람이 부족하게 된다. 이때 다시 조쉬를 찾아 온 버디가 경기장으로 뛰어들고, 완벽한 팀플레이로 역전승을 만들어 낸다. 하지만 광대는 계속 버디에 대한 소유권을 주장하고 결국 그들