XML 88 R90.htm IDEA: XBRL DOCUMENT v2.4.1.9
Employee Benefit Plans Fair Value (Details) (USD $)
In Thousands, unless otherwise specified
12 Months Ended
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [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
 
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
 
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | US Small Midcap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | US Small Midcap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | S&P 500 Index [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | US Large Cap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | US Large Cap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | US Large Cap Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | Non US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | Emerging Markets [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Passive Bond Market [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Long Duration [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Long Duration Investment Grade [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Long Duration Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Opportunistic [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Non US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Active Long Corporate [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [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
 
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | US Small Midcap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | US Small Midcap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | S&P 500 Index [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | US Large Cap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | US Large Cap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | US Large Cap Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | Non US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | Emerging Markets [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Passive Bond Market [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Long Duration [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Long Duration Investment Grade [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Long Duration Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Opportunistic [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Non US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Active Long Corporate [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [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
 
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | US Small Midcap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | US Small Midcap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | S&P 500 Index [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | US Large Cap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | US Large Cap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | US Large Cap Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | Non US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | Emerging Markets [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Passive Bond Market [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Long Duration [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Long Duration Investment Grade [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Long Duration Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Opportunistic [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Non US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Active Long Corporate [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [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
 
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | US Small Midcap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | US Small Midcap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | S&P 500 Index [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | US Large Cap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | US Large Cap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | US Large Cap Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | Non US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | Emerging Markets [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Passive Bond Market [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Long Duration [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Long Duration Investment Grade [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Long Duration Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Opportunistic [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Non US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Other Postretirement Benefit Plan [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Active Long Corporate [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
Employer contributions 8,700us-gaap_DefinedBenefitPlanContributionsByEmployer
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
7,800us-gaap_DefinedBenefitPlanContributionsByEmployer
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
7,200us-gaap_DefinedBenefitPlanContributionsByEmployer
/ us-gaap_DefinedBenefitPlansDisclosuresDefinedBenefitPlansAxis
= us-gaap_PensionPlansDefinedBenefitMember
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [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
 
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
 
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | US Small Midcap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | US Small Midcap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | US Large Cap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | US Large Cap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | US Large Cap Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | Non US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Equity Securities [Member] | Emerging Markets [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Long Duration [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Long Duration Investment Grade [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Long Duration Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Opportunistic [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Non US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Active Long Corporate [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Estimate of Fair Value Measurement [Member] | Debt Securities [Member] | Participating Group Annuity Contract [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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]  
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [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
 
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | US Small Midcap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | US Small Midcap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | US Large Cap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | US Large Cap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | US Large Cap Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | Non US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Equity Securities [Member] | Emerging Markets [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Long Duration [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Long Duration Investment Grade [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Long Duration Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Opportunistic [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Non US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Active Long Corporate [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 1 [Member] | Debt Securities [Member] | Participating Group Annuity Contract [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [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
 
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | US Small Midcap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | US Small Midcap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | US Large Cap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | US Large Cap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | US Large Cap Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | Non US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Equity Securities [Member] | Emerging Markets [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Long Duration [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Long Duration Investment Grade [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Long Duration Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Opportunistic [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Non US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Active Long Corporate [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 2 [Member] | Debt Securities [Member] | Participating Group Annuity Contract [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [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
 
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | US Small Midcap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | US Small Midcap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | US Large Cap Growth [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | US Large Cap Value [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | US Large Cap Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | Non US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Equity Securities [Member] | Emerging Markets [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | US Core [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Long Duration [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Long Duration Investment Grade [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Long Duration Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Opportunistic [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Non US Passive [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Active Long Corporate [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
Defined Contribution Pension [Member] | Fair Value, Inputs, Level 3 [Member] | Debt Securities [Member] | Participating Group Annuity Contract [Member]      
Defined Benefit Plans and Other Postretirement Benefit Plans Table Text Block [Line Items]      
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
 
[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.