Skip to main content
glnc

Field notes

Check an Ethereum wallet balance from the terminal in 60 seconds

by Arya Rahimi · · 7 min read

To check an Ethereum wallet balance from the terminal, install glnc and run glnc balance vitalik.eth --chain eth. That is the whole path: one command, no browser tab, no Etherscan account, no API key. The rest of this note shows the useful edges around that command: ENS names, JSON for jq, watch mode, and the caveats you should know before you put the output in a script.

The one-command version

If you already have glnc installed, this is the command you came for:

glnc balance vitalik.eth --chain eth
⬢ ETHEREUM (59 tokens)
Asset Amount USD Value
ETH 229.579681 $539,891.08
USDC 120,133.627066 $120,106.12
Total: $663,208.68+

The numbers above are example output, not a promise about a live wallet. Balances, token lists, and prices move. The important part is the shape: native ETH, known ERC-20 balances, and a USD total in a terminal table you can read without opening an explorer.

The --chain eth flag keeps the query scoped to Ethereum mainnet. Leave it off when you want the same EVM address checked across every supported EVM chain.

Install glnc

On macOS or Linux with Homebrew, install the prebuilt binary:

brew install aryarahimi1/glnc/glnc
==> Installing glnc from aryarahimi1/glnc
🍺 glnc was successfully installed

Or use the install script after reading it first:

curl -fsSL https://glnc.dev/install.sh -o install.sh && less install.sh && bash install.sh
installed glnc to ~/.local/bin/glnc

There is no Node or Bun requirement when you install the binary. If you want to inspect the source instead, the repo is MIT licensed and lives on GitHub.

Use ENS or a raw address

ENS resolution is built in, so you do not need to copy the resolved address out of a browser first:

glnc balance vitalik.eth --chain eth
resolved vitalik.eth → 0xd8dA…6045
⬢ ETHEREUM $663,208.68+

Raw addresses work the same way:

glnc balance 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 --chain eth
⬢ ETHEREUM (59 tokens)
ETH 229.579681 $539,891.08

For a single Ethereum balance check, that is usually enough. If you are doing treasury work, incident response, or a one-off audit, the shell starts to matter when you ask the next question.

Ask the next question with jq

Browser explorers are good at showing a page. Shell tools are good at answering a narrower question. Add --json and glnc writes a stable envelope to stdout:

glnc balance vitalik.eth --chain eth --json | jq '.data.wallets[0].grandTotalUsd'
663208.68

The JSON mode is the reason this is more than a prettier balance command. You can redirect stderr, keep stdout data-only, and feed the result into whatever already runs in your terminal:

glnc balance vitalik.eth --chain eth --json 2>/tmp/glnc.log | jq '{ok, totalUsd: .data.wallets[0].grandTotalUsd, partial: .meta.partial}'
{
"ok": true,
"totalUsd": 663208.68,
"partial": false
}

That partial field is boring until it saves you. It flips when RPC, pricing, or token-list data degraded. If your script is going to alert, page, or write to a database, inspect meta instead of pretending every public endpoint is always fresh.

Watch a wallet without refreshing a tab

For live monitoring, use --watch. The terminal switches to an alternate screen, updates in place, and restores your scrollback on Ctrl+C:

glnc balance vitalik.eth --chain eth --watch --interval 30
⛓ WATCH vitalik.eth every 30s poll 02
ETH 229.59 (+0.01) $539,914.40
USDC 119,900 (−233.6) $119,876.12

The same mode can emit NDJSON when you add --json, one envelope per poll. That makes it easy to stream a wallet into a local file, a small script, or a webhook workflow without screen-scraping a website.

Know what you are measuring

A balance command looks simple, but the number on screen is assembled from several moving parts. glnc queries public RPC endpoints, discovers known ERC-20 tokens from the Uniswap token list, prices assets, hides low-value dust by default, and reports unpriced tokens separately.

That means two tools can disagree without either one being malicious. One may include a token the other does not know about. One may have a fresher price. One RPC endpoint may be a block behind. If you need to debug that difference, run the command with --json and inspect .meta.sources.

glnc balance vitalik.eth --chain eth --json | jq '.meta.sources.rpc.providers'
{
"eth": "https://..."
}

Chain height lives on the chain payload itself, for example .data.wallets[0].chains[0].blockNumber. If you need stronger RPC agreement, use --rpc-quorum=majority or --rpc-quorum=all. The default is sequential fallback, which is kinder to free public endpoints and fast enough for casual checks.

When the browser still wins

This is not a claim that a terminal should replace every explorer view. Etherscan is still useful for contract pages, labels, comments, token holder views, and the long tail of web-only context. glnc is for the narrower workflow where you want a wallet balance, a transaction decode, or a gas snapshot in the same place you already use jq,grep, and shell history.

In other words: use the browser when you need the web. Use the terminal when you already know the question.

FAQ

How do I check an Ethereum wallet balance from the terminal? Install glnc, then run glnc balance <address-or-ens> --chain eth. Add --json when you want machine-readable output.

Does glnc need an Etherscan API key to check a balance? No. Balance checks use public RPC endpoints and run from your machine. The optional Etherscan V2 API key is only relevant for history pagination, not for checking a wallet balance.

Can I check ENS names from the command line? Yes. glnc resolves ENS names before querying EVM chains, so commands like glnc balance vitalik.eth --chain eth work without manually copying the resolved address.

Why might a terminal balance differ from a block explorer? Token discovery, price sources, dust filters, and RPC freshness vary by tool. glnc reports source and partial-result metadata in JSON output so scripts can inspect degraded or stale results instead of guessing.

Next, read the full balance command reference or the JSON envelope reference.