In computer programming, dead code typically consists of blocks of programming instructions or entire routines that will never be accessed because all calls to them have been removed, or code that cannot be reached because it is guarded by a control structure that probably must always transfer control somewhere else. Some generalize the idea of dead code to any code that can be safely removed without causing an error, such as a definition which is never used.

The presence of dead code may reveal either logical errors due to alterations in the program or significant changes in the assumptions and environment of the program (see also software rot); a good compiler should report dead code so a maintainer can think about what it means. Many times dead code is inserted by a defensive programmer for can't happen tests that really can't happen (yet). Other times dead code is inserted by the programmer for debugging purposes but has yet to be removed.