Heatmap vs Footprint vs DOM: What Each View Shows

Heatmap vs footprint vs DOM is not a question of taste: the three views are built on three different datasets. The footprint reads executed trades, the liquidity heatmap reads resting depth over time, and the DOM reads the ladder as it stands right now. Here is what each one can establish, what it cannot, and how to decide which view answers the question you are actually asking.

Senzoukria · Learn · Updated September 2026


Traders usually arrive at this comparison after adopting one of the three views and wondering whether the other two would have told them something. They would, but not more of the same thing. The practical consequence is that choosing between them is not a matter of preference: it is asking which dataset contains the answer to your question.

Three views, three datasets

Definition. A footprint chart renders executed trades grouped by price inside a bar; a liquidity heatmap renders resting order-book size at each price over time; a DOM renders the order book at the current instant. Executions, displayed depth over time, displayed depth now — three inputs, three questions.

What each view is built from
ViewInput dataTime dimensionRecords
FootprintTrade price, size and classified aggressor sideHistory, grouped into barsWhat was executed
Liquidity heatmapOrder-book snapshots and updatesHistory, continuousWhat was displayed and waiting
DOMOrder-book snapshot at the current instantNow onlyWhat is displayed right now

Note what that table implies. Neither depth view reads executions from its own dataset, and the footprint never sees an order that did not trade. A heatmap that draws trade bubbles is overlaying a second dataset on top of the first, not deriving them from the book. No single view is a superset of the others, which is why the question “which one is best” has no answer and “which one answers this” does.

What the footprint shows — and what executed volume cannot establish

Definition. A footprint cell is the volume that traded at one price on one side of the spread during one bar: buyers lifting the ask on the right, sellers hitting the bid on the left. Stacked by price, those cells show where the aggression concentrated inside a bar instead of only where the bar opened and closed.

That makes the footprint the right view for questions about effort and result. Did heavy selling actually push price down, or did it trade into a level and stop? Where inside the range did most of the volume change hands? Is delta building in the direction of the move or against it? The mechanics are covered step by step in how to read a footprint chart.

What executed volume cannot establish is anything about orders that never traded. A footprint cannot tell you that a large resting block was sitting just above the high, or that it was cancelled moments before price arrived. It also inherits the limitations of its aggressor classification: trades are assigned to the bid or ask side by a stated rule, and feeds that do not carry an explicit side rely on an inference rule whose edge cases you should know before trusting a delta reading to the contract.

What the liquidity heatmap shows — and why a vanished wall is ambiguous

Definition. A liquidity order-book heatmap colours the resting limit-order size displayed at every price and scrolls it through time, so a large block appears as a bright horizontal band and thin liquidity appears as dark space. It is the passive side of the market: size that has been displayed and has not yet traded. What it is displayed for is not part of the data.

This is the view for questions about where size is waiting. Which levels have been defended for the last twenty minutes? Is the band above price growing or draining as price approaches? Is the zone between here and the next reference thin enough that price travels fast through it? The full reading method is in the liquidity heatmap guide.

The ambiguity is structural, and worth stating plainly: when a band disappears, the image does not say why. Displayed size leaves a level because it traded, because it was cancelled, or because it was modified. An aggregated feed shows the net change, not the event that caused it. Attributing a vanished wall to spoofing, or a refilled one to a single iceberg, is an interpretation added on top of the picture — one that requires matching executions to book updates at the same price and time, and that remains bounded by what the feed actually carries. CME’s explanation of Market by Order and Market by Price is a useful reference for how much detail each type of depth data exposes.

What the DOM shows: an instant, not a history

Definition. A DOM, or depth of market ladder, lists prices vertically with the bid size and ask size currently displayed at each one, refreshed as the book changes. It is a snapshot that keeps replacing itself, and it has no memory.

That instantaneity is a feature, not a shortcoming: the DOM is the view for questions about execution. Where is the spread right now? How much size is in front of me at the price I want? Is the book thinning on my side as I try to get filled? A heatmap redrawn a second late is useless for that; a ladder is not. See how to read the DOM for the ladder anatomy.

Its limitation is the mirror image of the heatmap’s strength. Watch a DOM for ten minutes and you will have no record of what you saw. Footprint vs DOM is therefore not a contest: one keeps history and no book, the other a book and no history.

Heatmap vs footprint vs DOM: one simulated minute in three views

The table below describes a simulated minute — constructed to make the mechanic legible, not recorded from a market. Treat every number in it as illustrative.

Simulated example: the same minute at one price level, seen three ways
ViewWhat it displaysWhat it establishes
FootprintA cell showing heavy sell-side volume at the level, price closing above itAggression met the level and did not carry price through it
HeatmapA bright band at that price, still lit after the executionsDisplayed size remained after trades occurred there
DOMBid size at that price large relative to neighbouring levels, right nowWhere the size sits at this instant, and what is in front of an order

Read together, those three rows are consistent with absorption: aggression arriving, size holding, price failing to progress. Consistent with is not the same as proves. Several participants can produce the same picture, and a single occurrence is an observation, not a tested rule.

Which question belongs to which view

Decision table: question, view and the limit of that view
Your questionView that holds the answerWhat that view cannot settle
Did aggressive volume move price, or stall at a level?FootprintWhether unfilled size was sitting nearby
Where is passive size waiting above and below price?HeatmapWhether it will be honoured or pulled
Has that level been defended for a while, or did it just appear?HeatmapThe reason a band grew or drained
What is in front of my order at this price, right now?DOMAnything about the preceding minutes
Is delta diverging from price across the session?Footprint and cumulative deltaClassification edge cases in the feed
Why did displayed size vanish at that price?Trade records matched to book updatesIntent — no feed carries it

Order flow vs footprint: reading the three together

Definition. Order flow is the family of data — trades, aggressor classification, book depth and the events that change it. The footprint, the heatmap and the DOM are three renderings inside that family, which is why order flow trading is broader than footprint reading rather than a synonym for it.

A routine that keeps the three honest, stated as a sequence:

  1. On the heatmap, mark persistent bands before price reaches them, and write down the time and price.
  2. When price arrives, read the footprint at that price: how much traded, on which side, and whether the bar progressed.
  3. If you are working an order, use the DOM for the spread and the queue, not for the narrative.
  4. Record the counterexamples too: the bands that held with no reaction, and the ones that pulled without a move.

What this routine does not prove: that levels marked this way hold more often than chance, or that any of it is profitable after costs. That question belongs to a written rule tested on later data, not to a view.

Data requirements per view

The three views also differ in what they demand from your data subscription, which is where a combined setup usually breaks.

  • Footprint. Needs trades with size and an aggressor side, or a stated classification rule applied to trades against the prevailing quote. Historical footprints need that record to exist for the period you want to review.
  • Heatmap. Needs order-book updates, and the depth you are entitled to bounds the picture. A feed limited to a few levels cannot draw a band that sits outside them, and missing updates leave gaps that should be shown as gaps, not filled in.
  • DOM. Needs the same depth entitlement, but only in real time; it has no history requirement at all.
  • Entitlements. Depth is a billed entitlement at the venue or the data provider, not something a chart grants you, so read which level yours covers before expecting a full book. Futures connectivity through a provider such as Rithmic also depends on the credentials your broker or prop firm issues you, and what those credentials allow varies by account.

How Senzoukria shows it

Senzoukria is a native Windows desktop application, with macOS and Linux builds in beta. It renders the three views from the same connected feed rather than as separate products: a bid × ask footprint, a liquidity heatmap built from order-book updates, and a DOM ladder. Futures data comes from a Rithmic connection or from Databento for CME, depending on what your account gives you; crypto markets (Binance Spot and Perpetual, Bybit) are supported for analysis, which is a separate matter from order routing.

Gamma exposure is available as a conditional layer: it requires an options data source, and without one there is nothing to compute. Market-data costs remain billed by the venue or vendor, separately from the subscription — an eligible first month at $9, then $29 per month, as listed on the pricing page.

Common mistakes

  • Expecting one view to confirm another. They read different data. A quiet footprint next to a bright band is not a contradiction; it is two facts.
  • Reading a DOM as if it had memory. Size that “was just there” is not evidence unless something recorded it.
  • Treating a vanished wall as intent. Executed, cancelled and modified all look the same on an aggregated picture.
  • Opening all three because they are available. Three panels you glance at will teach you less than one panel you interrogate.
  • Comparing footprints across sources without checking the classification rule. Two tools can disagree on delta and both be internally consistent.

Key takeaway: the footprint records executions, the heatmap records displayed depth over time, and the DOM records the book at this instant. Choose by the question you are asking, state what each view cannot establish, and test any rule you build from them on data you have not already read.

Frequently asked questions

What is the difference between a footprint chart and a heatmap?
A footprint chart is built from executed trades: for each price inside a bar it shows the volume that traded against the bid and against the ask. A liquidity heatmap is built from order-book updates: it paints the resting limit-order size displayed at each price, over time. One is a record of what was done; the other is a record of what was shown and left waiting.
Do I need all three views — footprint, heatmap and DOM?
Not necessarily. Each view answers a different question, so the useful test is which question you are asking. A trader working from executed aggression and delta may never need the ladder; a trader placing orders into a specific price needs the DOM for queue and spread. Adding a view you cannot interpret adds screen area, not information.
Is a DOM the same thing as a heatmap?
No. A DOM shows the order book at one instant, refreshed continuously, with no memory of what was displayed a minute ago. A heatmap keeps that history and draws it as a time axis. A DOM heatmap view is simply the same depth data rendered with time instead of only the current snapshot.
Order flow vs footprint — are they the same?
No. Order flow is the family of data: trades, aggressor classification, order-book depth and the events that change it. A footprint chart is one rendering inside that family, the one that arranges executed volume by price inside a bar. A heatmap and a DOM are other renderings of the same family, reading depth rather than executions.
Why does a wall disappearing on the heatmap not prove spoofing?
Displayed size can leave a price level because it was executed, because it was cancelled, or because it was modified — and an aggregated feed shows the net result, not the reason. Establishing which happened requires matching trade records to book updates at the same price and time, and even then order-level data has limits. The picture alone is ambiguous.
Are market-data fees included with charting software?
Usually not. Exchange and vendor market-data fees, including depth entitlements, are billed by the venue or the data provider and are separate from any software licence. Check which depth level your entitlement covers before assuming a heatmap or a DOM will show the full book.

Keep reading