Geth Ethereum: How to Change Account Password and Send ETH via Console
Back in 2016, early desktop Ethereum GUIs like Mist and Ethereum Wallet frequently struggled with stuck transfers: you would hit Send, watch the transaction appear as unconfirmed, fail to find its hash on any block explorer, and see it silently vanish from your history a couple of hours later.
A typical Ethereum Wallet 0.8.1 hiccup: balance shows up, but transfers fail to broadcast
Your coins were completely safe, of course – the graphical wrapper simply could not push the transaction onto the network. In those days, dropping down to the geth command-line console let you both change your keystore password and broadcast an ETH transfer directly.
Important Update: What Changed in Modern Geth Releases
The interactive console examples further below apply to classic 2016-era geth builds. Starting with Geth v1.13+, the entire personal RPC/console namespace (including personal.unlockAccount) was removed for security reasons.
If you need to manage or spend from an old JSON keystore file today, there are two far simpler options:
- For one-off transfers: import your JSON
keystorefile and old password directly into MetaMask or Rabby – no full-node sync required. - For automated node setups: use the external Clef signer tool, which replaced Geth’s built-in
personalmodule.
Opening geth and Changing Your Account Password
To work with a legacy local keystore via CLI, first locate the folder containing geth.exe (bundled Ethereum Wallet installs often kept it at a path like d:\Data-local\Ethereum\resources\node\geth) and open Windows Command Prompt (cmd).
Switching to the geth.exe directory – use cd /D when changing drive letters
To update the password protecting your keystore file, start by listing local accounts:
geth account list
Geth returns lines such as Account #0: {48a83b45d6928e7774ba6f2398456bef924d9b51}. Copy the hex address inside the braces and pass it to the update command:
geth account update 48a83b45d6928e7774ba6f2398456bef924d9b51
Typed characters stay hidden during password prompts in cmd – this is normal security behavior
You will be prompted for your current password once, then your new password twice. Don’t get tripped up if nothing appears on screen while typing – not even asterisks show up in cmd, even though keystrokes are being read.
Legacy Method: Sending ETH in Pre-v1.13 geth console
On older Geth versions, the interactive JavaScript console launched like this:
geth console
To inspect the balance of your primary coinbase account:
web3.fromWei(eth.getBalance(eth.coinbase))
Before sending a transfer, the account had to be unlocked (skip passing the password inline so it never ends up in command history):
personal.unlockAccount(eth.coinbase)
Once you entered the password, the console printed true. An optional unlock timeout in seconds could also be specified (for example, personal.unlockAccount(eth.coinbase, "password", 300)). Sending ETH looked like this:
eth.sendTransaction({from:eth.coinbase, to:'0x878a05b899407af6890f79235af1815bcf47d39f', value: web3.toWei(2.50, "ether")})
The console immediately returned a transaction hash so you could track confirmation directly on a block explorer instead of guessing whether the GUI wallet froze. Just be sure to back up your keystore folder in a couple of safe places before changing passwords or importing keys into any new wallet.