In processing crosshole seismic reflection data, it is necessary to separate the upgoing and downgoing primary reflections from each other, from the direct waves, and from other wave types in the data. We have implemented a 3-D f-k-k filter for wavefield separation that is applied in a single pass. The complete data set is treated as a data volume, with each sample defined by the three coordinates of source depth, receiver depth, and time. The filter works well because upgoing primaries, downgoing primaries, and direct waves lie in different quadrants in f-k-k space. The strongest multiples, including mode-converted multiples, lie in the same quadrants in f-k-k space as the direct waves, so they are readily rejected together. Tube waves and mode-converted primaries are also suppressed as most of the energy in these wave types lies outside the pass volume for P-wave primaries. Some head wave and S-wave primary energy will be passed by the filter; however, these waves tend to have low amplitudes and late arrival times, respectively, and will be smeared out on imaging with the P-wave velocity field.We have processed a real crosshole data set using two different methods of wavefield separation: applying 2-D f-k filtering to common source gathers and applying a 3-D f-k-k filter to the whole data set. The migrated image produced after 3-D f-k-k filtering contains less coherent noise and consequently shows improved continuity of reflectors.