Quarterly report pursuant to Section 13 or 15(d)

Fair Value Measurements - Gains and Losses (Details)

v2.4.1.9
Fair Value Measurements - Gains and Losses (Details) (USD $)
In Millions, unless otherwise specified
3 Months Ended
Mar. 31, 2015
Mar. 31, 2014
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total $ (56)us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings $ (74)us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Total (427)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss (488)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
Corporate securities and other    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date 1us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
1us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
Accrued expenses and other liabilities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date   1us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
Short-term borrowings    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 5us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
 
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date 5us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
 
Long-term debt    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 4us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(67)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date (4)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(67)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
Corporate securities, trading loans and other    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (21)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
122us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (58)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
111us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Equity securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 3us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
19us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (2)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
17us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
Non-U.S. sovereign debt    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 85us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
55us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 63us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
55us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
Mortgage trading loans and ABS    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 60us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
78us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (9)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
16us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Trading Securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 127us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
274us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (6)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
199us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Derivative assets    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (44)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
14us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (237)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
(159)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
Other taxable securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
Tax-exempt securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
Available-for-sale Securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (19)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
Loans and leases    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 15us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
32us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 29us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
28us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
Mortgage servicing rights    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (85)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(290)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (188)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(473)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
Loans held-for-sale    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (70)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
12us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (65)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
4us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Other assets    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(60)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 38us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(22)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
Trading Account Profits (Losses)    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total (241)us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
49us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Total (389)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(70)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Corporate securities and other    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date 1us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
1us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Accrued expenses and other liabilities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date   0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Short-term borrowings    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 5us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
 
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date 5us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
 
Trading Account Profits (Losses) | Long-term debt    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 58us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(53)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date 50us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(53)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Corporate securities, trading loans and other    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (21)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
122us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (58)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
111us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Equity securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 3us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
19us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (2)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
17us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Non-U.S. sovereign debt    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 85us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
55us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 63us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
55us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Mortgage trading loans and ABS    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 60us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
78us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (9)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
16us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Trading Securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 127us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
274us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (6)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
199us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Derivative assets    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (351)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(168)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (363)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(212)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Other taxable securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Tax-exempt securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Available-for-sale Securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
 
Trading Account Profits (Losses) | Loans and leases    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 3us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 3us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Mortgage servicing rights    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (15)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(5)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (15)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(5)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Loans held-for-sale    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (69)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (64)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Other assets    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Mortgage Banking Income (Loss)    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total 191us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(148)us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Total (88)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(452)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Corporate securities and other    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date 0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Accrued expenses and other liabilities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date   0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Short-term borrowings    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
 
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date 0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
 
Mortgage Banking Income (Loss) | Long-term debt    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date 0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Corporate securities, trading loans and other    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Equity securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Non-U.S. sovereign debt    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Mortgage trading loans and ABS    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Trading Securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Derivative assets    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 282us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
173us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 101us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
44us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Other taxable securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Tax-exempt securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings   0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Available-for-sale Securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Loans and leases    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Mortgage servicing rights    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (70)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(285)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (173)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(468)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Loans held-for-sale    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Other assets    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (21)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(36)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (16)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(28)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Other    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total (6)us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
25us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Total 50bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
34bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Corporate securities and other    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date 0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesandOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Accrued expenses and other liabilities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities   1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date   1us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Short-term borrowings    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
 
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date 0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_ShortTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
 
Other | Long-term debt    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities (54)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(14)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in Unrealized Gains (losses) relating to liabilities still held at reporting date (54)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(14)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Corporate securities, trading loans and other    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Equity securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Non-U.S. sovereign debt    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Mortgage trading loans and ABS    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Trading Securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Derivative assets    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 25us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 25us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
9us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Other taxable securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings   8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Tax-exempt securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings   1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Available-for-sale Securities    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (19)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Loans and leases    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 12us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
32us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 26us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
28us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Mortgage servicing rights    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Loans held-for-sale    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings (1)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
12us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date (1)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
4us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Other assets    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 31us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(24)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date 54us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
6us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Equity investments | Net derivative assets and other assets    
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings    
Change in realized gains (losses) included in earnings 20us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_NetDerivativeAssetsandOtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_SegmentReconcilingItemsEquityInvestmentIncomeLossMember
(14)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_NetDerivativeAssetsandOtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_SegmentReconcilingItemsEquityInvestmentIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date    
Change in unrealized Gains (losses) relating to assets still held at reporting date $ 22us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_NetDerivativeAssetsandOtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_SegmentReconcilingItemsEquityInvestmentIncomeLossMember
$ 18us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_NetDerivativeAssetsandOtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_SegmentReconcilingItemsEquityInvestmentIncomeLossMember