Skip to content

ORTEX Charts

The charting engine behind ORTEX, licensed for your product

A full financial chart in 77 KB gzip: toolbar, indicators, drawings, order flow and live data. It paints 100,000 bars in 32 ms, works on a phone, and carries no requirement to leave your application open to the public.

77 KB

Full chart, gzip

One file, tree-shakeable

32 ms

First paint, 100k bars

Lightweight Charts: 388 ms

1.8 ms

Live tick, full redraw

With two overlays and two studies

4.8 KB

Sparkline build

For tables and cards

Stock chart@ortex-charts/financial
Loading stock chart
Ten years of IBM daily bars with a moving average pair, volume, earnings markers and a crosshair readout.

Why teams move

Four reasons a chart gets replaced

It is too heavy

Five megabytes of chart across 154 files is a second of blocked main thread on a mid-range phone. ORTEX Charts is one file: 77 KB with everything, 56 KB for candles and volume, 37 KB for a line chart, 4.8 KB for a sparkline. Nothing is loaded that the page does not use.

It is slow with real history

Typed-array columns and visible-range work mean a decade of minute bars opens as quickly as a month of daily ones. Run the benchmark below in your own browser rather than taking the number on trust.

The license does not fit

TradingView Advanced Charts is free only while the chart carries their mark and the page stays public and outside a paywall. Most fintech products are neither. ORTEX Charts is licensed for private, authenticated and paywalled applications, and the mark comes off with a white-label license.

The features stop where the work starts

Footprint bars, exact volume profile, market profile, cumulative delta, bar replay with higher-timeframe followers and session-anchored intraday bars are in the box. Several of them are the most requested missing features on the incumbents.

Bundle size and start-up cost against the alternatives
What the page loadsJavaScript, gzipFilesWhat that includes
ORTEX Charts, a line chart37 KB1Engine, scales, crosshair, one series
ORTEX Charts, candles and volume56 KB1Plus legend, price lines, crosshair readout
ORTEX Charts, the full chart77 KB1Toolbar, indicators, drawings, order flow
TradingView Lightweight Charts 555 KB1Series only: no toolbar, drawings or indicators
Highcharts Stock 11, with its stock tools194 KB9The set their own Stock Tools demo loads
TradingView Advanced Charts4.8 MB154The licensed drop, uncompressed on disk
ChartIQ4.4 MB65Transferred by their public demo

Measured on 2026-09-04 with one method: our entry points bundled and gzipped, their published production files gzipped identically, file by file. A chart that draws a line pays for a line, which is why the first row is what it is. At 100,000 bars ORTEX Charts paints in 32 ms against 388 ms for Lightweight Charts. The full comparison, with the file lists, the features and the licensing.

In the box

A terminal chart, not a plotting widget

The same code powers the ORTEX terminal, so the features are the ones a trading product actually needs rather than the ones that demonstrate well.

Candles that behave

Candlesticks, bars, line, area, baseline, histogram, Heikin-Ashi and hollow candles, with log, percentage and indexed scales, and unlimited resizable panes.

Indicators you can extend

Eighteen built-in studies, and registerIndicator to add your own in JavaScript. Your indicator appears in the menu, the legend and the saved layout like a built-in one.

Drawings with intent

Trend lines, rays, channels, Fibonacci levels, rectangles, notes and measures, with a magnet, undo and redo, and JSON in and out so the host owns storage.

Order flow, properly

Footprint bars, volume profile, market profile, delta, cumulative delta and relative volume, computed from aggressor volumes rather than guessed from the close.

Events on the timeline

Earnings, dividends, filings, news and your own annotations as badges, lanes, callouts, lines and ranges, with tooltips and click events.

Replay and alerts

Step the history forward from any bar with higher-timeframe charts following, link charts together, and drag price alerts that report crossings to your application.

The full shell@ortex-charts/ui
Loading the full shell
The whole terminal chart: symbol box, resolutions, series types, indicator and drawing menus, screenshot and full screen.

Order flow

The features the incumbents keep saying no to

Footprint bars with imbalance marking, exact volume profile from real traded volume, market profile letters, and delta and cumulative delta computed from aggressor volumes. When the host supplies bid and ask volume, the numbers are exact rather than approximated from the close.

FootprintVolume profileMarket profileDeltaCumulative deltaRelative volume
Footprint bars@ortex-charts/financial
Loading footprint bars
Bid and ask volume at every price inside the bar, with imbalances marked and a delta strip underneath.

Customization

Your colors, your buttons, your mark

Every color the engine paints comes from a token, so a theme change is a repaint rather than a rebuild. The toolbar is a list of switches plus your own actions. With a white-label license the ORTEX mark comes off, or is replaced by yours.

Theme tokens, live@ortex-charts/financial
Loading theme tokens, live
Change the palette, grid, fonts and candle colors and watch the chart repaint without being recreated.
Theme tokens
chart.setTheme({
    name: "brand",
    background: "#0C1519",
    grid: "#16232A",
    text: "#D7E0E5",
    up: "#22C08A",
    down: "#EF4E5A",
    fontFamily: "Inter, system-ui, sans-serif",
    palette: ["#7C5CE6", "#F5A524", "#4C8DFF"],
});

Small charts

One library from the sparkline up

The same family covers the 4.8 KB sparkline in a table cell and the full chart on the stock page. A screening table with 200 rows draws every sparkline on one render frame, so a live update costs one paint rather than 200.

Sparkline table@ortex-charts/lite
Loading sparkline table
Twelve rows of line, area, column and win-loss sparklines updating together on one render frame.

Your data

It draws what you give it, and asks for nothing else

Pass an array, implement a datafeed, connect a WebSocket, or describe your existing JSON with an adapter and let the library map it. Host series go on their own panes with their own scales and formatting. The chart never fetches anything by itself and never calls home.

Short interest on the chart@ortex-charts/financial
Loading short interest on the chart
ORTEX Estimated Short Interest and Days to Cover for IBM, plotted from a JSON feed on their own panes.
100,000 bars, timed here@ortex-charts/financial
Loading 100,000 bars, timed here
Create the chart, set the data, wait for the first paint, and print the number your own browser just produced.

Performance

Do not take the number on trust

The benchmark on the left runs in your browser, on your machine, right now: create the chart, set 100,000 bars, wait for the first painted frame. The same test against TradingView Lightweight Charts is in the repository, and the method is written down.

Pricing

Priced for the tier people actually want

Team is per developer. White-label is per product, not per seat, because the feature being bought is the absence of somebody else's logo. OEM includes the source.

Community

Free

Every package, ORTEX mark on, evaluation and non-commercial use.

Read the terms

Team

$59

per developer, per month

Commercial use in your own products, including software as a service.

Buy now

White-label

$299

per product, per month

The mark comes off. Up to 10 developers and 25 domains.

Buy now

OEM

From $15,000

per year

Redistribution rights, a source mirror, a named engineer.

Talk to us

Start

Ten lines to a chart your users will recognize

Install from the private registry, or drop in the hosted kit and skip the build step entirely. Both paths use the same license key and the same API.

index.ts
import { createFinancialChart } from "@ortex-charts/financial";

const chart = createFinancialChart(document.getElementById("chart"), {
    theme: "dark",
    timeZone: "America/New_York",
    resolution: "1D",
    data: bars,
});

chart.addIndicator("ema", { length: 21 });
chart.setMarkers(earnings);
chart.live(myWebSocketSource);