At the age of six, Kahn joined Karlsruher SC, where his father Rolf had played from 1962 to 1965. He started as an outfield player before becoming goalkeeper. Kahn was included in the team's professional squad in the 1987–88 season of the first Bundesliga division, at first being the reserve goalkeeper behind Alexander Famulla. On 27 November 1987, Kahn made his league debut in a 4–0 home victory against 1. FC Köln. However, not until 1990 did manager Winfried Schäfer decide to start him over Famulla. In the following years, Kahn established himself as the team's starting goalkeeper. He was considered a key player and a motivator in the Karlsruher squad which reached the semi-finals in the 1993–94 UEFA Cup. During the round of sixteen the team accomplished a 7–0 rout of Valencia at its home field after losing the first match 1–3 at the Mestalla Stadium. The game was nicknamed the "Miracle at Wildparkstadion" by the German media. The team was defeated by SV Austria Salzburg in the semi-final.
Kahn's performance for Karlsruher SC prompted Bayern Munich to express interest in acquiring him. The team signed him as a replacement for Raimond Aumann at the beginning of the 1994–95 season, for the at that time record fee of DM4.6 million (€2.385 million) for his position, and was established as Bayern's starting goalkeeper. Although suffering a rupture of his cruciate ligament, which kept him off the field for almost six months, Kahn made his debut match for the German national team two months after his return. Bayern defeated Bordeaux 3–1 in the 1996 UEFA Cup Final. In the 1996–97 Bundesliga season, Kahn achieved his first German championship with Bayern Munich, the German League Cup, and was named German Goalkeeper of the Year for the second time in his career (the first in 1994).
In 1999, Bayern Munich reached the 1999 Champions League Final, facing Manchester United at Camp Nou. Although Bayern Munich player Mario Basler scored an early goal in the sixth minute of the game, two goals by Teddy Sheringham and Ole Gunnar Solskjær in injury time led to United's victory. The same year, he was named World Goalkeeper of the Year by the International Federation of Football History and Statistics.
Kahn was sent off in an incident against Hansa Rostock on 3 March 2001. With his Bayern Munich team losing 2–3 in the final minutes, he sneaked into the area during a corner kick, jumped up, and punched the ball into the opponent's net. He immediately received a , which dismissed him from the game. He was named man of the match when he was part of the squad which played the 2001 Champions League title against Valencia. He played an important role in the penalty shoot-out held after the teams remained tied 1–1 after extra time, making three saves. He also received the UEFA Fair Play Award for this match, after he walked up to a disappointed Santiago Cañizares, the opposition goalkeeper, after the penalty shoot-out and attempted to comfort him. The same year, Bayern Munich won the Intercontinental Cup at Tokyo's National Stadium against the Argentine team Boca Juniors. But the team failed to win the UEFA Super Cup a couple of months earlier.
By Kahn's account, injuries, personal problems and a lack of motivation were responsible for his game going into a rapid decline during the 2002–03 season. This culminated with Kahn allowing a seemingly soft shot by into the net against Real Madrid in the first knockout-round of the 2003–04 Champions League season, contributing to the elimination of his team from the competition. The Daily Mail criticised him for his mistake: "Once again on the big occasion Kahn was undone by a Brazilian, just as he was in the 2002 World Cup Final. Only this time it was a Roberto Carlos free-kick which he let slip, not a Rivaldo shot, for a goal as embarrassing as it is potentially catastrophic for Bayern". Bayern Munich won the next Bundesliga season with Kahn.
Prior to a 2006 match against Arminia Bielefeld in Munich, Michael Rensing peppered Kahn with practice shots. One shot hit Kahn squarely in the eye, causing enough swelling and discoloration to keep him from playing. With Rensing in goal, Bayern Munich won the match 2–0.
Kahn announced his intention to honour his contract and play through the 2007–08 season. As of 2011, he is the all time leader in the history of the Bundesliga, with 197. On 2 September 2007, aged 38, he played his 535th Bundesliga match, becoming the league's all-time leader among goalkeepers in matches played. Kahn made his final European appearance for Bayern in a 4–0 defeat to Zenit Saint Petersburg in the UEFA cup semi-final on 1 May 2008. His last Bundesliga game was the 4–1 victory against Hertha Berlin on 17 May. It was his 557th appearance in the German top-flight.
After a twenty-year career, of which he played fourteen with Bayern, he had his professional farewell in a testimonial match versus the select on 2 September 2008, which ended 1–1. His last appearance for Bayern Munich was on 27 May 2008 at the Salt Lake Stadium (Yuvabharati Krirangan), Kolkata in a friendly against Mohun Bagan of India during Bayern's Asian tour of 2008. Around 120,000 people turned up for the match. The match ended 0–3 in favour of Bayern and Michael Rensing substituted him in the 55th minute.