Skip to content

xdkoc/eth-format

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eth-format

Zero-dependency TypeScript utilities for formatting Ethereum values — ETH, Gwei, addresses and USD.

npm install @xdkoc/eth-format

Why

Formatting wei to ETH, shortening addresses for display, converting gas prices — every Ethereum app needs this. This library handles it without pulling in ethers.js or viem for just a few helper functions.


Functions

formatEther(wei)

Converts wei to a human-readable ETH string.

import { formatEther } from "@xdkoc/eth-format";

formatEther(1_000_000_000_000_000_000n)  // "1 ETH"
formatEther(1_500_000_000_000_000_000n)  // "1.5 ETH"
formatEther(1_100_000_000_000_000_000n)  // "1.1 ETH"
formatEther(0n)                          // "0 ETH"

// Control decimal places (default: 4)
formatEther(1_123_456_789_000_000_000n, 2)  // "1.12 ETH"

parseEther(eth)

Converts an ETH string to wei as BigInt.

import { parseEther } from "@xdkoc/eth-format";

parseEther("1")    // 1000000000000000000n
parseEther("1.5")  // 1500000000000000000n
parseEther("0.01") // 10000000000000000n

formatGwei(wei)

Converts wei to a human-readable Gwei string. Useful for displaying gas prices.

import { formatGwei } from "@xdkoc/eth-format";

formatGwei(21_000_000_000n)   // "21 Gwei"
formatGwei(1_500_000_000n)    // "1.5 Gwei"
formatGwei(100_000_000_000n)  // "100 Gwei"

weiToGwei(wei)

Converts wei to Gwei as BigInt.

import { weiToGwei } from "@xdkoc/eth-format";

weiToGwei(21_000_000_000n)  // 21n

shortenAddress(address, chars?)

Shortens an Ethereum address for display. Default: 4 characters on each side.

import { shortenAddress } from "@xdkoc/eth-format";

shortenAddress("0x742d35cc6634c0532925a3b8d4c9b7b5a9c1d2e3")     // "0x742d...d2e3"
shortenAddress("0x742d35cc6634c0532925a3b8d4c9b7b5a9c1d2e3", 6)  // "0x742d35...c1d2e3"

isValidAddress(address)

Checks whether a string is a valid Ethereum address (0x prefix + 40 hex characters).

import { isValidAddress } from "@xdkoc/eth-format";

isValidAddress("0x742d35cc6634c0532925a3b8d4c9b7b5a9c1d2e3")  // true
isValidAddress("0x742d35cc")                                   // false
isValidAddress("742d35cc6634c0532925a3b8d4c9b7b5a9c1d2e3")    // false (no 0x)

normalizeAddress(address)

Lowercases an Ethereum address for consistent storage and comparison.

import { normalizeAddress } from "@xdkoc/eth-format";

normalizeAddress("0x742D35CC6634C0532925A3B8D4C9B7B5A9C1D2E3")
// "0x742d35cc6634c0532925a3b8d4c9b7b5a9c1d2e3"

formatUsd(wei, ethPriceUsd)

Converts a wei amount to USD based on the current ETH price.

import { formatUsd } from "@xdkoc/eth-format";

const oneEth = 1_000_000_000_000_000_000n;
formatUsd(oneEth, 3000)  // "$3,000.00"
formatUsd(oneEth, 3241)  // "$3,241.00"

const halfEth = 500_000_000_000_000_000n;
formatUsd(halfEth, 2000) // "$1,000.00"

Full example

import { formatEther, formatGwei, formatUsd, shortenAddress } from "@xdkoc/eth-format";

const tx = {
  from: "0x742d35cc6634c0532925a3b8d4c9b7b5a9c1d2e3",
  value: 2_500_000_000_000_000_000n,  // 2.5 ETH in wei
  gasPrice: 21_000_000_000n,           // 21 Gwei in wei
};

console.log(`From:      ${shortenAddress(tx.from)}`);
// From:      0x742d...d2e3

console.log(`Value:     ${formatEther(tx.value)}`);
// Value:     2.5 ETH

console.log(`Value:     ${formatUsd(tx.value, 3000)}`);
// Value:     $7,500.00

console.log(`Gas price: ${formatGwei(tx.gasPrice)}`);
// Gas price: 21 Gwei

API

Function Signature Returns
formatEther (wei: bigint, decimals?: number) string
parseEther (eth: string) bigint
formatGwei (wei: bigint) string
weiToGwei (wei: bigint) bigint
shortenAddress (address: string, chars?: number) string
isValidAddress (address: string) boolean
normalizeAddress (address: string) string
formatUsd (wei: bigint, ethPriceUsd: number) string

Zero dependencies

No ethers.js, no viem, no web3.js. Pure TypeScript with no runtime dependencies.


License

MIT

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors