Quarterly report pursuant to Section 13 or 15(d)

Securities - Gross Unrealized Losses (Details)

v2.4.1.9
Securities - Gross Unrealized Losses (Details) (USD $)
In Millions, unless otherwise specified
Mar. 31, 2015
Dec. 31, 2014
Debt securities    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value $ 22,929us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
$ 16,346us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Less than Twelve Months, Gross Unrealized Losses (83)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
(99)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Twelve Months or Longer, Fair Value 21,635us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
49,554us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Twelve Months or Longer, Gross Unrealized Losses (328)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
(736)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Total, Fair Value 44,564us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
65,900us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Total, Gross Unrealized Losses (411)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
(835)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Temporarily impaired AFS debt securities | Debt securities    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 22,628us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
15,791us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Less than Twelve Months, Gross Unrealized Losses (70)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
(66)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Twelve Months or Longer, Fair Value 21,635us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
49,554us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Twelve Months or Longer, Gross Unrealized Losses (328)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
(736)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Total, Fair Value 44,263us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
65,345us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Total, Gross Unrealized Losses (398)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
(802)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_DebtSecuritiesMember
Temporarily impaired AFS debt securities | U.S. Treasury and agency securities    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 289us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
10,121us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
Less than Twelve Months, Gross Unrealized Losses (1)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
(22)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
Twelve Months or Longer, Fair Value 300us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
667us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
Twelve Months or Longer, Gross Unrealized Losses (2)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
(10)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
Total, Fair Value 589us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
10,788us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
Total, Gross Unrealized Losses (3)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
(32)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_USTreasuryAndGovernmentMember
Temporarily impaired AFS debt securities | Agency    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 19,107us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
1,366us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
Less than Twelve Months, Gross Unrealized Losses (51)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
(8)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
Twelve Months or Longer, Fair Value 17,169us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
43,118us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
Twelve Months or Longer, Gross Unrealized Losses (224)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
(585)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
Total, Fair Value 36,276us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
44,484us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
Total, Gross Unrealized Losses (275)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
(593)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyMember
Temporarily impaired AFS debt securities | Agency-collateralized mortgage obligations    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 1,266us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
2,242us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
Less than Twelve Months, Gross Unrealized Losses (6)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
(19)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
Twelve Months or Longer, Fair Value 1,981us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
3,075us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
Twelve Months or Longer, Gross Unrealized Losses (25)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
(60)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
Total, Fair Value 3,247us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
5,317us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
Total, Gross Unrealized Losses (31)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
(79)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_MortgageBackedSecuritiesAgencyCollateralizedMortgageObligationMember
Temporarily impaired AFS debt securities | Non-agency residential    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 660us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
307us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Less than Twelve Months, Gross Unrealized Losses (5)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
(3)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Twelve Months or Longer, Fair Value 77us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
809us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Twelve Months or Longer, Gross Unrealized Losses (42)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
(41)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Total, Fair Value 737us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
1,116us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Total, Gross Unrealized Losses (47)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
(44)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Temporarily impaired AFS debt securities | Commercial    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 14us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
 
Less than Twelve Months, Gross Unrealized Losses (1)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
 
Twelve Months or Longer, Fair Value 0us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
 
Twelve Months or Longer, Gross Unrealized Losses 0us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
 
Total, Fair Value 14us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
 
Total, Gross Unrealized Losses (1)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_CommercialMortgageBackedSecuritiesMember
 
Temporarily impaired AFS debt securities | Non-U.S. securities    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 19us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
157us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
Less than Twelve Months, Gross Unrealized Losses (2)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
(9)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
Twelve Months or Longer, Fair Value 30us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
32us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
Twelve Months or Longer, Gross Unrealized Losses (1)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
(2)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
Total, Fair Value 49us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
189us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
Total, Gross Unrealized Losses (3)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
(11)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_ForeignSecuritiesMember
Temporarily impaired AFS debt securities | Corporate/Agency bonds    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 0us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
43us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
Less than Twelve Months, Gross Unrealized Losses 0us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
(1)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
Twelve Months or Longer, Fair Value 93us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
93us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
Twelve Months or Longer, Gross Unrealized Losses (1)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
(1)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
Total, Fair Value 93us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
136us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
Total, Gross Unrealized Losses (1)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
(2)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_CorporateandAgencyBondsMember
Temporarily impaired AFS debt securities | Other taxable securities, substantially all asset-backed securities    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 679us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
575us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
Less than Twelve Months, Gross Unrealized Losses (3)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
(3)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
Twelve Months or Longer, Fair Value 981us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
1,080us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
Twelve Months or Longer, Gross Unrealized Losses (15)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
(19)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
Total, Fair Value 1,660us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
1,655us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
Total, Gross Unrealized Losses (18)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
(22)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_OtherTaxableSecuritiesMember
Temporarily impaired AFS debt securities | Total taxable securities    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 22,034us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
14,811us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
Less than Twelve Months, Gross Unrealized Losses (69)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
(65)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
Twelve Months or Longer, Fair Value 20,631us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
48,874us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
Twelve Months or Longer, Gross Unrealized Losses (310)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
(718)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
Total, Fair Value 42,665us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
63,685us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
Total, Gross Unrealized Losses (379)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
(783)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxableSecuritiesMember
Temporarily impaired AFS debt securities | Tax-exempt securities    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 594us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
980us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
Less than Twelve Months, Gross Unrealized Losses (1)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
(1)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
Twelve Months or Longer, Fair Value 1,004us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
680us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
Twelve Months or Longer, Gross Unrealized Losses (18)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
(18)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
Total, Fair Value 1,598us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
1,660us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
Total, Gross Unrealized Losses (19)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
(19)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_TemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= bac_TaxExemptSecuritiesMember
Other-than-temporarily impaired AFS debt securities | Non-agency residential    
Available-for-sale Securities, Continuous Unrealized Loss Position [Abstract]    
Less than Twelve Months, Fair Value 301us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
555us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThanTwelveMonthsFairValue
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Less than Twelve Months, Gross Unrealized Losses (13)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
(33)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Twelve Months or Longer, Fair Value 0us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
0us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionTwelveMonthsOrLongerFairValue
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Twelve Months or Longer, Gross Unrealized Losses 0us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
0us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Total, Fair Value 301us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
555us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionFairValue
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
Total, Gross Unrealized Losses $ (13)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember
$ (33)us-gaap_AvailableForSaleSecuritiesContinuousUnrealizedLossPositionAccumulatedLoss
/ bac_ImpairmentTypeAxis
= bac_OtherThanTemporarilyImpairedMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= us-gaap_ResidentialMortgageBackedSecuritiesMember