XML 29 R89.htm IDEA: XBRL DOCUMENT v2.4.1.9
Employee Benefit Plans Investment Strategy (Details) (USD $)
In Thousands, unless otherwise specified
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]    
Target asset allocation allowable range of plus or minus 5.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocationsRangeMaximum  
Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 100.00%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
100.00%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
Cash and Cash Equivalents [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 0.20%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_CashAndCashEquivalentsMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
1.80%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_CashAndCashEquivalentsMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
Debt Securities [Member] | Pension Plan [Member] | Domestic [Member]    
Defined Benefit Plan, Assets, Target Allocations [Abstract]    
Target allocation of investments by plan 55.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
60.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
Debt Securities [Member] | Pension Plan [Member] | International [Member]    
Defined Benefit Plan, Assets, Target Allocations [Abstract]    
Target allocation of investments by plan 5.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
5.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
Debt Securities [Member] | Other Postretirement Benefit Plan [Member] | Domestic [Member]    
Defined Benefit Plan, Assets, Target Allocations [Abstract]    
Target allocation of investments by plan 40.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
40.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 37.20%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
38.60%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
Debt Securities [Member] | Other Postretirement Benefit Plan [Member] | International [Member]    
Defined Benefit Plan, Assets, Target Allocations [Abstract]    
Target allocation of investments by plan 0.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
0.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 0.00%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
0.30%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
Equity Securities [Member] | Pension Plan [Member] | Domestic [Member]    
Defined Benefit Plan, Assets, Target Allocations [Abstract]    
Target allocation of investments by plan 34.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
30.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
Equity Securities [Member] | Pension Plan [Member] | International [Member]    
Defined Benefit Plan, Assets, Target Allocations [Abstract]    
Target allocation of investments by plan 6.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
5.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
Equity Securities [Member] | Other Postretirement Benefit Plan [Member] | Domestic [Member]    
Defined Benefit Plan, Assets, Target Allocations [Abstract]    
Target allocation of investments by plan 50.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
50.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 53.90%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
50.10%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
Equity Securities [Member] | Other Postretirement Benefit Plan [Member] | International [Member]    
Defined Benefit Plan, Assets, Target Allocations [Abstract]    
Target allocation of investments by plan 10.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
10.00%us-gaap_DefinedBenefitPlanTargetPlanAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 8.70%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
9.20%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
SOUTH DAKOTA | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 100.00%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
100.00%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
SOUTH DAKOTA | Cash and Cash Equivalents [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 0.10%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_CashAndCashEquivalentsMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
0.10%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_CashAndCashEquivalentsMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
SOUTH DAKOTA | Debt Securities [Member] | Pension Plan [Member] | Domestic [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 65.60%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
64.70%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
SOUTH DAKOTA | Debt Securities [Member] | Pension Plan [Member] | International [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 4.50%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
4.90%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
SOUTH DAKOTA | Equity Securities [Member] | Pension Plan [Member] | Domestic [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 25.10%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
25.30%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
SOUTH DAKOTA | Equity Securities [Member] | Pension Plan [Member] | International [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 4.70%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
5.00%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
/ us-gaap_StatementGeographicalAxis
= stpr_SD
MONTANA | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 100.00%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
100.00%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
MONTANA | Cash and Cash Equivalents [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 0.00%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_CashAndCashEquivalentsMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
0.00%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_CashAndCashEquivalentsMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
MONTANA | Debt Securities [Member] | Pension Plan [Member] | Domestic [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 56.00%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
58.60%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
MONTANA | Debt Securities [Member] | Pension Plan [Member] | International [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 4.40%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
4.90%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
MONTANA | Equity Securities [Member] | Pension Plan [Member] | Domestic [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 34.10%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
31.40%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_DomesticMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
MONTANA | Equity Securities [Member] | Pension Plan [Member] | International [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Actual allocation of investments by plan 5.50%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
5.10%us-gaap_DefinedBenefitPlanWeightedAverageAssetAllocations
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ invest_InvestmentGeographicRegionAxis
= nwe_InternationalMember
/ us-gaap_StatementGeographicalAxis
= stpr_MT
Fair Value, Inputs, Level 1 [Member] | Pension Plan [Member]    
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]    
Cash and cash equivalents 0us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
0us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
Fair Value, Inputs, Level 1 [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]    
Cash and cash equivalents 0us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
0us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
Fair Value, Inputs, Level 1 [Member] | US Small Midcap Growth [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
Fair Value, Inputs, Level 1 [Member] | US Small Midcap Growth [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
Fair Value, Inputs, Level 1 [Member] | US Small Midcap Value [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
Fair Value, Inputs, Level 1 [Member] | US Small Midcap Value [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
Fair Value, Inputs, Level 1 [Member] | S&P 500 Index [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_Sandp500IndexMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_Sandp500IndexMember
Fair Value, Inputs, Level 1 [Member] | US Large Cap Growth [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
Fair Value, Inputs, Level 1 [Member] | US Large Cap Growth [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
Fair Value, Inputs, Level 1 [Member] | US Large Cap Value [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
Fair Value, Inputs, Level 1 [Member] | US Large Cap Value [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
Fair Value, Inputs, Level 1 [Member] | US Large Cap Passive [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
Fair Value, Inputs, Level 1 [Member] | US Large Cap Passive [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
Fair Value, Inputs, Level 1 [Member] | Non US Core [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
Fair Value, Inputs, Level 1 [Member] | Non US Core [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
Fair Value, Inputs, Level 1 [Member] | Emerging Markets [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
Fair Value, Inputs, Level 1 [Member] | Emerging Markets [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
Fair Value, Inputs, Level 1 [Member] | Passive Bond Market [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_PassiveBondMarketMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_PassiveBondMarketMember
Fair Value, Inputs, Level 1 [Member] | US Core Opportunistic [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
Fair Value, Inputs, Level 1 [Member] | US Core Opportunistic [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
Fair Value, Inputs, Level 1 [Member] | US Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
Fair Value, Inputs, Level 1 [Member] | US Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
Fair Value, Inputs, Level 1 [Member] | Long Duration [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
Fair Value, Inputs, Level 1 [Member] | Long Duration [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
Fair Value, Inputs, Level 1 [Member] | Long Duration Investment Grade [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
Fair Value, Inputs, Level 1 [Member] | Long Duration Investment Grade [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
Fair Value, Inputs, Level 1 [Member] | Long Duration Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
Fair Value, Inputs, Level 1 [Member] | Long Duration Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
Fair Value, Inputs, Level 1 [Member] | Opportunistic [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
Fair Value, Inputs, Level 1 [Member] | Opportunistic [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
Fair Value, Inputs, Level 1 [Member] | Non US Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
Fair Value, Inputs, Level 1 [Member] | Non US Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
Fair Value, Inputs, Level 1 [Member] | Active Long Corporate [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
Fair Value, Inputs, Level 1 [Member] | Active Long Corporate [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
Fair Value, Inputs, Level 1 [Member] | Participating Group Annuity Contract [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ParticipatingGroupAnnuityContractMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ParticipatingGroupAnnuityContractMember
Fair Value, Inputs, Level 2 [Member] | Pension Plan [Member]    
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]    
Cash and cash equivalents 126us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
168us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 556,051us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
516,352us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
Fair Value, Inputs, Level 2 [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]    
Cash and cash equivalents 44us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
318us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 18,040us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
18,183us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
Fair Value, Inputs, Level 2 [Member] | US Small Midcap Growth [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 16,605us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
[1] 13,764us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
Fair Value, Inputs, Level 2 [Member] | US Small Midcap Growth [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 752us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
[1] 751us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
Fair Value, Inputs, Level 2 [Member] | US Small Midcap Value [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 15,264us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
[1] 13,664us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
Fair Value, Inputs, Level 2 [Member] | US Small Midcap Value [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 721us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
[1] 736us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
Fair Value, Inputs, Level 2 [Member] | S&P 500 Index [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 8,234us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_Sandp500IndexMember
[1] 7,321us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_Sandp500IndexMember
Fair Value, Inputs, Level 2 [Member] | US Large Cap Growth [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 48,560us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
[1] 42,094us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
Fair Value, Inputs, Level 2 [Member] | US Large Cap Growth [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 6us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
[1] 98us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
Fair Value, Inputs, Level 2 [Member] | US Large Cap Value [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 48,785us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
[1] 42,102us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
Fair Value, Inputs, Level 2 [Member] | US Large Cap Value [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 6us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
[1] 98us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
Fair Value, Inputs, Level 2 [Member] | US Large Cap Passive [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 54,775us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
[1] 47,227us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
Fair Value, Inputs, Level 2 [Member] | US Large Cap Passive [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 7us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
[1] 110us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
Fair Value, Inputs, Level 2 [Member] | Non US Core [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 22,634us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
[1] 20,015us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
Fair Value, Inputs, Level 2 [Member] | Non US Core [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 1,495us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
[1] 1,595us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
Fair Value, Inputs, Level 2 [Member] | Emerging Markets [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 7,650us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
[1] 6,250us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
Fair Value, Inputs, Level 2 [Member] | Emerging Markets [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 72us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
[1] 85us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
Fair Value, Inputs, Level 2 [Member] | Passive Bond Market [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 1,992us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_PassiveBondMarketMember
[2] 1,880us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_PassiveBondMarketMember
Fair Value, Inputs, Level 2 [Member] | US Core Opportunistic [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 23,177us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
[2] 82,639us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
Fair Value, Inputs, Level 2 [Member] | US Core Opportunistic [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 4,435us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
[2] 4,390us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
Fair Value, Inputs, Level 2 [Member] | US Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 12,269us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
[2] 44,762us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
Fair Value, Inputs, Level 2 [Member] | US Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 1us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
[2] 107us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
Fair Value, Inputs, Level 2 [Member] | Long Duration [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 41,451us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
[2] 24,401us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
Fair Value, Inputs, Level 2 [Member] | Long Duration [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 5us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
[2] 55us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
Fair Value, Inputs, Level 2 [Member] | Long Duration Investment Grade [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 52,767us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
32,700us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
Fair Value, Inputs, Level 2 [Member] | Long Duration Investment Grade [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 6us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
[2] 79us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
Fair Value, Inputs, Level 2 [Member] | Long Duration Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 41,475us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
24,122us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
Fair Value, Inputs, Level 2 [Member] | Long Duration Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 5us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
[2] 55us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
Fair Value, Inputs, Level 2 [Member] | Opportunistic [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 5,692us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
5,876us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
Fair Value, Inputs, Level 2 [Member] | Opportunistic [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 240us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
[2] 261us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
Fair Value, Inputs, Level 2 [Member] | Non US Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 24,504us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
[2] 25,150us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
Fair Value, Inputs, Level 2 [Member] | Non US Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 3us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
[2] 57us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
Fair Value, Inputs, Level 2 [Member] | Active Long Corporate [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 133,160us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
[2] 83,147us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
Fair Value, Inputs, Level 2 [Member] | Active Long Corporate [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 16us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
[2] 187us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
Fair Value, Inputs, Level 2 [Member] | Participating Group Annuity Contract [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 7,157us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ParticipatingGroupAnnuityContractMember
[2] 8,271us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ParticipatingGroupAnnuityContractMember
Fair Value, Inputs, Level 3 [Member] | Pension Plan [Member]    
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]    
Cash and cash equivalents 0us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
0us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
Fair Value, Inputs, Level 3 [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]    
Cash and cash equivalents 0us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
0us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
Fair Value, Inputs, Level 3 [Member] | US Small Midcap Growth [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
Fair Value, Inputs, Level 3 [Member] | US Small Midcap Growth [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
Fair Value, Inputs, Level 3 [Member] | US Small Midcap Value [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
Fair Value, Inputs, Level 3 [Member] | US Small Midcap Value [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
Fair Value, Inputs, Level 3 [Member] | S&P 500 Index [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_Sandp500IndexMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_Sandp500IndexMember
Fair Value, Inputs, Level 3 [Member] | US Large Cap Growth [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
Fair Value, Inputs, Level 3 [Member] | US Large Cap Growth [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
Fair Value, Inputs, Level 3 [Member] | US Large Cap Value [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
Fair Value, Inputs, Level 3 [Member] | US Large Cap Value [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
Fair Value, Inputs, Level 3 [Member] | US Large Cap Passive [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
Fair Value, Inputs, Level 3 [Member] | US Large Cap Passive [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
Fair Value, Inputs, Level 3 [Member] | Non US Core [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
Fair Value, Inputs, Level 3 [Member] | Non US Core [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
Fair Value, Inputs, Level 3 [Member] | Emerging Markets [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
Fair Value, Inputs, Level 3 [Member] | Emerging Markets [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
[1] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
Fair Value, Inputs, Level 3 [Member] | Passive Bond Market [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_PassiveBondMarketMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_PassiveBondMarketMember
Fair Value, Inputs, Level 3 [Member] | US Core Opportunistic [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
Fair Value, Inputs, Level 3 [Member] | US Core Opportunistic [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
Fair Value, Inputs, Level 3 [Member] | US Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
Fair Value, Inputs, Level 3 [Member] | US Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
Fair Value, Inputs, Level 3 [Member] | Long Duration [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
Fair Value, Inputs, Level 3 [Member] | Long Duration [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
Fair Value, Inputs, Level 3 [Member] | Long Duration Investment Grade [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
Fair Value, Inputs, Level 3 [Member] | Long Duration Investment Grade [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
Fair Value, Inputs, Level 3 [Member] | Long Duration Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
Fair Value, Inputs, Level 3 [Member] | Long Duration Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
Fair Value, Inputs, Level 3 [Member] | Opportunistic [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
Fair Value, Inputs, Level 3 [Member] | Opportunistic [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
Fair Value, Inputs, Level 3 [Member] | Non US Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
Fair Value, Inputs, Level 3 [Member] | Non US Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
Fair Value, Inputs, Level 3 [Member] | Active Long Corporate [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
Fair Value, Inputs, Level 3 [Member] | Active Long Corporate [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
Fair Value, Inputs, Level 3 [Member] | Participating Group Annuity Contract [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ParticipatingGroupAnnuityContractMember
[2] 0us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ParticipatingGroupAnnuityContractMember
Estimate of Fair Value Measurement [Member] | Pension Plan [Member]    
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]    
Cash and cash equivalents 126us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
168us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 556,051us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
516,352us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
Estimate of Fair Value Measurement [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]    
Cash and cash equivalents 44us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
318us-gaap_CashAndCashEquivalentsFairValueDisclosure
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 18,040us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
18,183us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
Estimate of Fair Value Measurement [Member] | US Small Midcap Growth [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 16,605us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
[1] 13,764us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
[1]
Estimate of Fair Value Measurement [Member] | US Small Midcap Growth [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 752us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
[1] 751us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapGrowthMember
[1]
Estimate of Fair Value Measurement [Member] | US Small Midcap Value [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 15,264us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
[1] 13,664us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
[1]
Estimate of Fair Value Measurement [Member] | US Small Midcap Value [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 721us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
[1] 736us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsSmallMidcapValueMember
[1]
Estimate of Fair Value Measurement [Member] | S&P 500 Index [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 8,234us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_Sandp500IndexMember
[1] 7,321us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_Sandp500IndexMember
[1]
Estimate of Fair Value Measurement [Member] | US Large Cap Growth [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 48,560us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
[1] 42,094us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
[1]
Estimate of Fair Value Measurement [Member] | US Large Cap Growth [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 6us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
[1] 98us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapGrowthMember
[1]
Estimate of Fair Value Measurement [Member] | US Large Cap Value [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 48,785us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
[1] 42,102us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
[1]
Estimate of Fair Value Measurement [Member] | US Large Cap Value [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 6us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
[1] 98us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapValueMember
[1]
Estimate of Fair Value Measurement [Member] | US Large Cap Passive [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 54,775us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
[1] 47,227us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
[1]
Estimate of Fair Value Measurement [Member] | US Large Cap Passive [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 7us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
[1] 110us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsLargeCapPassiveMember
[1]
Estimate of Fair Value Measurement [Member] | Non US Core [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 22,634us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
[1] 20,015us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
[1]
Estimate of Fair Value Measurement [Member] | Non US Core [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 1,495us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
[1] 1,595us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsCoreMember
[1]
Estimate of Fair Value Measurement [Member] | Emerging Markets [Member] | Equity Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 7,650us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
[1] 6,250us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
Estimate of Fair Value Measurement [Member] | Emerging Markets [Member] | Equity Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 72us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
[1] 85us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_EquitySecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_EmergingMarketsMember
Estimate of Fair Value Measurement [Member] | Passive Bond Market [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 1,992us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_PassiveBondMarketMember
[2] 1,880us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_PassiveBondMarketMember
[2]
Estimate of Fair Value Measurement [Member] | US Core Opportunistic [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 23,177us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
[2] 82,639us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
[2]
Estimate of Fair Value Measurement [Member] | US Core Opportunistic [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 4,435us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
[2] 4,390us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsCoreOpportunisticMember
[2]
Estimate of Fair Value Measurement [Member] | US Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 12,269us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
[2] 44,762us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
[2]
Estimate of Fair Value Measurement [Member] | US Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 1us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
[2] 107us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_UsPassiveMember
[2]
Estimate of Fair Value Measurement [Member] | Long Duration [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 41,451us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
[2] 24,401us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
[2]
Estimate of Fair Value Measurement [Member] | Long Duration [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 5us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
[2] 55us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationMember
[2]
Estimate of Fair Value Measurement [Member] | Long Duration Investment Grade [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 52,767us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
[2] 32,700us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
[2]
Estimate of Fair Value Measurement [Member] | Long Duration Investment Grade [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 6us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
[2] 79us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationInvestmentGradeMember
[2]
Estimate of Fair Value Measurement [Member] | Long Duration Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 41,475us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
[2] 24,122us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
[2]
Estimate of Fair Value Measurement [Member] | Long Duration Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 5us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
[2] 55us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_LongDurationPassiveMember
[2]
Estimate of Fair Value Measurement [Member] | Opportunistic [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 5,692us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
[2] 5,876us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
[2]
Estimate of Fair Value Measurement [Member] | Opportunistic [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 240us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
[2] 261us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_OpportunisticMember
[2]
Estimate of Fair Value Measurement [Member] | Non US Passive [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 24,504us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
[2] 25,150us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
[2]
Estimate of Fair Value Measurement [Member] | Non US Passive [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 3us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
[2] 57us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_NonUsPassiveMember
[2]
Estimate of Fair Value Measurement [Member] | Active Long Corporate [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 133,160us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
[2] 83,147us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
[2]
Estimate of Fair Value Measurement [Member] | Active Long Corporate [Member] | Debt Securities [Member] | Other Postretirement Benefit Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 16us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
[2] 187us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_OtherPostretirementBenefitPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ActiveLongCorporateMember
[2]
Estimate of Fair Value Measurement [Member] | Participating Group Annuity Contract [Member] | Debt Securities [Member] | Pension Plan [Member]    
Defined Benefit Plan, Actual Asset Allocations [Abstract]    
Available-for-sale Securities 7,157us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ParticipatingGroupAnnuityContractMember
[2] 8,271us-gaap_AvailableForSaleSecurities
/ us-gaap_DefinedBenefitPlanByPlanAssetCategoriesAxis
= us-gaap_DebtSecuritiesMember
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
/ us-gaap_FairValueByMeasurementBasisAxis
= us-gaap_EstimateOfFairValueFairValueDisclosureMember
/ us-gaap_MajorTypesOfDebtAndEquitySecuritiesAxis
= nwe_ParticipatingGroupAnnuityContractMember
[2]
[1] This category consists of active and passive managed equity funds, which are invested in multiple strategies to diversify risks and reduce volatility.
[2] This category consists of investment grade bonds of issuers from diverse industries, debt securities issued by international, national, state and local governments, and asset-backed securities. This includes both active and passive managed funds.