The bitcoin.conf file is the primary configuration file for the Bitcoin Core client, bitcoind. This guide provides a detailed explanation of its default locations, key configuration options, and practical usage tips to help you set up and customize your node effectively.
Default File Locations
The bitcoin.conf file is not created automatically. You must create it yourself in the appropriate directory for your operating system.
- Linux:
$HOME/.bitcoin/bitcoin.conf - Windows:
%APPDATA%\Bitcoin\bitcoin.conf - macOS:
$HOME/Library/Application Support/Bitcoin/bitcoin.conf
If you need a starting template, you can copy the example configuration file from the official Bitcoin GitHub repository.
Key Configuration Sections
The configuration file uses a simple key=value format. Lines beginning with a # are treated as comments and ignored.
Network Configuration
Control how your node connects to the Bitcoin network.
testnet: Determines which network to use.
testnet=0 # 0 = Mainnet, 1 = Testnetregtest: Enables a private, local blockchain for development and testing.
regtest=0 # 0 = Disabled, 1 = Enabledproxy: Configures a SOCKS5 proxy for network traffic.
#proxy=127.0.0.1:9050 # Commented out by defaultbind & whitebind: Specify local addresses to bind for incoming connections.
#bind=
#whitebind=addnode & connect: Manually add peer nodes to connect to.
#addnode=69.164.218.197
#connect=69.164.218.197listen: Controls whether your node accepts incoming connections.
#listen=1 # Enabled by default unless 'connect' is usedmaxconnections: Sets the maximum number of inbound and outbound connections.
#maxconnections=JSON-RPC Server Configuration
These settings control the Remote Procedure Call (RPC) interface, which allows programs to control your node.
server: Enables or disables the JSON-RPC server.
#server=0 # 0 = Disabled, 1 = Enabledrpcbind & rpcport: Define the IP address and port for RPC listening.
#rpcbind=
#rpcport=8332 # Default portrpcuser & rpcpassword: Set the credentials for RPC authentication. Always change the default password!
#rpcuser=alice
#rpcpassword=DONT_USE_THIS_YOU_WILL_GET_ROBBED_8ak1gI25KFTvjovL3gAM967mies3E=rpcclienttimeout: Sets the timeout in seconds for RPC clients.
#rpcclienttimeout=30rpcallowip: Defines an IP whitelist for RPC access.
#rpcallowip=1.2.3.4/24rpcconnect: Sets the default connection address for bitcoin-cli.
#rpcconnect=127.0.0.1Wallet and Transaction Settings
Configure how your node handles wallet operations and transaction fees.
txconfirmtarget: The minimum number of confirmations required for a transaction.
#txconfirmtarget=6 # Default valuepaytxfee: The fee per kilobyte paid for transactions.
#paytxfee=0.000xAdditional Node Settings
Fine-tune your node's performance and resource usage.
keypool: The size of the keypool for pre-generating keys.
#keypool=100prune: Reduces blockchain storage by pruning old blocks. Value is in MB.
#prune=550 # Keeps the last 550MB of blocksUser Interface Options
These settings apply to the Bitcoin Core GUI (Qt) client.
min: Starts the client minimized.
#min=1minimizetotray: Minimizes the client to the system tray instead of the taskbar.
#minimizetotray=1Example Configuration File
Below is a complete, commented example. To use it, uncomment the lines you need and modify the values to suit your environment.
# Network Settings
#testnet=0
#regtest=0
#proxy=127.0.0.1:9050
#bind=
#whitebind=
#addnode=69.164.218.197
#addnode=10.0.0.2:8333
#connect=69.164.218.197
#listen=1
#maxconnections=
# RPC Settings
#server=0
#rpcbind=
#rpcuser=alice
#rpcpassword=DONT_USE_THIS_YOU_WILL_GET_ROBBED_8ak1gI25KFTvjovL3gAM967mies3E=
#rpcclienttimeout=30
#rpcallowip=10.1.1.34/255.255.255.0
#rpcallowip=1.2.3.4/24
#rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96
#rpcport=8332
#rpcconnect=127.0.0.1
# Wallet Settings
#txconfirmtarget=6
#paytxfee=0.000x
# Node Settings
#keypool=100
#prune=550
# UI Settings (Qt client only)
#min=1
#minimizetotray=1Frequently Asked Questions
What is the main purpose of the bitcoin.conf file?
The bitcoin.conf file allows you to customize the behavior of your Bitcoin Core node without using command-line arguments. It's essential for setting up automated services, configuring RPC access for developers, and optimizing node performance for your specific hardware and network environment.
Do I need to create the bitcoin.conf file myself?
Yes, the Bitcoin Core client does not create this file automatically. You must create it in the correct data directory for your operating system. Using the example file from GitHub is a recommended starting point.
Is it safe to expose my RPC interface to the internet?
No, exposing RPC to the public internet is a significant security risk. If you must access RPC remotely, use SSH tunneling or a VPN. Always use the rpcallowip directive to restrict access to specific IP addresses and set a very strong rpcpassword.
What is the difference between 'addnode' and 'connect'?
The addnode command tells your node to actively try to connect to and maintain a connection with a specific peer. The connect command forces your node to only connect to the specified peer, making it useful for private networks but isolating you from the main Bitcoin peer-to-peer network.
How does pruning work in Bitcoin Core?
Pruning allows a node to operate without storing the entire blockchain. A pruned node downloads and validates all blocks but only keeps the most recent ones (e.g., the last 550 MB). This saves disk space while still allowing the node to validate new transactions. 👉 Explore more strategies for node optimization
What happens if I make a mistake in the configuration file?
A syntax error in the file will typically cause the Bitcoin Core client to fail on startup. The client will usually provide an error message indicating the problematic line. Always double-check your syntax, especially ensuring there are no spaces around the = sign and that values are correctly formatted.