← Back to the dataset

UN Security Council Vetoes Dataset: Codebook

Version 1, 6 November 2026. Magnus Lundgren, University of Gothenburg. Please report errors to magnus.lundgren@gu.se.

Scope and unit

The dataset covers every veto cast in the UN Security Council from the first, on 16 February 1946, to 30 October 2026: 274 vetoed items.

A draft counts as vetoed when it received the affirmative votes needed for adoption (seven before 1966, nine since) and failed because one or more permanent members voted against it (Charter Article 27(3)). Abstention or non-participation by a permanent member is not a veto. The dataset follows the veto list of the UN Department of Political and Peacebuilding Affairs (DPPA), which includes vetoes cast in private meetings on the appointment of the Secretary-General.

The unit of analysis is the vetoed item, called a draft throughout. Most are draft resolutions. In the early years the Council also voted on parts of drafts, on amendments, on membership applications without a draft, and on whether a question was procedural (the "double veto"); the DPPA list counts a veto in each such vote, and so does this dataset. The variable vetoed_item identifies the type.

A draft vetoed by two or three members is one row, as in the UN count. To count vetoes by member, sum veto_china to veto_uk, which gives 332 member vetoes on 274 drafts. Of these drafts, 229 were vetoed by one member, 32 by two and 13 by three.

Files

File Unit Rows
data/vetoes.csv vetoed draft 274
data/veto_votes.csv Council member × vetoed draft (roll call) 3,637
data/veto_countries.csv country concerned × vetoed draft 472
data/vetoes.json vetoed draft, all fields, roll call nested 274

The same three tables ship in the R package unscvetoes as vetoes, veto_votes and veto_countries.

Missing values are empty cells in the CSV files and NA in R. Lists inside a cell are separated by "; ".

vetoes (one row per vetoed draft)

Variable Description Source
veto_id Identifier, 1–274, in date order. Fixed once assigned; new vetoes get the next number. Use it to cite a veto. Constructed
un_id Row identifier in the DPPA veto list. DPPA
date Date of the vote (YYYY-MM-DD). For the three written votes of 2020, the date the result was announced. Where the meeting record shows a different date from the DPPA list, the record's date is used and notes says so. Meeting record; DPPA
year, month Year and month of date. Constructed
draft_symbol UN document symbol of the vetoed draft, e.g. S/2024/302. For a part of a draft or an amendment, the symbol of the document voted on. Missing for 29 items that had no symbol: 28 from 1946–53, such as votes on membership applications, and an oral amendment in 2023 (veto_id 260). Draft text; meeting record
draft_note Description of the item where the symbol alone does not identify it, e.g. "S/3502 (separate vote on the word "Spain")". Draft text; meeting record
meeting_record Symbol of the meeting record, e.g. S/PV.9616. For the 2020 written votes, the letter that records the result. Meeting record
meeting_number Number of the Security Council meeting. Missing for written votes. Constructed
vetoed_item draft (a draft resolution or the whole of one); part of draft (a paragraph or words voted on separately); amendment; application (a vote on a membership application with no draft); procedural question (a vote on whether a draft was procedural); oral proposal. Coded from the meeting record
agenda, short_agenda Agenda item, as worded in the DPPA list. DPPA
topic Short label in the form "situation: subject", e.g. "Syria: cross-border humanitarian aid". Coded
region Region of the situation the draft concerns: Africa (sub-Saharan Africa, Sudan and the Maghreb west of Libya, including Western Sahara); Americas; Asia (South, East, South-East and Central Asia); Europe (including Cyprus, the Caucasus, Russia and Ukraine); Middle East (Egypt, Libya, Iran, Iraq, Israel, Palestine, the Levant, the Gulf and Yemen); Global (drafts not tied to a country, e.g. the Secretary-General or arms control). Coded
issue_area Main type of decision the draft sought, one per draft. Where several apply, the first in this order is used: (1) UN membership and appointments; (2) Peace operations (create, renew, change or end a UN mission or authorized force); (3) Decolonization and self-determination (Southern Rhodesia, Namibia, Portuguese colonies, other dependent territories); (4) Non-proliferation and disarmament (including sanctions aimed at nuclear or missile programmes); (5) Sanctions (impose, renew or change sanctions or a sanctions panel; includes apartheid South Africa); (6) Accountability and investigations (tribunals, ICC referral, commissions of inquiry, attribution mechanisms, recognition of atrocity crimes); (7) Use of force and ceasefires (ceasefires, truces, halts to military operations, withdrawal of forces); (8) Humanitarian access and protection (aid access, humanitarian pauses, protection of civilians or UN staff); (9) Occupation, territory and settlements; (10) Political crises and human rights; (11) Other thematic. Coded
situation The country or dispute the draft concerns, used to group related vetoes (e.g. "Syria", "Israel and Palestine", "Namibia"). Missing where no single country is concerned. Constructed from countries_iso3c
vetoed_by Permanent member(s) that cast the veto, e.g. "China; Russia". DPPA
n_vetoing Number of vetoing members (1–3). DPPA
veto_china, veto_russia, veto_france, veto_us, veto_uk 1 if that member vetoed, else 0. veto_russia covers the USSR before 1992; veto_china covers the Republic of China until 25 October 1971 and the People's Republic after. DPPA
council_size Number of Council members: 11 before 1966, 15 since. Charter
vote_yes, vote_no, vote_abstain, vote_not_participating Votes in favour, against, abstentions, and members that did not participate (present but not voting, or absent, e.g. the Soviet boycott of 1950). They sum to council_size. Meeting record
sponsors Sponsoring states as ISO3 codes, as printed on the draft or listed in the UN Digital Library. Sponsors added orally at the meeting may be missing. Draft text; UN Digital Library
n_sponsors Number of sponsors. Constructed
penholder Council member(s) that drafted and negotiated the text, as ISO3 codes, where a source names them or the meeting record makes it clear. Mostly missing before the 2000s, when the penholder system took shape. Meeting record
countries_iso3c Countries the draft concerns, as ISO3 codes: the state or territory where the situation is located, and any state the operative paragraphs address by name as a party, target or applicant. Empty for thematic drafts. See veto_countries for COW and Gleditsch–Ward codes. Coded from the draft
ucdp_conflict_id UCDP conflict identifier of the armed conflict the draft concerns (UCDP/PRIO Armed Conflict Dataset v26.1). Coded; UCDP
ucdp_dyad_id UCDP dyad identifier, filled only when the matched conflict has exactly one active dyad in the veto year. UCDP Dyadic Dataset v26.1
ucdp_active TRUE if the matched conflict is active (25 or more battle-related deaths) in the veto year. Missing where there is no conflict match and for vetoes after 2025, which v26.1 does not cover. UCDP
ucdp_match direct: the draft is about this conflict. past: the draft concerns a mission or settlement arising from a conflict that had ended. none: no armed conflict concerned or no clear match. Coded
ucdp_match_note One-line note on each match decision. Coded
cow_war_num Correlates of War war number, for drafts about wars with no UCDP match. No draft in this version needed one. COW
followup_resolution A later Council resolution on the same matter, where one was adopted. It may be a revised version of the vetoed text or a different text; aftermath says which. Resolutions
ga_type, ga_meeting, ga_date General Assembly follow-up for vetoes from 26 April 2022: a veto initiative debate under GA resolution 76/262, or an emergency special session on the same matter, which 76/262 accepts in its place. Symbol and date of the first plenary meeting. Earlier Assembly action is described in aftermath and not coded here. GA records
draft_purpose One sentence on what the draft would have done. Draft text
stated_reason One sentence paraphrasing the reason the vetoing member gave in its explanation of vote. It does not assess the member's motives. For joint vetoes, each member's reason is given where stated. Meeting record
aftermath One or two sentences on what followed in the Council and, where relevant, the General Assembly. Meeting records; resolutions
context Two to four sentences combining the above, as shown on the web page. Written from the fields above
sources URLs of the sources used, separated by "; ". The full list, with what each source supports, is in research/vetoes_research.json.
notes Facts not confirmed from a primary source, departures from the DPPA list, and coding decisions a user should know about. Read this before relying on a row.
detail TRUE for drafts with researched fields. All rows in this version.

veto_votes (one row per Council member per vetoed draft)

Each draft has 11 or 15 rows, matching council_size. Drafts decided by secret ballot in a private meeting (the Secretary-General appointments of 1953 and 1996, veto_id 61 and 206) have no roll call; for 206 only the negative vote attributed in the DPPA list is recorded.

Variable Description
veto_id, un_id, date, year, draft_symbol As in vetoes.
member Council member, by its name at the time (e.g. USSR, Ceylon, United Arab Republic, Zaire).
member_iso3c ISO3 code. Historical members: RUS for the USSR, UKR and BLR for the Ukrainian and Byelorussian SSRs, CHN for the Republic of China before 25 October 1971, YUG Yugoslavia, CSK Czechoslovakia, DDR East Germany, YMD Democratic Yemen.
member_cown Correlates of War state code at the date of the vote (e.g. 713 for the Republic of China seat from 8 December 1949, when COW and Gleditsch–Ward begin Taiwan, to 24 October 1971; missing for the Ukrainian and Byelorussian SSRs).
permanent TRUE for the five permanent members.
vote yes, no, abstain or not_participating.
veto TRUE for a vetoing member's negative vote.

Source: the roll call in the meeting record (S/PV), read from the English verbatim record, by OCR where the record is a scan. For the 2020 written votes, the letters recording the result. Where a record gives only totals (a few votes in 1946), the member lists are inferred from members' statements and notes says so.

veto_countries (one row per country concerned per vetoed draft)

Variable Description
veto_id, un_id, date, year, month, draft_symbol, region, issue_area, vetoed_by, veto_china … veto_uk, ucdp_conflict_id As in vetoes.
country Country name at the date of the vote.
iso3c ISO3 code. Non-standard codes: PSE Palestine, ESH Western Sahara, VDR North Vietnam; VNM is South Vietnam before May 1975. As a country concerned, CHN means the People's Republic of China from October 1949.
cown Correlates of War state code at the date of the vote. Missing for entities that were not COW system members: Palestine, Western Sahara, Namibia before 1990, Southern Rhodesia before November 1965, occupied Germany (1948), the Ukrainian SSR (1946) and the Republic of South Viet-Nam (1975).
gwno Gleditsch–Ward state code at the date of the vote, with the same gaps, using the microstates list where needed (Grenada is 55). Serbia/Yugoslavia is 345 until 2006 and 340 after; Yemen is 678.

Codes were assigned from a table of historical exceptions in build/build_dataset.R, with the R package countrycode for all other states.

Merge keys

To join with Key Notes
Country-year panels (COW, V-Dem, Polity, World Bank) veto_countries: cown, gwno or iso3c, plus year veto_country_year() in the R package collapses to country-years. Set non-matches to 0 after the join.
Country-month panels veto_countries: country code plus year and month
UCDP conflict-year vetoes: ucdp_conflict_id plus year past matches will not join an active conflict-year.
UCDP dyad-year vetoes: ucdp_dyad_id plus year Filled only where the dyad is unambiguous.
UN voting and document data draft_symbol, meeting_record, meeting_number Symbols follow UN style (S/2023/970, S/PV.9499). draft_symbol holds only the symbol, so it can be used as a key directly. Written votes in 2020 have no meeting number.
The DPPA veto list un_id

The package vignette (unscvetoes.html on the web page) shows a country-year and a UCDP conflict-year join.

Coding and conventions

Region, issue area, topic, vetoed item, countries concerned and the conflict match were coded from the draft text and meeting record, one code per draft per variable, following the rules above.

To test the rules, three AI coders recoded vetoed_item, region and issue_area for all 274 drafts, each seeing only the rules and the entry text, not the original codes. Agreement with the original codes:

Variable Agreement (three coders) Cohen's kappa Krippendorff's alpha
Vetoed item 99.6–100% 0.99–1.00 0.99
Region 99.6–100% 0.99–1.00 1.00
Issue area 87.6–91.6% 0.86–0.90 0.89

Alpha is computed over all four codings per draft, before adjudication. Where all three coders agreed on a different issue area (8 drafts), the case was reviewed against the precedence rule and seven codes were changed. The codings, statistics and adjudication are in validation/. The test coders come from the same model family as the original coding, so the figures may overstate the agreement that independent human coders would reach. A human second coding of a sample would be a stronger test.

The prose fields use short English country names (Russia, Syria, North Korea, Vietnam), with historical names where the period requires (the Soviet Union, the Republic of China, Zaire); Oxford spelling; and the vote form "A in favour, B against and C abstentions". They describe what a vetoed draft "would have" done and attribute every reason to the member that gave it.

Sources

This version does not use UN press releases or Security Council Report.

Method note

The entries were compiled by AI research assistants (Claude, Anthropic). They located and read the cited UN documents, by OCR where a record is a scan, and drafted each entry. Separate AI review passes then checked roll calls, dates, resolution numbers and attributions against the same documents, and a further pass checked prose and coding for consistency. The validation of the coding is described above. Each entry lists the sources used; facts that could not be confirmed from them are flagged in notes.

Known limits

Citation

Lundgren, Magnus. 2026. UN Security Council Vetoes Dataset. Version 1. University of Gothenburg.

The data are released under a CC BY 4.0 licence. The R package is version 1.0.0.

Updating

  1. Download the latest DPPA list into data-raw/: curl -L -o data-raw/vetoes_UN_<date>.csv https://api.psdata.un.org/public/data/DPPA-SCVETOES/csv
  2. Add researched entries for new vetoes to research/vetoes_research.json and a line to research/coding.csv. research/veto_ids.csv assigns the next veto_id automatically.
  3. Run Rscript build/build_dataset.R from the project folder. This rebuilds data/, the package data and the web page in web/.

Version history