Official US government statistics and public community reports, with provenance on every number.
Read this before using any number here. The US government does not publish visa refusal
rates broken down by nationality and visa class together. It publishes refusal rates by nationality
for B visitor visas only, and refusal rates by visa class only as a
worldwide, all-nationalities figure. There is no official "F-1 refusal rate for India" or
"H-1B refusal rate for Nigeria" anywhere. Any site showing you one has invented it.
What we can't show you, and why →
Official data points
—
country-years and class-years, each with a source
Countries
—
nationalities in the B-visa panel
Fiscal years
—
FY2006–FY2025 (FY2017/18 unpublished)
Community reports
—
self-reported, self-selected
1 · Visitor visa (B) refusal rate by nationality
The only refusal rate the US publishes per nationality. This is the adjusted rate:
(refusals − overcomes) ÷ (issuances + refusals − overcomes), counting each applicant once
per fiscal year at final status, and excluding cases that needed a waiver of ineligibility.
Source: US Department of State, Calculation of the Adjusted Visa Refusal Rate for
Tourist and Business Travelers Under the Guidelines of the Visa Waiver Program, FY2006–FY2025.
One PDF per fiscal year. FY2017 and FY2018 are not published — the line breaks rather
than interpolating across them.
2 · Refusal rate by visa class — worldwide
These are global figures covering all nationalities. They are not, and cannot be broken
down into, per-country rates. They also use a different construct from the chart above — raw adjudication
counts rather than the adjusted methodology — so the two sections are not directly comparable.
Refusal rate by class
Over time
Source: US Department of State, NIV Workload by Visa Category, FY2013–FY2024.
Columns are Issued, Refused, Total Applications. In FY2024 three rows do not sum exactly
(B1/B2 by +2, BBBCC and BBBCV by −1 each); the printed totals are kept as published rather than
silently corrected.
3 · Community reports
Individual accounts from public forums and trackers, extracted into a common structure. This layer answers
questions the official data cannot — which consulate, what the officer asked, which documents were demanded
under 221(g) — but it is not a sample of applicants.
How biased is this sample? Measurably.
People post about dramatic outcomes and about problems they need help with; quiet approvals and quiet
refusals both go unreported, in different proportions. Treat counts here as texture, never as a rate.
Matching reports
—
after filters
Reported approved
—
share of matching reports
Reported 221(g)
—
administrative processing
Reported refused
—
outright refusal
Outcomes reported
Reports by consulate
Individual reports
Interview questions actually reported
Pulled verbatim from the reports above. Frequency here reflects what people
chose to write down, not what officers most often ask.
4 · What this tracker will not show you
These are the numbers people most want, and every one of them is unavailable in public US data. We
return nothing rather than an estimate.
Requested figure
Status
Why
F-1 refusal rate for India (or any single country)
Not published
Refusal rates by nationality exist for B visas only. By class, only a worldwide figure exists.
H-1B refusal rate by nationality
Not published
Same. USCIS's H-1B Employer Data Hub has no beneficiary nationality field at all.
Approval rate at a specific consulate
Not published
Monthly files exist by post and by nationality, but the two are never crossed, and neither carries refusals.
214(b) or 221(g) rate for a country or class
Not published
Refusal grounds are published globally with no class and no nationality breakdown.
Any refusal figure at monthly frequency
Not published
All monthly State Department files are issuances only.
H-1B lottery odds by nationality
Not published
Selection rate is released as a single global number in a news post.
The statutory reason is 8 U.S.C. § 1202(f), which
makes consular records on visa issuance and refusal confidential and operates as a FOIA Exemption 3
withholding statute. Record-level requests are refused under it as a matter of course.
5 · Sources and method
Known limitations of this build
Official tables were extracted from PDFs via a language model, not a deterministic parser.
The FY2025 nationality table was verified line-by-line against an independent published copy and matched
exactly on all 191 values; the class-level tables were verified by checking every column against the
source documents' own printed grand totals, which reconciled for all 12 years. Other years carry
set-level checks only.
A printed 0.00% is genuinely ambiguous in the source — it means either every application
was issued, or there were no applications at all. Those cells are flagged, not interpreted.
Two negative adjusted rates appear (Luxembourg FY2006, Kuwait FY2009). These are real: overcomes
exceeded refusals that year.
Microstates swing between 0% and 100% between years on tiny denominators. The rate is real; it is
just close to meaningless.
The community layer is a seed sample gathered from pages that render server-side. It skews heavily
toward Indian consulates and H-1B stamping, and toward 2011–2021. Two fabricated records produced during
extraction were caught and deleted; others may remain.
Outcome labels are only trusted when the quoted text supports them. An independent
audit found roughly a third of the extractor's "approved" labels sat on excerpts that were bare lists of
interview questions with no stated result. Every record is now re-checked against its own excerpt, and
any label the text does not evidence is downgraded to unclear. The original label is retained
in the database as outcome_original so the rule can be audited or reversed.
Records quoting the same source text are collapsed, including cases where the extractor emitted one
event twice with contradictory outcomes. Consulate names are normalised
(India : Mumbai → Mumbai), and university names are stripped from excerpts.
Community trackers claiming thousands of records serve only the first ~50 rows over plain HTTP —
their pagination is client-side. This build contains what was actually readable, not what was advertised.