Methodology
Every score on ComplaintRate is derived from public federal datasets using consistent, reproducible methods. This page explains exactly what we measure, how we measure it, and where each data layer has known limitations. ComplaintRate currently cross-references 21 independent federal data layers across 2,333 US financial institutions.
1. Data sources
All data is sourced from US federal government databases. No proprietary or commercial data sources are used.
The Consumer Financial Protection Bureau publishes every complaint it receives against financial institutions. The full database contains nearly 14 million records since 2011, of which approximately 11 million are credit reporting disputes. We filter to banking, credit card, mortgage, and lending complaints — nearly 3 million records — which reflect how financial institutions treat their customers directly.
The FDIC publishes balance sheet data for every FDIC-insured institution, updated quarterly. We use total deposits (DEP) as a proxy for institution size to estimate customer counts, and the failure history database to flag institutions with historical bank failures.
The Office of the Comptroller of the Currency publishes all formal enforcement actions against national banks and federal savings associations, including Cease-and-Desist orders, Civil Money Penalties, and Formal Agreements. We track active actions and total CMP amounts.
The Federal Reserve publishes enforcement orders against bank holding companies and state member banks. We track active orders, order types, and penalty amounts.
The CFPB publishes its own enforcement actions, separate from the complaint database. These represent cases where the CFPB found sufficient evidence of consumer harm to take formal legal action.
The Financial Crimes Enforcement Network publishes civil money penalties for Bank Secrecy Act violations, including anti-money laundering failures. We track penalty amounts and violation types (e.g. AML failures, sanctions violations).
The Department of Justice Civil Rights Division publishes fair lending enforcement actions, including redlining cases and pricing discrimination settlements. We track total penalty amounts and primary violation types.
The Federal Financial Institutions Examination Council publishes Home Mortgage Disclosure Act data annually. We use 2023 HMDA data to calculate mortgage application denial rates and racial disparity ratios per institution. Coverage is limited to institutions that reported sufficient mortgage applications to produce statistically meaningful rates.
The St Louis Federal Reserve publishes live benchmark interest rate data used to contextualise institution-level mortgage and lending rates.
2. Complaint rate formula
Raw complaint counts are misleading. JPMorgan Chase receives more complaints than Chime simply because it has tens of millions more customers. Comparing raw counts tells you nothing meaningful about how an institution treats its customers.
We normalise every institution's complaint count by its estimated customer base, producing a rate directly comparable across institutions of any size.
FDIC does not publish customer headcounts. We estimate them by dividing each institution's total deposits by $10,000 (assumed average deposit balance per customer). Applied consistently across all institutions — relative rankings remain valid even if absolute values carry estimation error.
Produces complaints per estimated 1,000 customer-equivalents. A rate of 1.0 means approximately 1 complaint per 1,000 estimated customers.
Institutions ranked highest to lowest (rank 1 = worst). Confidence tier assigned based on total complaint volume: High ≥1,000 complaints, Medium 100–999, Directional <100.
Two secondary metrics are calculated directly from CFPB complaint records:
- Timely response rate — percentage of complaints where the institution responded within the CFPB-required timeframe.
- Closed with relief rate — percentage of complaints where the consumer received monetary or non-monetary relief.
3. Response Quality Score
The Response Quality Score (0–100, percentile-ranked) measures how substantively an institution responds to CFPB complaints. It is computed in two passes across all complaint records for each institution.
Monetary relief rate (35% weight), timeliness rate (25% weight), closure-without-explanation rate (8% weight). These are computed across all complaint records for the institution.
Template detection via MD5 hashing of response text (20% weight), resolution language rate — presence of resolution/remedy phrases vs deflection phrases (12% weight). Text analysis is applied to a sample of records where response narrative is available.
Scores are percentile-ranked across all 1,811 institutions with sufficient data. A score of 70+ (green) indicates high-quality, substantive responses. 40–69 (amber) indicates mixed quality. Below 40 (red) indicates predominantly boilerplate or dismissive responses.
Not all CFPB complaint records include response narratives — only those where the institution chose to provide them. Template detection and language analysis are algorithmic, not human-reviewed. The score reflects patterns across hundreds or thousands of responses and is a statistical signal, not a case-by-case assessment. Citibank N.A.'s 99.8% template rate (the highest in the dataset) reflects that virtually every sampled response was identical boilerplate text.
4. Consumer Narrative Analysis
ComplaintRate analyses the 3.7 million consumer complaint narratives where the consumer consented to publication. These are firsthand written accounts of the consumer's experience, not institutional responses.
Each narrative is tokenised and filtered for stop words. The frequency of alarm-signal words (fraud, scam, illegal, threaten, harass, sue, attorney, never, impossible, refused, criminal, deceptive, and others) is calculated per institution and compared against the global baseline rate of 3.1% across all narratives. The institution-level alarm rate is percentile-ranked (0–100) to produce the Alarm Score.
The 10 most frequent non-stop words in each institution's narratives are surfaced as the Consumer Voice signal. These reveal what consumers most commonly write about when filing complaints against that institution.
Only 3.7 million of the approximately 14 million total complaint records include consumer narratives — consumers must opt in to publication. Narrative availability varies significantly by product type and complaint year. The alarm word list is curated by ComplaintRate and may not capture all relevant signals. Word frequency analysis does not account for context — a word like "never" may appear in positive or negative contexts. Institution names may appear in their own top word list if entity resolution does not fully strip name variants from tokenisation (known issue, being addressed).
5. HMDA fair lending data
Home Mortgage Disclosure Act (HMDA) data is published annually by the FFIEC and covers mortgage applications at US lending institutions. We use 2023 HMDA data — the most recent full-year release.
For each institution with sufficient mortgage application volume, we calculate:
- Overall denial rate — percentage of mortgage applications denied across all applicants.
- Racial disparity ratio — denial rate for Black applicants divided by denial rate for white applicants at the same institution.
- Denial rates by race — separate denial rates for Black and white applicants shown for context.
HMDA data reflects mortgage applications only — not all financial products. The racial disparity ratio is a statistical observation derived from public federal data. It does not constitute a legal finding of discrimination, redlining, or fair lending violation. Disparity ratios can reflect differences in applicant credit profiles, loan amounts, property locations, and other factors not captured in the HMDA dataset. ComplaintRate presents this data as a factual record of publicly reported outcomes, not as a legal conclusion. Institutions with fewer than a minimum threshold of applications in a given race category are excluded from disparity calculations to avoid statistically unreliable results. HMDA coverage: 63 institutions in the current dataset.
6. Enforcement data
ComplaintRate tracks enforcement actions from seven federal agencies. All actions are sourced directly from official government publications. Enforcement data is distinct from complaint rates — an institution can have a low complaint rate and still have active enforcement actions, or vice versa.
Tracks active enforcement actions, action types, and total civil money penalties on record. Covers national banks and federal savings associations.
Tracks active enforcement orders against bank holding companies and state member banks.
Tracks CFPB-specific enforcement actions, separate from the complaint database.
Tracks Bank Secrecy Act civil money penalties. Coverage limited to institutions present in the CFPB dataset — FinCEN actions against non-CFPB institutions (e.g. Binance) are recorded but not shown on institution pages.
Tracks fair lending enforcement actions including redlining settlements and pricing discrimination cases. Coverage limited to institutions in the CFPB dataset with sufficient complaint volume.
Tracks Federal Trade Commission enforcement actions against non-bank financial companies, debt collectors, and fintechs. Scraped from FTC case database using requests + BeautifulSoup. Full historical scrape pending.
Tracks National Credit Union Administration administrative orders and enforcement actions against federally chartered credit unions.
Enforcement data is sourced from official government publications but is not guaranteed to be exhaustive. FinCEN and DOJ coverage is limited to institutions present in the CFPB database with sufficient complaint volume for inclusion in our scored dataset. Institutions with enforcement actions but no CFPB complaint history will not appear on ComplaintRate. Action dates, penalty amounts, and violation types are taken directly from official source documents — any errors in the source are reflected here.
7. Entity resolution
The CFPB database contains over 3,600 distinct company name strings, many referring to the same institution. "JPMorgan Chase Bank, N.A.", "Chase Bank", "JP Morgan Chase", and "Chase" all refer to the same entity but appear as separate records in the raw data.
We maintain a manually curated entity resolution table (44 entries as of April 2026) that maps raw CFPB name strings to canonical institution names. All complaints for mapped variants are aggregated under the canonical name before scoring. Enforcement data from OCC, Fed, FinCEN, and DOJ is matched to canonical names using a combination of exact matching, the entity map, and fuzzy string matching with a minimum confidence threshold of 0.80.
Institutions that cannot be confidently matched are recorded as unmatched and excluded from cross-referenced data layers rather than risk incorrect attribution.
8. Confidence tiers
Every institution is assigned a confidence tier based on total complaint volume. Institutions with few complaints have noisier rates — a single additional complaint can shift the rate significantly.
Only institutions with a High confidence tier appear in recommendations. Institutions with a complaints_per_1k rate above 0.5 are also excluded from recommendations regardless of confidence tier.
9. Known limitations
We believe in being explicit about what this data cannot tell you.
No US financial institution publicly discloses its exact retail customer headcount. The $10,000 average deposit assumption is reasonable for traditional retail banks but may overstate customer counts for wealth management institutions and understate them for fee-based fintechs with low average balances. Relative rankings between similar institution types are more reliable than absolute rate values.
The CFPB database only contains complaints that consumers chose to file. Filing frequency varies by demographic, product type, and awareness of the CFPB. Only approximately 5% of consumers with a genuine problem ever file a federal complaint — meaning the visible complaint data likely represents a fraction of actual consumer harm.
The CFPB's jurisdiction covers consumer financial products — checking accounts, credit cards, mortgages, personal loans, student loans, auto loans, money transfers, and debt collection. It does not cover investment products, insurance, or business banking.
HMDA racial disparity data covers mortgage applications, not all financial products. Disparity ratios are statistical observations from public data, not legal findings. See Section 5 for full caveats.
FinCEN and DOJ fair lending data is matched only against institutions present in the CFPB scored dataset. Large enforcement actions against institutions outside the CFPB dataset (e.g. cryptocurrency exchanges, non-bank entities) are not shown on institution pages. See Section 6 for full coverage counts.
The CFPB database reflects complaints since 2011. The political environment around the CFPB as of early 2026 creates uncertainty about future data availability. Our March 2026 snapshot represents the most complete normalised, entity-resolved version of this record that has ever been assembled. See our about page for more context.
10. Frequently asked questions
How does ComplaintRate calculate complaint rates?
ComplaintRate divides the total number of CFPB complaints filed against each institution by its estimated customer base (derived from FDIC deposit data), producing a rate per 1,000 estimated customers. This allows direct comparison between banks of any size.
Where does the complaint data come from?
All complaint data is sourced from the CFPB Consumer Complaint Database, a public record maintained by the US Consumer Financial Protection Bureau. We filter to banking, credit card, mortgage, and lending complaints — nearly 3 million records since 2011 — excluding credit reporting disputes.
How are customer counts estimated?
No US financial institution publicly discloses its exact retail customer headcount. ComplaintRate estimates customer counts by dividing each institution's total deposits (from FDIC BankFind) by $10,000, representing an assumed average deposit balance per customer.
What is the Response Quality Score?
The Response Quality Score (0–100) measures how substantively an institution responds to CFPB complaints. It is a composite of: monetary relief rate (35%), timeliness rate (25%), template response rate (20%), resolution language rate (12%), and other closure signals (8%). A score of 70+ indicates high-quality responses; below 40 indicates predominantly boilerplate or unhelpful responses.
What is the Narrative Alarm Score?
The Narrative Alarm Score (0–100) measures the frequency of alarm-signal words (fraud, scam, illegal, threaten, harass, sue, attorney, never, impossible, refused, etc.) in consumer narratives filed against an institution, compared to the global baseline rate of 3.1% across all 3.7 million narratives. A score of 70+ suggests consumers are describing significantly more alarming experiences than average.
What does the HMDA racial disparity ratio measure?
The HMDA racial disparity ratio compares mortgage application denial rates for Black applicants versus white applicants at the same institution, using 2023 FFIEC HMDA data. A ratio of 2.0× means Black applicants were denied twice as often as white applicants. This is a statistical observation from public data; it does not constitute a legal finding of discrimination.
Are lower complaint rates always better?
Generally yes. Complaint rates measure consumer escalation to a federal regulator — a last resort. A lower rate means fewer customers felt compelled to file a formal federal complaint. It does not guarantee perfect service, but is a strong signal of relative consumer treatment.
How often is the data updated?
The CFPB complaint rate pipeline is updated regularly. Enforcement data (OCC, Fed, CFPB, FinCEN, DOJ) is updated when new verified actions are confirmed. HMDA data reflects the most recent FFIEC annual release (currently 2023). Narrative and response quality pipelines are rerun when the underlying CFPB data is refreshed.
11. Reproducibility
The scoring pipeline is written in Python using DuckDB for query processing and the Supabase API for storage. Separate pipeline scripts handle each data layer: CFPB complaint rates, OCC enforcement, Federal Reserve enforcement, CFPB enforcement, FDIC failures, FinCEN AML, DOJ fair lending, HMDA, response quality scoring, and narrative analysis.
The entity resolution mapping table is versioned and published on the data page. Researchers wishing to reproduce scores can apply the formulas above to the raw CFPB and FDIC datasets using the published entity map.