Technical writing

The asylum lottery: what EOIR data reveals about judge-by-judge grant rate disparities

· 11 min read· AI Analytics
Regulatory dataEOIRImmigrationAsylumDOJCourts

Whether a person fleeing political persecution is granted asylum in the United States depends, to a degree that should unsettle anyone who takes rule of law seriously, on which immigration judge happens to be assigned to their case. EOIR publishes the data that proves this. Most people have never heard of EOIR.

What EOIR is

The Executive Office for Immigration Review is a component of the Department of Justice. It runs the United States immigration court system: 68 immigration courts spread across the country, staffed by roughly 700 immigration judges. Those judges hear removal proceedings, asylum applications, bond hearings, and related matters. They decide whether people who have entered the country — or who are already here — may remain.

A critical structural fact about EOIR is that immigration judges are not Article III judges. They are not appointed under the federal judiciary's constitutional framework. They are DOJ employees — attorneys hired by the executive branch, subject to supervision by the Attorney General, and removable by the Attorney General. This matters because it means immigration courts exist entirely within the executive branch, without the constitutional independence protections that insulate federal district and circuit court judges from political pressure. Policy directives from the Attorney General carry the force of binding precedent in immigration court. The judges who decide asylum cases report up a chain of command that terminates in political appointees.

The Board of Immigration Appeals, also an EOIR component, hears appeals from immigration judge decisions. BIA decisions are binding on all immigration courts nationally unless overruled by a federal circuit court. The AG can certify BIA decisions to herself for review, effectively overriding the board, a power that has been used repeatedly across administrations to set asylum policy through adjudication rather than rulemaking.

Where the data lives

EOIR publishes two categories of statistical material:

  • The Statistical Year Book — annual and quarterly PDF reports at justice.gov/eoir/statistical-year-book. These contain summary tables on case completions, case types, nationality of respondents, and outcome distributions by court. They are useful for aggregate trend analysis but not for judge-level or nationality-by-judge analysis.
  • EOIR Datasets — bulk CSV exports at justice.gov/eoir/eoir-datasets. This is where the analytically useful data lives. The datasets include the complete case-level record going back to fiscal year 2000, updated quarterly. The asylum dataset specifically covers every completed asylum case with case-level fields including judge identifier, nationality, outcome, and court location.

EOIR began releasing the bulk datasets following sustained pressure from researchers, journalists, and the Transactional Records Access Clearinghouse at Syracuse University, which had been filing FOIA requests for immigration court data since the 1990s. The bulk release reduced the need for repeated FOIA litigation but did not eliminate it — certain fields remain redacted or suppressed, and data quality issues require careful handling before analysis.

The asylum data structure

The core asylum file from the EOIR bulk dataset is a flat CSV where each row represents a completed asylum case. The fields that matter for grant-rate analysis are:

  • IDNCASE — unique case identifier.
  • IJ_ID — immigration judge identifier. This is a numeric code, not a name. EOIR does not publish a judge-name-to-ID crosswalk in the bulk files; researchers have reconstructed it from press releases, court listings, and TRAC Freedom of Information requests.
  • NATIVITY — country of birth of the respondent, using a DOJ-internal country code that maps (with some gaps) to ISO 3166-1 alpha-3.
  • CASE_TYPE — the type of relief sought. Affirmative asylum cases originating from USCIS referrals carry code ASY. Defensive asylum — claims raised as a defense to removal in immigration court — also appear in the same dataset.
  • OSC_DATE / COMP_DATE — order to show cause date (initiation) and case completion date.
  • OUTCOME — the disposition code. The values that matter for grant-rate computation: G (granted), D (denied), W (withdrawn), A (administrative closure), C (continued), and O (other/transferred).
  • COURT — the immigration court location code, a three-letter identifier (e.g., NYC for New York, LAX for Los Angeles, SAN for San Diego).
  • FISCAL_YEAR — the federal fiscal year in which the case was completed (October 1 – September 30).

The denominator question for grant rate computation is non-trivial. A naive calculation — granted divided by total completed — will produce misleading results if administrative closures and withdrawals are included in the denominator. Researchers typically compute grant rate as G / (G + D), counting only merits decisions. Even this approach carries a selection effect: judges with high denial rates may see more withdrawals as attorneys assess the odds; judges with high grant rates may attract more well-prepared cases. The data cannot cleanly distinguish these effects.

The judge-level disparity

The headline finding from judge-level EOIR analysis is not subtle. TRAC Immigration at Syracuse University, which has maintained a longitudinal database of immigration court records since 1998 and publishes an interactive judge-level tool at trac.syr.edu/immigration/reports/judgereports/, documents a spread in asylum grant rates that should not exist in a system purportedly governed by consistent legal standards.

In the most recent multi-year datasets, grant rates among immigration judges hearing substantial asylum caseloads range from under 5% to over 90%. That is not a gap attributable to legitimate legal distinctions — judges operating in the same court, reviewing applications from applicants of the same nationality, produced grant rates that differed by 60, 70, and 80 percentage points. The academic literature established this pattern at least as far back as 2007, when Jaya Ramji-Nogales, Andrew Schoenholtz, and Philip Schrag published “Refugee Roulette: Disparities in Asylum Adjudication,” a landmark empirical study in the Stanford Law Review that found the single most predictive variable for asylum outcomes was the identity of the assigned judge — more predictive than the applicant's nationality, the represented/unrepresented status, or the legal strength of the underlying claim.

The disparity is not simply a function of court location. While courts in jurisdictions with large immigrant populations and more progressive political environments do tend to have higher aggregate grant rates, within-court variation among judges at the same location is itself enormous. In the New York immigration court, which handles one of the largest asylum dockets in the country, judge-level grant rates have historically spanned more than 60 percentage points within the same building hearing applications from the same nationalities.

Nationality patterns in the data

Asylum grant rates vary substantially by country of origin, reflecting both legal standards — the country-conditions evidence available, precedential circuit court decisions about particular nationalities, and the applicable evidentiary standards for particular forms of persecution — and political factors that have shaped EOIR adjudication policy over time.

Cameroonians represent one of the highest grant rates in recent EOIR data, driven by the Anglophone crisis in the Northwest and Southwest regions that began in 2016 and produced credible persecution claims well-documented in State Department Country Reports and UNHCR guidance. Grant rates for Cameroonian applicants in recent years have averaged above 70% nationally, though with substantial judge-level variation even within that high-grant-rate group.

Venezuelan applicants have seen grant rates rise sharply as political and economic conditions deteriorated under the Maduro government, with State Department country condition reports documenting arbitrary detention, torture of political opponents, and targeted persecution of civil society organizations. Grant rates for Venezuelans reached historic highs in FY2022–FY2023, though subsequent policy changes affecting Venezuelan nationals' ability to present affirmative asylum claims altered the population of cases reaching the merits stage.

Central American applicants from El Salvador, Guatemala, and Honduras have historically faced lower grant rates despite flight from violence that human rights organizations consistently characterize as meeting the persecution threshold. The difficulty is doctrinal: US asylum law requires persecution “on account of” race, religion, nationality, political opinion, or membership in a particular social group. Gang-based violence and extortion, the dominant drivers of Central American migration, have not been consistently recognized as falling within the “particular social group” protected category, and circuit court decisions on what constitutes a cognizable PSG have varied significantly across jurisdictions. Grant rates for Salvadoran applicants have ranged from 15% to 35% in recent years depending on circuit, court location, and individual judge — an enormous range for applicants presenting facially similar claims.

Chinese applicants represent a large share of the total asylum caseload and historically achieved relatively high grant rates, particularly for claims based on the one-child policy and claims of religious persecution by practitioners of Falun Gong and certain Christian denominations. As those cohorts have aged through the system and country conditions have evolved, grant rates for Chinese applicants have shown more variability, with claims based on political opposition to the CCP in the aftermath of the 2019 Hong Kong protests creating new categories of claims with developing precedential treatment.

Quota systems and case prioritization

The structural context for EOIR adjudication changed fundamentally in 2018 when the Trump administration's first-term DOJ imposed numerical case completion quotas on immigration judges for the first time. The policy required each judge to complete a minimum of 700 cases per year and linked performance evaluations to case throughput metrics. The National Association of Immigration Judges, the union representing immigration judges, challenged the quotas as incompatible with judicial independence, arguing that numerical production targets create pressure to deny cases — the fastest way to complete a case is to issue a written denial rather than a grant, which requires more detailed fact-finding and credibility analysis.

The Biden administration rescinded the quotas in early 2021 and moved to restore a degree of procedural independence, including reinstating discretionary use of administrative closure. The second Trump administration reversed course again in 2025, reimposing productivity metrics and accelerating case processing through a series of DOJ directives that prioritized recent border arrivals over long-pending cases that had accumulated in the backlog. The backlog itself exceeded three million pending cases as of mid-2025 — a figure that has made meaningful individualized adjudication structurally improbable regardless of who controls the executive branch.

Administrative closure and what it hides

Administrative closure is a procedural tool that removes a case from the active docket without resolving it on the merits. A case that is administratively closed is neither granted nor denied — it is put in indefinite suspension, typically because the respondent has a pending petition or application with another agency (such as USCIS), or because a prosecutorial discretion policy has deprioritized the case for active adjudication. The respondent remains in the country in legal limbo: not protected, not removed, not a lawful permanent resident.

Administrative closure distorts outcome statistics in a specific way. When a case is administratively closed, it drops off the active docket and does not appear in the grant or denial counts. If a judge with a low grant rate administratively closes a disproportionate share of cases with stronger underlying claims — for instance, cases where the respondent has obtained temporary protected status or DACA — the remaining merits decisions will skew toward denial, making the judge's apparent grant rate even lower than it would be under a complete accounting.

The Obama administration used administrative closure extensively as a de facto prosecutorial discretion tool, and the EOIR docket swelled with administratively closed cases. The first Trump administration directed immigration judges to reopen administratively closed cases en masse, flooding the docket with cases that had been dormant for years. The EOIR bulk dataset captures administrative closures in the OUTCOME field, allowing researchers to compute grant rates with and without the administratively closed population and to track how administrative closure policy changes affect apparent outcome distributions over time.

Pulling and analyzing the data

The EOIR bulk datasets are available as ZIP-compressed CSV files. The asylum dataset is typically named something like EOIR_Asylum_FY2000_FY2024.zip and runs to several gigabytes uncompressed across 20+ years of records. The field documentation is published alongside the dataset as a separate PDF data dictionary.

TRAC Immigration's interactive tool at Syracuse provides a cross-reference point for validating your computed grant rates against their independently derived figures. Discrepancies between your computation and TRAC's published rates typically indicate either a denominator definition difference (TRAC typically excludes certain case types from the base) or a data vintage difference (EOIR updates its bulk files quarterly and corrections to historical records do appear in subsequent releases).

The following Python script loads the asylum CSV, computes grant rates by judge and nationality, ranks judges within each court, and computes the coefficient of variation as a measure of within-court disparity:

import pandas as pd
import numpy as np

# Load the EOIR asylum bulk file
df = pd.read_csv('EOIR_Asylum_FY2000_FY2024.csv', low_memory=False)

# Standardize column names (EOIR field names vary across releases)
df.columns = [c.strip().upper() for c in df.columns]

# Filter to asylum cases (case_type == 'ASY') with merits decisions only
# Exclude administrative closure (A), withdrawal (W), transfer (O), continued (C)
merits = df[
    (df['CASE_TYPE'] == 'ASY') &
    (df['OUTCOME'].isin(['G', 'D']))
].copy()

# Compute grant flag
merits['granted'] = (merits['OUTCOME'] == 'G').astype(int)

# Restrict to recent years for relevance — last 5 fiscal years
recent_fy = [2020, 2021, 2022, 2023, 2024]
merits = merits[merits['FISCAL_YEAR'].isin(recent_fy)]

# Compute judge-level grant rate overall
judge_overall = (
    merits.groupby('IJ_ID')
    .agg(
        n_cases=('granted', 'count'),
        n_granted=('granted', 'sum'),
    )
    .assign(grant_rate=lambda x: x['n_granted'] / x['n_cases'])
    .query('n_cases >= 50')  # minimum case threshold for stability
    .sort_values('grant_rate')
)

# Compute judge x nationality grant rate matrix
judge_nat = (
    merits.groupby(['IJ_ID', 'NATIVITY'])
    .agg(
        n_cases=('granted', 'count'),
        n_granted=('granted', 'sum'),
    )
    .assign(grant_rate=lambda x: x['n_granted'] / x['n_cases'])
    .query('n_cases >= 20')
    .reset_index()
)

# Rank judges within each court by grant rate
court_ranks = (
    merits.merge(
        merits.groupby(['IJ_ID', 'COURT'])
        .agg(n_cases=('granted', 'count'))
        .reset_index(),
        on=['IJ_ID', 'COURT'],
    )
    .groupby(['IJ_ID', 'COURT'])
    .agg(
        n_cases=('granted', 'count'),
        grant_rate=('granted', 'mean'),
    )
    .query('n_cases >= 50')
    .reset_index()
)
court_ranks['rank_within_court'] = (
    court_ranks.groupby('COURT')['grant_rate']
    .rank(ascending=False)
)

# Compute coefficient of variation within each court
# CV = std / mean; higher CV = greater disparity
court_cv = (
    court_ranks.groupby('COURT')['grant_rate']
    .agg(['std', 'mean', 'count'])
    .assign(cv=lambda x: x['std'] / x['mean'])
    .query('count >= 3')  # at least 3 judges with qualifying caseloads
    .sort_values('cv', ascending=False)
)

print("Courts with highest within-court grant rate disparity (CV):")
print(court_cv[['mean', 'std', 'cv', 'count']].head(10).to_string())

# Nationality spotlight: compute national averages and judge spread
for nat in ['SLV', 'GTM', 'HND', 'VEN', 'CHN', 'CMR']:
    subset = judge_nat[judge_nat['NATIVITY'] == nat].copy()
    if len(subset) < 5:
        continue
    print(f"\n{nat}: {len(subset)} judges with >= 20 cases")
    print(f"  Median grant rate: {subset['grant_rate'].median():.1%}")
    print(f"  5th percentile:    {subset['grant_rate'].quantile(0.05):.1%}")
    print(f"  95th percentile:   {subset['grant_rate'].quantile(0.95):.1%}")
    print(f"  Spread (p95-p5):   {(subset['grant_rate'].quantile(0.95) - subset['grant_rate'].quantile(0.05)):.1%}")

Running this on a recent EOIR bulk export will typically produce a court-level CV table where several immigration courts show coefficients of variation above 0.5 — meaning the standard deviation in grant rates among judges at the same court is more than half the mean rate. For context, a CV above 0.3 in a system purporting to apply uniform legal standards would ordinarily prompt scrutiny of whether the standards are actually being applied uniformly.

Cross-reference opportunities

The EOIR asylum data becomes considerably more powerful when joined against other federal datasets:

  • DHS removal orders. ICE publishes enforcement and removal data through DHS's Office of Immigration Statistics. Joining EOIR denials by court and nationality against ICE removal statistics by nationality reveals which denial cohorts are actually removed and which remain in the country under order of removal — a population that is in a particularly precarious legal status.
  • CBP encounter and apprehension data. CBP publishes monthly encounter data by nationality and border sector. The pipeline from CBP encounter to EOIR docketing to case completion runs over years; joining these datasets tracks which entering populations from which years are working through the EOIR system, allowing projections of future caseload composition.
  • UNHCR country-of-origin conditions data. UNHCR publishes annual refugee status determination guidance and country-of-origin information for countries of significant asylum origin. Cross-referencing EOIR grant rates by nationality against UNHCR's refugee recognition rates for the same nationality in comparable legal systems — Canada, Germany, the UK — provides a comparator for whether US grant rates are consistent with international consensus about which nationalities face genuine persecution risk.
  • State Department Country Reports on Human Rights Practices. Published annually for every country, these reports constitute the primary country-conditions evidence used in asylum adjudication. Years in which a country's report documents a significant deterioration in human rights conditions should, under the applicable legal standards, be associated with higher grant rates for applicants from that country in subsequent fiscal years. Testing whether this relationship holds — and whether it holds consistently across judges — is a tractable empirical question the EOIR data makes answerable.

The limits of the public data

EOIR's bulk data release has real limitations. Judge names are not in the bulk file; the IJ_ID field is a numeric code. TRAC has, through sustained FOIA litigation, obtained name-to-ID mapping for many judges and publishes judge-level reports on its website. For researchers without access to that crosswalk, analysis is necessarily conducted at the anonymized judge level — which is sufficient for measuring systemic disparity but insufficient for accountability reporting about specific judges.

Representation status — whether the applicant had an attorney — is captured in some EOIR data releases but not consistently across all years and case types. This matters because representation has an enormous effect on grant rates: represented asylum applicants are consistently granted at substantially higher rates than unrepresented applicants across all nationalities and courts. A judge with a low apparent grant rate who primarily hears unrepresented cases is not directly comparable to a judge with a high rate hearing primarily represented cases, and the public data does not always allow for clean disaggregation.

EOIR does not publish individual case file documents through the bulk data release. The underlying immigration court records — the applications, supporting evidence, and judge decisions — are accessible only through individual FOIA requests or, for attorneys, through EOIR's electronic filing system. Bulk access to the decision text itself, which would allow analysis of judicial reasoning and evidentiary standards, does not exist in the public domain, though academic researchers have obtained subsets through FOIA and litigation-based discovery.

What the data establishes

The EOIR bulk dataset, taken at face value, establishes something significant: the outcome of an asylum claim in the United States is substantially determined by factors that have nothing to do with the merits of the claim. Which judge is assigned. Which court. Which year. Whether the applicant had a lawyer. The data does not explain why these disparities exist — it cannot distinguish an ideologically motivated judge from a judge with a heavy caseload and a demanding evidentiary standard from a judge who responds to policy pressure from above. But it establishes that the disparities are real, large, durable across years, and inconsistent with the proposition that asylum adjudication is applying uniform legal standards to comparable fact patterns.

For researchers and journalists, the EOIR dataset is one of the most tractable federal datasets for surfacing a structural injustice through empirical analysis. The data is quarterly-updated, case-level, and covers 25 years of adjudication. The patterns it reveals are not subtle. What they require is not sophisticated statistical methods but a denominator decision and the will to report the numbers.

Related writing

For the STOCK Act congressional trading dataset — another public disclosure regime where the gap between what is filed and what is enforceable defines the analysis: Trading on the inside: using STOCK Act filings to track congressional stock transactions →

For the CPSC recall database — another federal enforcement dataset where pre-decisional information is withheld under a statutory confidentiality provision and the public record represents a negotiated outcome: The recall record: what the CPSC product safety database shows and what manufacturers hide →

For the complete federal deferred prosecution agreement dataset, also within DOJ's jurisdiction: The DPA database: every federal deferred prosecution agreement since 1992 →

For the FARA foreign agent registration dataset, another DOJ bulk release with similar access challenges: Foreign agents in plain sight: mapping DC's hidden influence network with FARA data →