How we know
Every dot on the map comes from a report in the Iranian press. This page explains where those reports come from, how we turned them into data, what we removed, and what the data can and cannot tell you.
Where the reports come from
We collected the posts of 7 Persian-language Telegram channels of Iranian news outlets, among them the state news agency IRNA, Fars News Agency and ISNA, over the 40 days the data cover, the last of them 8 April 2026. In all, 17,754 posts went into the analysis.
These outlets work inside Iran, and several of them are state or semi-official news agencies. They report attacks quickly and in detail, which is why we use them, but they also report what the state wants reported. We come back to this below.
What a dot is
A dot is an attack event: one attack on one place on one day, as the posts describe it. When several posts describe the same attack, they become one event, and the panel for that event tells you how many posts reported it and in which channels. The map shows 2,125 events in 130 cities.
Each event carries one or more of six kinds of target: civilian, critical infrastructure, military, nuclear, regime change and other. An event can carry several at once, for example a strike that hit a military site and the homes around it. This is why the map breaks into 4,707 pieces: one piece for each kind of target an event carries.
How the posts were coded
The posts were read and coded by a large language model (GPT-5.3, from OpenAI) following written rules: whether a post reports an attack, where and when it happened, and which kinds of target it hit.
Automated coding makes mistakes. Before building this site we checked the coding by hand, and the next section describes what that check found and what we removed.
What we removed
Before building the site we removed 250 records: 38 duplicates of events already counted and 219 reports that were not attacks (7 were both). The non-attacks were mostly reports about attacks, such as condemnations, condolences and official statements, and a smaller number of items that were not war events at all.
None of the findings depends on this cleaning. The shares of each kind of target, the way the categories rise and fall together, and the turn to infrastructure in the last days all hold with or without the removed records.
The translation
The original reports are in Persian, and the panel for each event shows the Persian text. On the English site the text is followed by a machine translation made by Claude, a language model by Anthropic (Claude Haiku 4.5, with some batches redone by Claude Sonnet). We checked every batch for missing or misaligned records and corrected two translation errors by hand. The Persian text is the source; the translation is there to help you read it.
What the data cannot tell you
These are reports, not verified strikes. An attack the press did not report is missing, and an attack it described wrongly is coded as described. Small places may well be missing more often than large ones.
A share is a share of events, not of damage or of casualties. One event in a small town and one event that leveled a refinery count the same.
The pattern of targets points to what the war was for; it does not prove what anyone intended. We read the war's purpose off where the attacks fell, as the best explanation of that pattern, and we say so wherever we make the claim.