Bitcoin Core is primarily written in C++. It began as Satoshi Nakamoto’s original Bitcoin software and remains the reference implementation used to validate transactions, verify blocks, and participate as a full node on the Bitcoin network.
C++ was a practical choice for this kind of system software. It offers high performance, precise control over memory and resources, and mature libraries for networking, cryptography, concurrency, and file handling. Those qualities matter for software that may need to process and store the entire transaction history while communicating reliably with peers.
Bitcoin Core is not a single-language project in every sense. Its codebase also includes scripts, test tooling, documentation, and auxiliary components written in other languages. That does not change the standard answer: the core application itself is primarily a C++ codebase.
A common mix-up is confusing Bitcoin Core with Bitcoin Script. Bitcoin Script is a deliberately limited language used inside transaction conditions; it is not the programming language used to implement the node software. Rust, Java, and Python may appear in related tools or alternative implementations, but they are not Bitcoin Core’s primary language.