Deribit BTC options: where its trading screen loses time, and what to fix

Measured from the Netherlands in a logged-in Chrome, October 2026.

In short. On a warm reload the screen is trade-ready after 2.9 s (median of 5 loads), 1 of 2 BTC options screens, rank 1 is the only one the measurements leave open; after an uncached reload 3.0 s. The largest bottleneck: Live data arrives 2.5 s before the first price or book shows First change to try: Find what the app waits for after the first snapshot arrives (other requests, the framework mounting, a wallet or config step) and render price and book from the first snapshot.

Three measurements appear on this page, and their times differ. Rank and results come from the campaign's timed reloads. The diagnostic capture and the recorded reload are single loads made with recording switched on, which slows the page: read them for the order of events and the gaps, not for totals.

Resultscampaign: 5 warm and 5 uncached reloads

Warm reloadmedian 2.9 s, range 2.8 s–2.9 s; loads: 2.9 s, 2.9 s, 2.8 s, 2.9 s, 2.9 s
Uncached reloadmedian 3.0 s, range 2.8 s–3.1 s; loads: 3.1 s, 3.0 s, 2.8 s, 2.9 s, 3.0 s
Standing1 of 2 by median; rank 1 is the only one the measurements leave open. The fastest in its group. The possible rank is the range the measurements leave open: it counts only the exchanges that clearly beat this one and those it clearly beats. Exchanges whose ranges overlap cannot be told apart.
Loads ready5 of 5 warm, 5 of 5 uncached
Notesloaded behind a pop-up that appears on every load

Where the time goescampaign medians, warm reload

Panels in the order they first showed real, usable data on a warm reload. The coloured part of each row is the time that panel added after the one before it. The last row is trade-ready: every panel is ready and the page has stopped moving.

0 s1 s2 s
Price2.6 s
Options chain2.6 s +0.0 s
Trade-ready2.9 s +0.3 s settling
HostRoleCDN edge seenConnectResponse
www.deribit.compageCloudflare Amsterdam13 ms23 ms
deribit.commarket dataCloudflare Amsterdam13 ms24 ms

Median of up to 10 attempts from the test machine. Response time includes the server's own time, so it is not a distance.

What happened, in order

Recorded warm reload, 3 October

One warm reload recorded with Chrome's performance trace. Recording slows the page, so read the order and the gaps, not the total.

WhenWhat
0.0 sHTML arrives
0.5 sFirst frame sent on a live feed
0.6 sFirst frame received on a live feed
3.0 sPrice ready
3.0 sOptions chain ready
3.1 sTrade-ready

92 requests before trade-ready; 10 long main-thread tasks (over 50 ms) before trade-ready, longest 231 ms; 53 script requests before the first panel; 0 requests over HTTP/1.1.

Request waterfallrecorded warm reload 3 October

61 of the 92 requests (the page itself, the longest and the largest) started before trade-ready in the warm reload recorded on 3 October, in start order. The outlined part of a bar is waiting for the server; the solid part is downloading. Rows are numbered so a request can be pointed to. The numbers on the right are the size received and the total time. Vertical lines mark when a panel had data in this capture.

PageData requestScriptStylesheetwaiting for the serverdownloading

0 s0 s1 s1 s2 s2 s3 s3 s1www.deribit.com263 B18 ms2host masked2 ms3host masked1 ms4www.deribit.com0 ms5host masked37 ms6host masked19 ms7www.deribit.com18 ms8www.deribit.com34 ms9www.deribit.com18 ms10www.deribit.com34 ms11www.deribit.com18 ms12www.deribit.com34 ms13www.deribit.com33 ms14www.deribit.com22 ms15www.deribit.com59 ms16www.deribit.com32 ms17www.deribit.com47 ms18www.deribit.com33 ms19www.deribit.com34 ms20www.deribit.com34 ms21www.deribit.com34 ms22www.deribit.com34 ms23www.deribit.com34 ms24www.deribit.com34 ms25www.deribit.com35 ms26www.deribit.com35 ms27www.deribit.com52 ms28www.deribit.com37 ms29www.deribit.com37 ms30www.deribit.com37 ms31www.deribit.com36 ms32www.deribit.com36 ms33www.deribit.com42 ms34www.deribit.com39 ms35host masked23 ms36host masked5 ms37host masked20 B22 ms38www.deribit.com3 ms39www.deribit.com7 ms40www.deribit.com8 ms41www.deribit.com6 ms42www.deribit.com6 ms43www.deribit.com6 ms44www.deribit.com9 ms45www.deribit.com11 ms46www.deribit.com10 ms47www.deribit.com8 ms48www.deribit.com8 ms49www.deribit.com8 ms50www.deribit.com268 B20 ms51host masked5 ms52host masked2 ms53www.deribit.com113 kB34 ms54www.deribit.com113 kB121 ms55host masked1 ms56www.deribit.com55 ms57host masked2 ms58host masked2 ms59www.deribit.com1 ms60www.deribit.com1 ms61host masked1 msprice 3.0 s
Download this figure as an image:

Bottlenecks and fixes, largest firstrecorded warm reload 3 October

1Live data arrives 2.5 s before the first price or book showsgrade C
Evidence
First message received on the live feed at 0.6 s; the first price or book appears at 3.0 s. Whether that first message carries this market's data is not verified.
Holds back
Not established: the captures do not show which panel waits for this.
Fix
Find what the app waits for after the first snapshot arrives (other requests, the framework mounting, a wallet or config step) and render price and book from the first snapshot.
Verify
DevTools → Network → filter "WS", open the socket, Messages tab and DevTools → Performance, record a reload, open the Main track: compare the first snapshot message with the first paint of the price.
2At least 1159 ms of main-thread blocking before the first panelgrade B
Evidence
10 long tasks (over 50 ms) before trade-ready, longest 231 ms; 53 script files were requested before the first panel showed. Counts cover the 10 longest tasks only.
Holds back
Not established: the captures do not show which panel waits for this.
Fix
Split the startup bundle so the trading screen's first panels do not wait for code they do not use (wallet, settings, other routes); break up the longest tasks.
Verify
DevTools → Performance, record a reload, open the Main track: long tasks show a red corner; the Bottom-up tab names the scripts.

Grade B: the capture shows the problem directly. Grade C: the order of events in the capture points to it; the dependency is for the team to confirm. The order is our judgement of each finding's effect on trade-ready, largest first; it is not sorted by gap. A gap is the time between two observed events or the time one piece of work takes; gaps overlap and do not add up. Where a finding is about size or count and no time was measured, the row says what was measured instead. Holds back names the panel the finding delays. Nothing here is graded higher, because no fix was confirmed by changing a page and measuring again.

How this was measured

Timings: 5 warm and 5 uncached reloads in a seeded random order across all exchanges, each judged against a checklist frozen for this page before the campaign; trade-ready is the first moment every checklist panel shows real data, nothing is still loading, and the layout holds still for 0.5 s. The findings on this page come from separate recorded loads, which are never part of the timings. Full method.