Record — top-10 days
Every daily figure is ranked against every other day of the war for that same category. A tank figure is only ever compared with other tank figures, so a small absolute number can still be historically high.
- ★ Record
- The highest single day ever recorded for that category, or a match of it.
- Top 10
- Among the ten highest days of the war for that category.
- #38
- Inside the top fifty — worth noticing, but not remarkable.
- #412
- An ordinary day by that category's standards.
The Record column only shows a badge when the latest day is among the ten highest of the whole war, or among the ten highest of the current year (outlined badge). Gold never carries direction. Green and red carry direction only.
Key targets hit
The headlines of the General Staff's “Уражено …” (“Hit: …”) posts about Ukrainian strikes, mostly deep strikes inside Russia and occupied territory, translated to English and sorted into categories such as oil and fuel, defence industry, radars or drone sites. The date is the day of the post; the strikes themselves are usually from the night before. A headline can name several targets, so it can carry several categories. Click the box for the list of recent days, filter by category, and follow each item to the original post.
Where the data comes from
A filled badge — GSUA — marks figures reported by the General Staff of Ukraine's Armed Forces. These are Ukrainian claims and are not independently verified. A dashed badge — Oryx — marks a third party, and those cards carry a dashed border. Third-party counts are slower and far more conservative, which is why the two are never mixed in one figure.
What the columns mean
- Latest day
- The most recent daily figure, covering the activity date in the ribbon above.
- vs day before
- Absolute change against the preceding daily figure.
- 7-day avg
- Mean of the seven most recent daily figures.
- Latest vs avg
- How far the most recent day sits above or below that average.
- Last 7 days
- Sum of the seven most recent daily figures.
- vs previous 7
- Percentage change against the seven days before those.
- Daily record
- The highest single-day figure ever recorded for that item.
- Since invasion
- Cumulative total reported since 24 February 2022.
Timestamps
The report date is when this page was compiled. The activity date is the day the General Staff figures cover. The time shown beside the weather is when the weather itself was retrieved from Open-Meteo by script — it says nothing about when the casualty figures were published.
Caveats
Casualties count killed and wounded together; the estimated-deaths line applies a fixed share derived from released data. Equipment figures are field reports, which run well ahead of the visually confirmed counts — both are shown so the gap stays visible.
Where the page gets its data
Three transports, tried in the order listed in CONFIG.sources. The first that answers wins, and the snapshot baked into this file is the last resort, so the page never renders empty.
- data.json
- A static file published beside this page every morning. It is built from the spreadsheets by the
Ukraine dashboard auto-update Apps Script. The spreadsheets stay entirely private — their IDs never appear here. Recommended.
- Published CSV
- Sheets → File → Share → Publish to web, one tab at a time, format CSV. Only the tabs you tick become public and the document stays unshared. Paste each URL into
CONFIG.csv.
- gviz
- The legacy path. It needs the whole document shared as “anyone with the link”, which exposes every tab in it, not just the five the page reads. Leave
spreadsheetId empty to disable.
The shape of the data
Column order never matters — headers are matched by name, case and punctuation ignored.
meta key | value
keys: reportdate, activitydate, activityiso,
weatherupdated, areaasof, weather (JSON)
headline id | label | value | unit | dec | exact | delta | deltaUnit
| deltaLabel | invert | note | source | lead | goodNote
metrics id | group | label | sublabel | value | unit | dec
| delta | deltaUnit | deltaLabel | invert | plain
equipment id | label | sublabel | record | recordNote | rank
| total | day | chgDay | last7 | chg7 | avg7 | vsAvg | aggregate
series date | troops | equipment | <item id> ...
one extra column per equipment id (uav, tank, arty …)
feeds the category picker on the equipment chart
rank is the position of that day's figure among all daily figures for that category, 1 being the all-time high. Leave it blank and the badge falls back to the record comparison. source takes gsua or a third-party name such as ISW.
A data.json file carries the same information already assembled, plus a generated timestamp that the status line shows. Anything it leaves out keeps the snapshot's value, so a partial file is safe to publish.