XML 129 R115.htm IDEA: XBRL DOCUMENT v2.4.1.9
Fair Value Measurements (Fair Value Measurement on Nonrecurring Basis) (Details) (USD $)
In Thousands, unless otherwise specified
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Dec. 31, 2011
Fair value measurements of assets on a nonrecurring basis        
Investment securities held to maturity, Total $ 36,874us-gaap_HeldToMaturitySecuritiesFairValue $ 36,340us-gaap_HeldToMaturitySecuritiesFairValue    
Other real estate owned, Basis 3,355us-gaap_OtherRealEstateAndForeclosedAssets 4,559us-gaap_OtherRealEstateAndForeclosedAssets 5,666us-gaap_OtherRealEstateAndForeclosedAssets 4,484us-gaap_OtherRealEstateAndForeclosedAssets
Level 1        
Fair value measurements of assets on a nonrecurring basis        
Investment securities held to maturity, Total 0us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
0us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
   
Level 2        
Fair value measurements of assets on a nonrecurring basis        
Investment securities held to maturity, Total 36,874us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
36,340us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
   
Level 3        
Fair value measurements of assets on a nonrecurring basis        
Investment securities held to maturity, Total 0us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
0us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
   
Nonrecurring        
Fair value measurements of assets on a nonrecurring basis        
Total, Basis 2,340hfwa_BasisForAssetsMeasuredAtFairValue
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
[1] 18,382hfwa_BasisForAssetsMeasuredAtFairValue
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
[1]    
Total 1,919us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
13,185us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
   
Total, Net Losses (Gains) Recorded in Earnings 423hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
1,229hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
   
Nonrecurring | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Total 0us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
0us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
   
Nonrecurring | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Total 11us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
19us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
   
Nonrecurring | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Total 1,908us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
13,166us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
   
Nonrecurring | Private Residential Collateralized Mortgage Obligations        
Fair value measurements of assets on a nonrecurring basis        
Investment securities held to maturity, Basis 36us-gaap_HeldToMaturitySecuritiesAmortizedCostBeforeOtherThanTemporaryImpairment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
[1] 19us-gaap_HeldToMaturitySecuritiesAmortizedCostBeforeOtherThanTemporaryImpairment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
[1]    
Investment securities held to maturity, Total 11us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
19us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
   
Total, Net Losses (Gains) Recorded in Earnings 45hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
38hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
   
Nonrecurring | Private Residential Collateralized Mortgage Obligations | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Investment securities held to maturity, Total 0us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
0us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
   
Nonrecurring | Private Residential Collateralized Mortgage Obligations | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Investment securities held to maturity, Total 11us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
19us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
   
Nonrecurring | Private Residential Collateralized Mortgage Obligations | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Investment securities held to maturity, Total 0us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
0us-gaap_HeldToMaturitySecuritiesFairValue
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_PrivateResidentialCollateralizedMortgageObligationsMember
   
Nonrecurring | Commercial Properties        
Fair value measurements of assets on a nonrecurring basis        
Other real estate owned, Basis   1,720us-gaap_OtherRealEstateAndForeclosedAssets
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialPropertiesMember
[1]    
Other real estate owned, Total   1,222hfwa_OtherRealEstateOwnedFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialPropertiesMember
   
Total, Net Losses (Gains) Recorded in Earnings   348hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialPropertiesMember
   
Nonrecurring | Commercial Properties | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Other real estate owned, Total   0hfwa_OtherRealEstateOwnedFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialPropertiesMember
   
Nonrecurring | Commercial Properties | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Other real estate owned, Total   0hfwa_OtherRealEstateOwnedFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialPropertiesMember
   
Nonrecurring | Commercial Properties | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Other real estate owned, Total   1,222hfwa_OtherRealEstateOwnedFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialPropertiesMember
   
Nonrecurring | Noncovered Impaired Loans        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis 2,304us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
[1] 12,442us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
[1]    
Impaired originated loans, Total   8,403hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
   
Total, Net Losses (Gains) Recorded in Earnings 378hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
230hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
   
Nonrecurring | Noncovered Impaired Loans | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
   
Nonrecurring | Noncovered Impaired Loans | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
   
Nonrecurring | Noncovered Impaired Loans | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 1,908hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
8,403hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
   
Nonrecurring | Noncovered Impaired Loans | One-to-four Family Residential        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis   0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
[1]    
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Total, Net Losses (Gains) Recorded in Earnings   0hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Noncovered Impaired Loans | One-to-four Family Residential | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Noncovered Impaired Loans | One-to-four Family Residential | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Noncovered Impaired Loans | One-to-four Family Residential | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis 161us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
[1] 10,853us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
[1]    
Impaired originated loans, Total 138hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
7,178hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
   
Total, Net Losses (Gains) Recorded in Earnings 23hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
(134)hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 138hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
7,178hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Commercial and Industrial        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis 161us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
[1] 4,850us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
[1]    
Impaired originated loans, Total 138hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
2,134hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Total, Net Losses (Gains) Recorded in Earnings 23hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
1,681hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Commercial and Industrial | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Commercial and Industrial | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Commercial and Industrial | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 138hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
2,134hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Owner-occupied Commercial Real Estate        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis   1,880us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
[1]    
Impaired originated loans, Total   1,285hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
   
Total, Net Losses (Gains) Recorded in Earnings   594hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Owner-occupied Commercial Real Estate | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Owner-occupied Commercial Real Estate | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Owner-occupied Commercial Real Estate | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   1,285hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Non-owner Occupied Commercial Real Estate        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis   4,123us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
[1]    
Impaired originated loans, Total   3,759hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
Total, Net Losses (Gains) Recorded in Earnings   (2,409)hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Non-owner Occupied Commercial Real Estate | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Non-owner Occupied Commercial Real Estate | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Noncovered Impaired Loans | Commercial Business | Non-owner Occupied Commercial Real Estate | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   3,759hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Noncovered Impaired Loans | Real Estate Construction and Land Development        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis 2,094us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
[1] 911us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
[1]    
Impaired originated loans, Total 1,725hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
700hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
   
Total, Net Losses (Gains) Recorded in Earnings 350hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
211hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
   
Nonrecurring | Noncovered Impaired Loans | Real Estate Construction and Land Development | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
   
Nonrecurring | Noncovered Impaired Loans | Real Estate Construction and Land Development | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
   
Nonrecurring | Noncovered Impaired Loans | Real Estate Construction and Land Development | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 1,725hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
700hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
   
Nonrecurring | Noncovered Impaired Loans | Real Estate Construction and Land Development | One-to-four Family Residential        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis 2,094us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
[1] 911us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
[1]    
Impaired originated loans, Total 1,725hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
700hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Total, Net Losses (Gains) Recorded in Earnings 350hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
211hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Noncovered Impaired Loans | Real Estate Construction and Land Development | One-to-four Family Residential | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Noncovered Impaired Loans | Real Estate Construction and Land Development | One-to-four Family Residential | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Noncovered Impaired Loans | Real Estate Construction and Land Development | One-to-four Family Residential | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 1,725hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
700hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_RealEstateConstructionAndLandDevelopmentMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Noncovered Impaired Loans | Consumer        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis 49us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
[1] 678us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
[1]    
Impaired originated loans, Total 45hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
525hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
   
Total, Net Losses (Gains) Recorded in Earnings 5hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
153hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
   
Nonrecurring | Noncovered Impaired Loans | Consumer | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
   
Nonrecurring | Noncovered Impaired Loans | Consumer | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
   
Nonrecurring | Noncovered Impaired Loans | Consumer | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total 45hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
525hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
   
Nonrecurring | Covered Impaired Loans        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis   4,201us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
[1]    
Impaired originated loans, Total   3,541hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
   
Total, Net Losses (Gains) Recorded in Earnings   613hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
   
Nonrecurring | Covered Impaired Loans | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
   
Nonrecurring | Covered Impaired Loans | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
   
Nonrecurring | Covered Impaired Loans | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   3,541hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
   
Nonrecurring | Covered Impaired Loans | One-to-four Family Residential        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis   450us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
[1]    
Impaired originated loans, Total   419hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Total, Net Losses (Gains) Recorded in Earnings   (13)hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Covered Impaired Loans | One-to-four Family Residential | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Covered Impaired Loans | One-to-four Family Residential | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Covered Impaired Loans | One-to-four Family Residential | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   419hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis   3,751us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
[1]    
Impaired originated loans, Total   3,122hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
   
Total, Net Losses (Gains) Recorded in Earnings   628hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   3,122hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business | Commercial and Industrial        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis   3,751us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
[1]    
Impaired originated loans, Total   3,122hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Total, Net Losses (Gains) Recorded in Earnings   628hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business | Commercial and Industrial | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business | Commercial and Industrial | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business | Commercial and Industrial | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   3,122hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business | Non-owner Occupied Commercial Real Estate        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis   0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
[1]    
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
Total, Net Losses (Gains) Recorded in Earnings   0hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business | Non-owner Occupied Commercial Real Estate | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business | Non-owner Occupied Commercial Real Estate | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Covered Impaired Loans | Commercial Business | Non-owner Occupied Commercial Real Estate | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_CommercialBusinessMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
Nonrecurring | Covered Impaired Loans | Consumer        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Basis   0us-gaap_ImpairedFinancingReceivableWithRelatedAllowanceRecordedInvestment
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
[1]    
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
   
Total, Net Losses (Gains) Recorded in Earnings   (2)hfwa_FairValueAssetsMeasuredonNonrecurringBasisNetGainsLossesIncludedinEarnings
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
   
Nonrecurring | Covered Impaired Loans | Consumer | Level 1        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
   
Nonrecurring | Covered Impaired Loans | Consumer | Level 2        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
   
Nonrecurring | Covered Impaired Loans | Consumer | Level 3        
Fair value measurements of assets on a nonrecurring basis        
Impaired originated loans, Total   $ 0hfwa_ImpairedOriginatedLoansFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredImpairedLoansMember
/ us-gaap_ProductOrServiceAxis
= hfwa_ConsumerMember
   
[1] asis represents the unpaid principal balance of noncovered impaired and covered impaired loans, amortized cost of investment securities held to maturity, and carrying value at ownership date of other real estate owned.