D3 · Earthquakes

Fifty years of earthquakes under Indonesia

Earthquakes since 1973 on an interactive globe, with cross-sections showing their depths beneath Indonesia.

The USGS catalogue records 55,299 earthquakes of magnitude 4.5 or greater around Indonesia since 1973. Plotting their depths helps show where oceanic plates descend beneath the islands.

The globe includes those events plus magnitude 6 and greater earthquakes elsewhere for context. Drag to rotate it. Colour shows depth, from pale yellow near the surface to violet below 500 km.

Fig. 01 · Earthquakes since 1973, coloured by depth (USGS ComCat)
Bars: quakes per quarter of M4.5+ in the Indonesian region. Red rules: M8 and above. Inside the region the globe shows M4.5+; elsewhere, M6+.

Reading the globe

Around Java, shallow earthquakes follow the trench to the south. Further north, events become progressively deeper, reaching 500–650 km beneath the Java Sea. Together they trace the descending oceanic plate. Kalimantan, further from the plate boundaries, has far fewer events.

The timeline shows a large increase after the 2004 Aceh earthquake and the 2005 Nias earthquake. The catalogue records 3,274 regional events in 2005, many of them aftershocks. Select Last two years only and move through 2004–2007 to follow the sequence along Sumatra.

Some large earthquakes occur away from the trench. The April 2012 Wharton Basin events (M8.6 and M8.2) ruptured within the Indian Ocean plate west of Sumatra. The 2018 Palu earthquake (M7.5) occurred on a strike-slip fault in Sulawesi.

Depth in cross-section

Each box below selects earthquakes within a corridor 220 km wide. The section plots them by distance along the corridor and depth. Both axes use the same scale.

Fig. 02 · The same quakes, seen from the side: four slices through the subduction zone
Slice

The Java section shows earthquakes deepening beneath the island, thinning out near 250 km and reappearing between 500 and 650 km. The gap reflects a less seismically active part of the slab.

The Sumatra section is shallower, with few events below about 300 km. The large event at 81 km is the 2009 Padang earthquake (M7.6), within the descending slab.

The Flores section includes the 1996 Flores Sea earthquake (M7.9) at 587 km. In the Molucca Sea, two slabs dip in opposite directions, towards Sulawesi and Halmahera, forming an inverted V in the earthquake distribution.

Data limits

Many shallow depths are defaults assigned when the location is poorly constrained. This dataset has 10,021 events at exactly 33 km, 7,678 at 10 km and 3,214 at 35 km. Those repeated values produce horizontal rows in the sections. The deepest events are generally better constrained.

Detection has improved as monitoring networks expanded. A gradual rise in counts can therefore reflect better coverage as well as changes in earthquake activity.

The regional catalogue includes M4.5 and above within 90°–145°E, 15°S–12°N; elsewhere the threshold is M6. Counts across that boundary are not directly comparable. Circle sizes indicate magnitude on a compressed scale, rather than representing energy proportionally.

How it is drawn

The globe uses d3.geoOrthographic on two canvases. One holds land and plate boundaries; the other redraws earthquakes as the timeline changes. A coarser coastline is used while dragging.

Earthquake coordinates are stored as unit vectors in typed arrays and rotated directly for each frame. Dots are grouped by colour and opacity to reduce draw calls. Quaternion rotation keeps the grabbed point beneath the pointer as the globe turns.

The sections calculate each event’s distance along and across a great-circle path. Coastlines and plate boundaries supply the land bars and trench markers.

Data

FileSourceNotes
quakes.jsonUSGS ComCat, FDSN event service61,526 events, 1973 to September 2026, packed as integer columns (about 420 kB gzipped)
land.jsonNatural Earth 1:50m via world-atlas1:110m copy used while dragging
plates.jsonBird (2003), PB2002Plate boundaries, coordinates rounded to 0.01°

The whole pipeline is one keyless script, node scripts/earthquakes/build.mjs, which caches the raw downloads so that re-runs are offline.