Renaming Detection Finding changed identifiers in programs is important for program analysis and merging. Comparing two versions of a program is complicated if renaming occurred. Textual merging is highly unreliable if in one version, identifiers were renamed, while in the other version, code using the old identifiers was added or modified. A program that automatically detects renamed identifiers between pairs of program modules is presented. The detector is part of a suite of intelligent differencing and merging programs that exploit the static semantics of programming languages. The core of the renaming detector is language independent; a language-dependent frontend implements a generic symbol table that stores scopes, definitions, and references. A rule-based expert system finds the best matches between symbols. The detector works with multiple file pairs, taking into account renamings that affect arbitarily many files. Renaming detectors for Java and Scheme have been implemented and shown to scale to realistic project sizes. With automatic renaming detection, a new quality in program analysis and merging is achieveable.