Volume Profile

Animated volume by price, with point of control and value area highlights.

Preview

BTC / USD

Volume by price · Demo data

Total volume
2,271 BTC
Point of control
$65,050
Value area · 70% target
$64,700 – $65,400
64.2% of volume
BTC volume profile data
Price rangeVolume (BTC)ShareLevel
$64,000 to $64,100180.8%Outside value area
$64,100 to $64,200271.2%Outside value area
$64,200 to $64,300361.6%Outside value area
$64,300 to $64,400522.3%Outside value area
$64,400 to $64,500703.1%Outside value area
$64,500 to $64,600964.2%Outside value area
$64,600 to $64,7001355.9%Outside value area
$64,700 to $64,8001727.6%Inside value area
$64,800 to $64,9002059.0%Inside value area
$64,900 to $65,00024110.6%Inside value area
$65,000 to $65,10027812.2%Point of control
$65,100 to $65,2002259.9%Inside value area
$65,200 to $65,3001928.5%Inside value area
$65,300 to $65,4001466.4%Inside value area
$65,400 to $65,5001084.8%Outside value area
$65,500 to $65,600793.5%Outside value area
$65,600 to $65,700562.5%Outside value area
$65,700 to $65,800421.8%Outside value area
$65,800 to $65,900311.4%Outside value area
$65,900 to $66,000221.0%Outside value area
$66,000 to $66,100160.7%Outside value area
$66,100 to $66,200110.5%Outside value area
$66,200 to $66,30080.4%Outside value area
$66,300 to $66,40050.2%Outside value area

Install

Add it with the shadcn CLI, or copy the source manually.

$ bunx --bun shadcn add @beui/volume-profile

API Reference

VolumeProfile

data
readonly VolumeProfileBin[]

Already-aggregated executed volume. Sorted by price; unequal bins and gaps are supported.

—
label?
string
—
unit?
string
—
formatPrice?
((price: number) => string)
—
formatVolume?
((volume: number) => string)
—
valueArea?
number | false

Target fraction, default 0.7. Whole bins may cover less; the POC is always included. Set false to hide the value area. Equal-volume POCs favor the lower price.

—
color?
string
—
pocColor?
string
—
activeId?
string | null
—
defaultActiveId?
string | null
—
onActiveChange?
((id: string | null) => void)
—
className?
string
—

VolumeProfilePlot

className?
string
—
barClassName?
string
—
showAxes?
boolean

Plot height is set by className; default 20rem.

true

VolumeProfileSummary

className?
string
—

VolumeProfileTooltip

className?
string
—
side?
"bottom" | "left" | "right" | "top"
top

Updated