US work stoppages: annual strike & lockout panel
Annual US work stoppages (strikes and lockouts involving 1,000+ workers, one full shift or longer) from the BLS Work Stoppages bulk files (keyless): one row per year, 1947 to the latest complete year, with stoppages beginning, workers involved beginning and in effect (thousands), days of idleness (thousands of workdays) and days idle as a percent of estimated total working time. Method: the six BLS measures are pivoted from annual (M13) bulk rows into a wide year panel; footnote-2 censored percent cells and footnote-1 unavailable cells are kept as honest NULLs with flags, preliminary flags preserved. Derived signals: days idle per worker, workers per stoppage beginning, and a trailing 5-year average of days idle. Units: days_idle_000s and workers_*_000s are in thousands; *_pct is a percent. Caveats: not comparable with the pre-1981 series that covered 6+ workers; the percent-of-worktime series was archived by BLS after April 2024 (NULLs from 2024 onward, never imputed); in-effect measures exist from 1981 only.
- Rows
- 79
- Columns
- 16
- Source cadence
- Monthly
- Last refreshed
- Sep 28, 2026
- Theme
- labor
| Column | Type | Description |
|---|---|---|
| year | integer | Calendar year (primary key, join key). (unit: year) |
| country | string | Country covered. |
| country_code | string | ISO 3166-1 alpha-3 country code (join key). |
| stoppages_beginning | integer | Number of work stoppages involving 1,000+ workers beginning in the period (BLS measure 100). (unit: count) |
| workers_beginning_000s | float | Workers directly involved in stoppages beginning in the period (BLS measure 010). (unit: thousands of workers) |
| workers_in_effect_000s | float | Workers directly involved in stoppages in effect in the period — those beginning in the period plus those that began earlier and continued into it (BLS measure 020). NULL in the annual panel before 1981 (monthly series starts 1981). (unit: thousands of workers) |
| stoppages_in_effect | integer | Number of work stoppages in effect in the period (BLS measure 200). NULL in the annual panel before 1981. (unit: count) |
| days_idle_000s | float | Total workdays lost by workers directly involved in stoppages in effect in the period (BLS measure 001). Excludes indirect/secondary idleness from material shortages or lack of services. (unit: thousands of workdays) |
| days_idle_pct_of_worktime | float | Workdays lost in stoppages in effect as a percent of workdays in the period x total national employment (private household, forestry, and fishery employees excluded; BLS measure 002). NULL when BLS reports the cell as unavailable ('-') or censored below 0.005; the series was archived by BLS after April 2024 and is NULL thereafter — never imputed. (unit: percent) |
| days_idle_pct_censored_low | integer | 1 when BLS footnoted the percent cell 'Less than 0.005' (the value is stored NULL); 0 otherwise. (unit: flag) |
| is_preliminary | integer | 1 when BLS flagged any of the period's cells preliminary (footnote P). Monthly figures stay preliminary until BLS issues final monthly + annual figures in February. (unit: flag) |
| days_idle_per_worker | float | days_idle_000s / workers_beginning_000s: workdays lost per worker involved in stoppages beginning in the year (both in thousands, so the ratio is plain days). NULL when either input is NULL or workers is 0. (unit: days) |
| workers_per_stoppage_000s | float | workers_beginning_000s / stoppages_beginning: average thousands of workers per stoppage beginning in the year. NULL when either input is NULL or stoppages is 0. (unit: thousands of workers) |
| days_idle_000s_5y_avg | float | Trailing 5-year (inclusive) average of days_idle_000s. NULL for the first 4 years. (unit: thousands of workdays) |
| row_hash | string | Deterministic 16-hex row hash of the panel + period (idempotency). |
| source_url | string | Bulk data file URL (provenance). (unit: URL) |
First 10 sample rows — a preview, not the complete dataset.
| year | country | country_code | stoppages_beginning | workers_beginning_000s | workers_in_effect_000s | stoppages_in_effect | days_idle_000s | days_idle_pct_of_worktime | days_idle_pct_censored_low | is_preliminary | days_idle_per_worker | workers_per_stoppage_000s | days_idle_000s_5y_avg | row_hash | source_url |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1,947 | United States | USA | 270 | 1,629 | — | — | 25,720 | — | 0 | 0 | 15.789 | 6.033 | — | 23f8f55fd648d880 | https://download.bls.gov/pub/time.series/ws/ws.data.1.AllData |
| 1,948 | United States | USA | 245 | 1,435 | — | — | 26,127 | 0.22 | 0 | 0 | 18.207 | 5.857 | — | a8f2871cba54aaaf | https://download.bls.gov/pub/time.series/ws/ws.data.1.AllData |
| 1,949 | United States | USA | 262 | 2,537 | — | — | 43,420 | 0.38 | 0 | 0 | 17.115 | 9.683 | — | 5b255a29af741351 | https://download.bls.gov/pub/time.series/ws/ws.data.1.AllData |
| 1,950 | United States | USA | 424 | 1,698 | — | — | 30,390 | 0.26 | 0 | 0 | 17.898 | 4.005 | — | 67d91e49d513fad4 | https://download.bls.gov/pub/time.series/ws/ws.data.1.AllData |
| 1,951 | United States | USA | 415 | 1,462 | — | — | 15,070 | 0.12 | 0 | 0 | 10.308 | 3.523 | 28,145.4 | f9d2cacac4dce507 | https://download.bls.gov/pub/time.series/ws/ws.data.1.AllData |
| 1,952 | United States | USA | 470 | 2,746 | — | — | 48,820 | 0.38 | 0 | 0 | 17.779 | 5.843 | 32,765.4 | a67973cf158f9c95 | https://download.bls.gov/pub/time.series/ws/ws.data.1.AllData |
| 1,953 | United States | USA | 437 | 1,623 | — | — | 18,130 | 0.14 | 0 | 0 | 11.171 | 3.714 | 31,166 | 1f2881e4f688523c | https://download.bls.gov/pub/time.series/ws/ws.data.1.AllData |
| 1,954 | United States | USA | 265 | 1,075 | — | — | 16,630 | 0.13 | 0 | 0 | 15.47 | 4.057 | 25,808 | a13c18a5250035e6 | https://download.bls.gov/pub/time.series/ws/ws.data.1.AllData |
| 1,955 | United States | USA | 363 | 2,055 | — | — | 21,180 | 0.16 | 0 | 0 | 10.307 | 5.661 | 23,966 | c1fab25b04ec96d8 | https://download.bls.gov/pub/time.series/ws/ws.data.1.AllData |
| 1,956 | United States | USA | 287 | 1,370 | — | — | 26,840 | 0.2 | 0 | 0 | 19.591 | 4.774 | 26,320 | 2ef603c19cc754fb | https://download.bls.gov/pub/time.series/ws/ws.data.1.AllData |
Profiled Sep 28, 2026 from snapshot 20260928T015350Z-614ceecbffba
Measured- Completeness
- 93%
- Rows
- 79
- Columns
- 16
- Columns with gaps
- 4
| Column | Missing | Distinct | Range | Distribution |
|---|---|---|---|---|
| yearbigint | 0% | 79 | 1,947 → 2,025median 1,986 | 2 outside 1st–99th percentile |
| countryvarchar | 0% | 1 | — |
|
| country_codevarchar | 0% | 1 | — |
|
| stoppages_beginningbigint | 0% | 60 | 5 → 470median 54 | 2 outside 1st–99th percentile |
| workers_beginning_000sdouble | 0% | 84 | 12.5 → 2,746median 458.9 | 2 outside 1st–99th percentile |
| workers_in_effect_000sdouble | 43% | 41 | 12.5 → 945.8median 200.3 | 2 outside 1st–99th percentile |
| stoppages_in_effectbigint | 43% | 37 | 5 → 151median 30 | 2 outside 1st–99th percentile |
| days_idle_000sdouble | 0% | 72 | 124.1 → 60,850median 10,020 | 2 outside 1st–99th percentile |
| days_idle_pct_of_worktimedouble | 21.5% | 24 | 0.01 → 0.43median 0.075 | 1 outside 1st–99th percentile |
| days_idle_pct_censored_lowbigint | 0% | 2 | 0 → 1median 0 | |
| is_preliminarybigint | 0% | 1 | 0 → 0median 0 | |
| days_idle_per_workerdouble | 0% | 84 | 5.32 → 51.87median 17.19 | 2 outside 1st–99th percentile |
| workers_per_stoppage_000sdouble | 0% | 84 | 2.42 → 24.26median 5.03 | 2 outside 1st–99th percentile |
| days_idle_000s_5y_avgdouble | 5.1% | 62 | 573.46 → 36,877median 8,960 | 2 outside 1st–99th percentile |
| row_hashvarchar | 0% | 87 | — |
|
| source_urlvarchar | 0% | 1 | — |
|
- Current
20260928T015350Z-614ceecbffba · sha256 614ceecbffba…
79 rows · first snapshot
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/bls_work_stoppages/bls_work_stoppages_annual" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/bls_work_stoppages/bls_work_stoppages_annual").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/bls_work_stoppages/bls_work_stoppages_annual
Tip: fetch /llms.txt for the full machine-readable catalog.
Where this data comes from and what was made from it. Other people's work shows as counts; only shared projects are named.
Cite this snapshot
Pinned to snapshot 20260928T015350Z-614ceecbffba and its content hash, so readers get exactly the data you used.
U.S. Bureau of Labor Statistics. (2026). US work stoppages: annual strike & lockout panel [Data set, snapshot 20260928T015350Z-614ceecbffba, sha256 614ceecbffba]. Datazimuts. Retrieved 2026-09-28, from https://datazimuts.com/en/datasets/bls_work_stoppages/bls_work_stoppages_annual?snapshot=20260928T015350Z-614ceecbffba
@misc{dz_bls_work_stoppages_bls_work_stoppages_an_614ceecb,
title = {{US work stoppages: annual strike \& lockout panel}},
author = {{U.S. Bureau of Labor Statistics}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/bls_work_stoppages/bls_work_stoppages_annual?snapshot=20260928T015350Z-614ceecbffba}},
note = {Snapshot 20260928T015350Z-614ceecbffba, sha256 614ceecbffbabff32524e5bf78b5f4163780cd14b91bc510d08368334c288fe1; accessed 2026-09-28}
}Embed a table or a chart
Paste this into any page. The embed is pinned to the same snapshot, follows the reader's light or dark setting, and always shows the source, license and a link back.
<iframe src="https://datazimuts.com/embed/chart?dataset=bls_work_stoppages%2Fbls_work_stoppages_annual&lang=en&theme=auto&snapshot=20260928T015350Z-614ceecbffba&x=year&y=year&agg=avg" title="US work stoppages: annual strike & lockout panel" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Ask about this dataset. Answers come only from its catalog record, measured profile and change history, and list the facts they used.