The Twitch DJ Network Map is made for a computer screen.
On a phone the controls are too small to use, and pinching or dragging will not move the map.
The Twitch DJ Network Map is for entertainment purposes only.
It is built from a random sampling of publicly available Twitch data by statistical methods, and the accuracy of such methods cannot be guaranteed. The map changes over time as new data is acquired.
Every pair of DJs on the map carries a single number: how strongly they are connected.
That number is built from signals of connection that Twitch makes public — raids between the two channels, shoutouts, mod and VIP status held in each other’s channels, shelf endorsements, shared teams, and other such publicly available Twitch data. Each kind counts for a different amount, and recent activity counts for more than old.
Each kind of evidence is counted separately, then combined into one number per pair.
Recency. A single observation is not worth the same forever. Anything inside a recent window counts in full; past that it decays by half over a fixed period:
weight(t) = 1for t ≤ fweight(t) = 2^−(t − f)/hfor t > fwhere t is how long ago it happened, f the window where nothing decays, and h the half-life. A raid last week and a raid two years ago are not the same evidence.
Combination. The decayed counts for each kind are scaled by that kind’s coefficient and summed into a running total T.
Corroboration. A pair confirmed by several different kinds of evidence is treated as better established than a pair with the same total from one kind alone. The final score applies a bonus for that, then compresses the result:
w = √( T · (1 + K(n − 1)) )where n is how many distinct kinds of evidence the pair carries, and K how much each additional kind is worth. The square root keeps a few very heavy pairs from dominating everything else.
That single w is what the map is built from.
Every position is computed. Three stages, each one minimising or maximising a quantity.
The network is partitioned to maximise weighted modularity:
Q = (1 / 2m) · Σⁱⱼ[ wⁱⱼ − γ · (sⁱ sⱼ / 2m) ] · δ(cⁱ, cⱼ)where wⁱⱼ is the connection strength between two DJs, sⁱ is the total strength on DJ i, m is the total over the whole map, and δ is 1 when both sit in the same community and 0 otherwise. The bracket is observed connection minus what chance alone would predict — so a community only survives if its members are connected to each other more than their overall activity explains. γ sets how fine the division is. These become the regions, and at a coarser γ, the colours.
A force simulation over the DJs, with an ideal separation k = √(area / n). Every pair repels; every connected pair also attracts:
f_repulsive= − k² / df_attractive= wⁱⱼ · d² / kPositions are stepped along the sum of those forces under a decreasing temperature, until movement dies out. Run once to place the regions relative to each other, then again inside each region.
Network distance dⁱⱼ is the shortest weighted path between two DJs — strong connections being short. The pass then minimises
σ(X) = Σⁱ<ⱼ Wⁱⱼ · ( ‖xⁱ − xⱼ‖ − dⁱⱼ )²Wⁱⱼ = dⁱⱼ⁻²— the squared error between drawn distance and network distance, weighted so near pairs matter most. Solved iteratively, each step guaranteed not to increase σ.