XML 105 R90.htm IDEA: XBRL DOCUMENT v2.4.1.9
Allowance for Loan Losses (Activity in Allowance for Losses Disaggregated on Basis of Impairment) (Details) (USD $)
In Thousands, unless otherwise specified
3 Months Ended 12 Months Ended
Dec. 31, 2014
Sep. 30, 2014
Jun. 30, 2014
Mar. 31, 2014
Dec. 31, 2013
Sep. 30, 2013
Jun. 30, 2013
Mar. 31, 2013
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Financing Receivable, Allowance for Credit Losses [Roll Forward]                      
Balance at the beginning of period       $ 28,824us-gaap_LoansAndLeasesReceivableAllowance       $ 28,594us-gaap_LoansAndLeasesReceivableAllowance $ 28,824us-gaap_LoansAndLeasesReceivableAllowance $ 28,594us-gaap_LoansAndLeasesReceivableAllowance $ 30,915us-gaap_LoansAndLeasesReceivableAllowance
Schedule of allowance for loan losses on the basis of impairment method                      
Charge-offs                 (6,597)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs (4,371)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs (6,074)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
Recoveries                 908us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts 929us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts 1,737us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
Provisions for / (reallocation of) loan losses 2,851us-gaap_ProvisionForLoanAndLeaseLosses 594us-gaap_ProvisionForLoanAndLeaseLosses 691us-gaap_ProvisionForLoanAndLeaseLosses 458us-gaap_ProvisionForLoanAndLeaseLosses 428us-gaap_ProvisionForLoanAndLeaseLosses 1,078us-gaap_ProvisionForLoanAndLeaseLosses 1,308us-gaap_ProvisionForLoanAndLeaseLosses 858us-gaap_ProvisionForLoanAndLeaseLosses 4,594us-gaap_ProvisionForLoanAndLeaseLosses 3,672us-gaap_ProvisionForLoanAndLeaseLosses 2,016us-gaap_ProvisionForLoanAndLeaseLosses
Balance at the end of period 27,729us-gaap_LoansAndLeasesReceivableAllowance       28,824us-gaap_LoansAndLeasesReceivableAllowance       27,729us-gaap_LoansAndLeasesReceivableAllowance 28,824us-gaap_LoansAndLeasesReceivableAllowance 28,594us-gaap_LoansAndLeasesReceivableAllowance
Noncovered Loans                      
Financing Receivable, Allowance for Credit Losses [Roll Forward]                      
Balance at the beginning of period       22,657us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
      24,242us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
22,657us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
24,242us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
26,952us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
Schedule of allowance for loan losses on the basis of impairment method                      
Charge-offs                 (3,643)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
(4,298)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
(6,017)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
Recoveries                 907us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
929us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
1,737us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
Provisions for / (reallocation of) loan losses                 2,232us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
1,784us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
1,570us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
Balance at the end of period 22,153us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
      22,657us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
      22,153us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
22,657us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
24,242us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
Individually evaluated for impairment 3,235us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
      4,039us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
      3,235us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
4,039us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
 
Collectively evaluated for impairment 14,868us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
      14,374us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
      14,868us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
14,374us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
 
Covered Loans                      
Financing Receivable, Allowance for Credit Losses [Roll Forward]                      
Balance at the beginning of period       6,167us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
      4,352us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
6,167us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
4,352us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
3,963us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
Schedule of allowance for loan losses on the basis of impairment method                      
Charge-offs                 (2,954)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
(73)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
(57)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
Recoveries                 1us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
Provisions for / (reallocation of) loan losses                 2,362us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
1,888us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
446us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
Balance at the end of period 5,576us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
      6,167us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
      5,576us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
6,167us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
4,352us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
Individually evaluated for impairment 423us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
      660us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
      423us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
660us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
 
Collectively evaluated for impairment 148us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
      109us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
      148us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
109us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
 
Noncovered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         4,244us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
        4,244us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
 
PCI loans collectively evaluated for impairment 4,050us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
              4,050us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
   
Covered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         5,398us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
        5,398us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
 
PCI loans collectively evaluated for impairment 5,005us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
              5,005us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
   
Commercial and Industrial                      
Financing Receivable, Allowance for Credit Losses [Roll Forward]                      
Balance at the beginning of period       13,478us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
      9,912us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
13,478us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
9,912us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
11,805us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
Schedule of allowance for loan losses on the basis of impairment method                      
Charge-offs                 (4,504)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
(2,826)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
(2,292)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
Recoveries                 716us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
248us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
1,560us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
Provisions for / (reallocation of) loan losses                 863us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
6,144us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
(1,161)us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
Balance at the end of period 10,553us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
      13,478us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
      10,553us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
13,478us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
9,912us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
Commercial and Industrial | Noncovered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 1,325us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
      2,716us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
      1,325us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
2,716us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
 
Collectively evaluated for impairment 6,449us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
      6,727us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
      6,449us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
6,727us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
 
Commercial and Industrial | Covered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 9us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
      629us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
      9us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
629us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
 
Collectively evaluated for impairment 108us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
      18us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
      108us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
18us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
 
Commercial and Industrial | Noncovered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         2,294us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
        2,294us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
 
PCI loans collectively evaluated for impairment 2,191us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
              2,191us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Commercial and Industrial | Covered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         1,094us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
        1,094us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
 
PCI loans collectively evaluated for impairment 471us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
              471us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_CommercialAndIndustrialMember
   
Owner-occupied Commercial Real Estate                      
Financing Receivable, Allowance for Credit Losses [Roll Forward]                      
Balance at the beginning of period       4,049us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
      4,021us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
4,049us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
4,021us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
2,979us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
Schedule of allowance for loan losses on the basis of impairment method                      
Charge-offs                 (337)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
(247)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
(1,142)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
Recoveries                 0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
560us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
8us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
Provisions for / (reallocation of) loan losses                 383us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
(285)us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
2,176us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
Balance at the end of period 4,095us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
      4,049us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
      4,095us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
4,049us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
4,021us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
Owner-occupied Commercial Real Estate | Noncovered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 684us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
      595us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
      684us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
595us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
 
Collectively evaluated for impairment 1,629us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
      2,101us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
      1,629us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
2,101us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
 
Owner-occupied Commercial Real Estate | Covered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 295us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
      295us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
 
Collectively evaluated for impairment 14us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
      7us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
      14us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
7us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
 
Owner-occupied Commercial Real Estate | Noncovered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         348us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
        348us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
 
PCI loans collectively evaluated for impairment 330us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
              330us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
   
Owner-occupied Commercial Real Estate | Covered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         998us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
        998us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
 
PCI loans collectively evaluated for impairment 1,143us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
              1,143us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OwnerOccupiedCommercialRealEstateMember
   
Non-owner Occupied Commercial Real Estate                      
Financing Receivable, Allowance for Credit Losses [Roll Forward]                      
Balance at the beginning of period       5,326us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
      5,369us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
5,326us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
5,369us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
4,394us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
Schedule of allowance for loan losses on the basis of impairment method                      
Charge-offs                 (411)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
(292)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
Recoveries                 0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
11us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
Provisions for / (reallocation of) loan losses                 623us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
(43)us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
1,256us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
Balance at the end of period 5,538us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
      5,326us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
      5,538us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
5,326us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
5,369us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
Non-owner Occupied Commercial Real Estate | Noncovered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 465us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
      364us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
      465us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
364us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
 
Collectively evaluated for impairment 2,541us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
      2,516us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
      2,541us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
2,516us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
 
Non-owner Occupied Commercial Real Estate | Covered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 66us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
      66us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
 
Collectively evaluated for impairment 6us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
      14us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
      6us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
14us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
 
Non-owner Occupied Commercial Real Estate | Noncovered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         359us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
        359us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
 
PCI loans collectively evaluated for impairment 353us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
              353us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
Non-owner Occupied Commercial Real Estate | Covered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         2,073us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
        2,073us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
 
PCI loans collectively evaluated for impairment 2,107us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
              2,107us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_NonOwnerOccupiedCommercialRealEstateMember
   
One-to-four Family Residential                      
Financing Receivable, Allowance for Credit Losses [Roll Forward]                      
Balance at the beginning of period       1,100us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
      1,221us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
1,100us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
1,221us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
794us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
Schedule of allowance for loan losses on the basis of impairment method                      
Charge-offs                 (31)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
(52)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
(391)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
Recoveries                 7us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
Provisions for / (reallocation of) loan losses                 124us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
(69)us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
818us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
Balance at the end of period 1,200us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
      1,100us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
      1,200us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
1,100us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
1,221us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
One-to-four Family Residential | Noncovered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 75us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
      75us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
 
Collectively evaluated for impairment 530us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
      570us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
      530us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
570us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
 
One-to-four Family Residential | Covered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
      31us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
31us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
 
Collectively evaluated for impairment 8us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
      13us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
      8us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
13us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
 
One-to-four Family Residential | Noncovered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         216us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
        216us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
 
PCI loans collectively evaluated for impairment 207us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
              207us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
One-to-four Family Residential | Covered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         270us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
        270us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
 
PCI loans collectively evaluated for impairment 380us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
              380us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_OneToFourFamilyResidentialMember
   
Real Estate Construction and Land Development: One-to-four Family Residential                      
Financing Receivable, Allowance for Credit Losses [Roll Forward]                      
Balance at the beginning of period       1,720us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
      3,131us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
1,720us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
3,131us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
4,823us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
Schedule of allowance for loan losses on the basis of impairment method                      
Charge-offs                 (345)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
(423)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
(835)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
Recoveries                 43us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
125us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
Provisions for / (reallocation of) loan losses                 368us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
(988)us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
(982)us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
Balance at the end of period 1,786us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
      1,720us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
      1,786us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
1,720us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
3,131us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
Real Estate Construction and Land Development: One-to-four Family Residential | Noncovered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 396us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
      211us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
      396us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
211us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
 
Collectively evaluated for impairment 322us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
      429us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
      322us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
429us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
 
Real Estate Construction and Land Development: One-to-four Family Residential | Covered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 51us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
      51us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
 
Collectively evaluated for impairment 0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
 
Real Estate Construction and Land Development: One-to-four Family Residential | Noncovered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         291us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
        291us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
 
PCI loans collectively evaluated for impairment 264us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
              264us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
   
Real Estate Construction and Land Development: One-to-four Family Residential | Covered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         789us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
        789us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
 
PCI loans collectively evaluated for impairment 753us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
              753us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentOneToFourFamilyResidentialMember
   
Real Estate Construction and Land Development: Five or More Family Residential and Commercial Properties                      
Financing Receivable, Allowance for Credit Losses [Roll Forward]                      
Balance at the beginning of period       953us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
      2,309us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
953us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
2,309us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
3,800us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
Schedule of allowance for loan losses on the basis of impairment method                      
Charge-offs                 0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
(142)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
(445)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
Recoveries                 0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
32us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
Provisions for / (reallocation of) loan losses                 19us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
(1,246)us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
(1,046)us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
Balance at the end of period 972us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
      953us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
      972us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
953us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
2,309us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
Real Estate Construction and Land Development: Five or More Family Residential and Commercial Properties | Noncovered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 234us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
      234us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
 
Collectively evaluated for impairment 650us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
      855us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
      650us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
855us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
 
Real Estate Construction and Land Development: Five or More Family Residential and Commercial Properties | Covered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
 
Collectively evaluated for impairment 0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
 
Real Estate Construction and Land Development: Five or More Family Residential and Commercial Properties | Noncovered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         98us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
        98us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
 
PCI loans collectively evaluated for impairment 88us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
              88us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
   
Real Estate Construction and Land Development: Five or More Family Residential and Commercial Properties | Covered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
        0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
 
PCI loans collectively evaluated for impairment 0us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
              0us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_RealEstateConstructionAndLandDevelopmentFiveOrMoreFamilyResidentialAndCommercialPropertiesMember
   
Consumer                      
Financing Receivable, Allowance for Credit Losses [Roll Forward]                      
Balance at the beginning of period       1,597us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
      1,761us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
1,597us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
1,761us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
1,410us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
Schedule of allowance for loan losses on the basis of impairment method                      
Charge-offs                 (969)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
(681)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
(677)us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
Recoveries                 142us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
89us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
33us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
Provisions for / (reallocation of) loan losses                 1,999us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
428us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
995us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
Balance at the end of period 2,769us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
      1,597us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
      2,769us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
1,597us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
1,761us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
Consumer | Noncovered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 56us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
      153us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
      56us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
153us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
 
Collectively evaluated for impairment 1,931us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
      575us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
      1,931us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
575us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
 
Consumer | Covered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 2us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
      2us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
 
Collectively evaluated for impairment 12us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
      57us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
      12us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
57us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
 
Consumer | Noncovered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         638us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
        638us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
 
PCI loans collectively evaluated for impairment 617us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
              617us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
   
Consumer | Covered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         174us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
        174us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
 
PCI loans collectively evaluated for impairment 151us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
              151us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_ConsumerMember
   
Unallocated                      
Financing Receivable, Allowance for Credit Losses [Roll Forward]                      
Balance at the beginning of period       601us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
      870us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
601us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
870us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
910us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
Schedule of allowance for loan losses on the basis of impairment method                      
Charge-offs                 0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
0us-gaap_AllowanceForLoanAndLeaseLossesWriteOffs
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
Recoveries                 0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
0us-gaap_AllowanceForLoanAndLeaseLossRecoveryOfBadDebts
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
Provisions for / (reallocation of) loan losses                 215us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
(269)us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
(40)us-gaap_ProvisionForLoanAndLeaseLosses
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
Balance at the end of period 816us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
      601us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
      816us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
601us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
870us-gaap_LoansAndLeasesReceivableAllowance
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
Unallocated | Noncovered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
 
Collectively evaluated for impairment 816us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
      601us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
      816us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
601us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_NoncoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
 
Unallocated | Covered Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Individually evaluated for impairment 0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesIndividuallyEvaluatedForImpairment1
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
 
Collectively evaluated for impairment 0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
      0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_CoveredloansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
 
Unallocated | Noncovered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
        0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
 
PCI loans collectively evaluated for impairment 0us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
              0us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherNonCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
   
Unallocated | Covered PCI Loans                      
Schedule of allowance for loan losses on the basis of impairment method                      
Collectively evaluated for impairment         0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
        0us-gaap_FinancingReceivableAllowanceForCreditLossesCollectivelyEvaluatedForImpairment
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
 
PCI loans collectively evaluated for impairment $ 0us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember
              $ 0us-gaap_FinancingReceivableAllowanceForCreditLossesAcquiredWithDeterioratedCreditQuality
/ us-gaap_FinancingReceivableRecordedInvestmentByClassOfFinancingReceivableAxis
= hfwa_PurchasedOtherCoveredLoansMember
/ us-gaap_StatementBusinessSegmentsAxis
= hfwa_UnallocatedMember