Annual report pursuant to Section 13 and 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
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Total $ (283)us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings $ 1,998us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings $ 136us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date      
Total (1,551)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss 342bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss (3,204)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
Trading account liabilities – Corporate securities and other      
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
  4us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesAndOtherMember
Corporate securities, trading loans 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_CorporateSecuritiesTradingLoansAndOtherMember
10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
4us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
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 2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
30us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
(4)us-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
  (2)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
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 49us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
13us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(307)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 (8)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(36)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
(309)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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 180us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
242us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
195us-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 69us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(130)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
(19)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
Equity securities      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
74us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
31us-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 (8)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
40us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 30us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
50us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
8us-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 31us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
80us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
20us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 199us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
53us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
215us-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 79us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
(174)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
36us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
Trading Securities      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 409us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
419us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
449us-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 171us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
(184)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
54us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
Derivative assets      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 463us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
(304)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
(221)us-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 (87)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
(1,340)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
(2,326)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
Non-agency residential      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
  (69)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Non-U.S. securities      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (7)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
5us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
 
Corporate/Agency bonds      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings     (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CorporateBondSecuritiesMember
Other taxable securities      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
23us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
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     2us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
Tax-exempt securities      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
3us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
61us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
17us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
13us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 69us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
98us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
334us-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 76us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
118us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
214us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (1,231)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
1,941us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(430)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 (1,753)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
1,541us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
(1,100)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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 45us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
62us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
352us-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 (4)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
63us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
280us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
Other assets      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (98)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(288)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(54)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 52us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
180us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
(21)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 (7)us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(750)us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(2,886)us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date      
Total (95)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(1,563)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(2,858)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Trading account liabilities – Corporate securities and other      
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
  4us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesAndOtherMember
/ 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      
Total Realized and Unrealized Gains (losses) included in Earnings, Liabilities 1us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
10us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
4us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ 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
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
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
  0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ 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 78us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
45us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(133)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 29us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(4)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(136)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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 180us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
242us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
195us-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 69us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(130)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(19)us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings   74us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
31us-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 (8)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
40us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 30us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
50us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
8us-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 31us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
80us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ForeignGovernmentDebtSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
20us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 199us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
53us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
215us-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 79us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(174)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_MortgageTradingLoansAndAssetBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
36us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 409us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
419us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
449us-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 171us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(184)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_TradingAccountAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
54us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (475)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(1,224)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(3,208)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 (276)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(1,375)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
(2,782)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Non-agency residential      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
  0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
Trading Account Profits (Losses) | Non-U.S. securities      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
 
Trading Account Profits (Losses) | Corporate/Agency bonds      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CorporateBondSecuritiesMember
/ 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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ 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     2us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ 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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
2us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-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
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 0us-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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (6)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-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 (6)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_TradingGainLossMember
0us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (14)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
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 (14)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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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
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 (470)us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
2,984us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
2,631us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date      
Total (1,712)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
1,721bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(603)bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Trading account liabilities – Corporate securities and other      
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) | Corporate securities, trading loans 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_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ 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
30us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
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
  0us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ 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
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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 834us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
927us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
2,987us-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 85us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
42us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
456us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Non-agency residential      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
  0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
Mortgage Banking Income (Loss) | Non-U.S. securities      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
 
Mortgage Banking Income (Loss) | Corporate/Agency bonds      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings     0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CorporateBondSecuritiesMember
/ 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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ 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_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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(38)us-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
(34)us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (1,225)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
1,941us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(430)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 (1,747)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
1,541us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ServicingContractsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(1,100)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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
148us-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
6us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
112us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (79)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
122us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(74)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 (50)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
166us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_MortgageBankingIncomeLossMember
(71)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 194us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(236)us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
391us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisGainLossIncludedInEarnings
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Level 3 Changes in Unrealized Gains (Losses) Relating to Assets Still Held at Reporting Date      
Total 256bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
184bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
257bac_FairValueAssetsLiabilitesandNetDerivativeAssetLiabilityMeasuredonRecurringBasisChangeinUnrealizedGainLoss
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Trading account liabilities – Corporate securities and other      
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 | Corporate securities, trading loans 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_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_CorporateSecuritiesTradingLoansAndOtherMember
/ 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 2us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(4)us-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
  (2)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= bac_AccruedExpensesandOtherLiabilitiesMember
/ 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 (29)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(32)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisLiabilityGainLossIncludedInEarnings
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(174)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 (37)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(32)us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByLiabilityClassAxis
= us-gaap_LongTermDebtMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(173)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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 104us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(7)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-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 104us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(7)us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
0us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_DerivativeFinancialInstrumentsAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Non-agency residential      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
  (69)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Non-U.S. securities      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (7)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
5us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_ForeignSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
 
Other | Corporate/Agency bonds      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings     (2)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_CorporateBondSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
Other | Other taxable securities      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
9us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
21us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_OtherTaxableSecuritiesMember
/ 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_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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
3us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_TaxExemptSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
61us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 8us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
17us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_AvailableforsaleSecuritiesMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
11us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 69us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
136us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
334us-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 76us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
152us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_LoansReceivableMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
214us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) 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
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
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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 59us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
60us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
204us-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 10us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
57us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= bac_LoansHeldForSaleMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
168us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings (19)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
(410)us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
20us-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 102us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
14us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= us-gaap_OtherOperatingIncomeExpenseMember
50us-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      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings 86us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_NetDerivativeAssetsandOtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_SegmentReconcilingItemsEquityInvestmentIncomeLossMember
77us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= bac_NetDerivativeAssetsandOtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_SegmentReconcilingItemsEquityInvestmentIncomeLossMember
 
Equity investments | Other assets      
Level 3 Total Realized and Unrealized Gains (Losses) Related to Assets Included in Earnings      
Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Asset, Gain (Loss) Included in Earnings     97us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationRecurringBasisAssetGainLossIncludedInEarnings1
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ 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 $ 170us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_SegmentReconcilingItemsEquityInvestmentIncomeLossMember
$ 53us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_SegmentReconcilingItemsEquityInvestmentIncomeLossMember
$ 141us-gaap_FairValueAssetsMeasuredOnRecurringBasisChangeInUnrealizedGainLoss
/ us-gaap_FairValueByAssetClassAxis
= us-gaap_OtherAssetsMember
/ us-gaap_IncomeStatementLocationAxis
= bac_SegmentReconcilingItemsEquityInvestmentIncomeLossMember