out_eia__yearly_plant_parts

package: pudl

Annual time series of all EIA plant parts, for use in matching to FERC 1.

Most-recent data:

2026

Processing:

Data has been expanded into a wide/denormalized format, with IDs and codes accompanied by human-readable names and descriptions.

Source:

EIA -- Mix of multiple EIA Forms

Primary key:

record_id_eia

Usage Warnings

  • Some columns contain subtotals; use caution when choosing columns to aggregate.

  • Data has been drawn from several EIA sources which are not always consistent with each other, and PUDL chooses the most consistent or relevant value to facilitate cross-referencing even if that means some values will differ from the raw sources. See Harvesting for details, and see Entity Resolution Methodology for a fuller conceptual overview.

  • Contains information from multiple raw inputs.

Additional Details

Practically speaking, a plant is a collection of generator(s). There are many attributes of generators (i.e. prime mover, primary fuel source, technology type). We can use these generator attributes to group generator records into larger aggregate records which we call "plant parts". A plant part is a record which corresponds to a particular collection of generators that all share an identical attribute and utility owner. E.g. all of the generators with unit_id=2, or all of the generators with coal as their primary fuel source.

The EIA data about power plants (from EIA 923 and 860) is reported in tables with records that correspond to mostly generators and plants. Other datasets (cough cough FERC1) are less well organized and include plants, generators and other plant parts all in the same table without any clear labels. This plant part table is an attempt to create records corresponding to many different plant parts in order to connect specific slices of EIA plants to other datasets.

Because generators are often owned by multiple utilities, another dimension of this plant part table involves generating two records for each owner: one for the portion of the plant part they own and one for the plant part as a whole. The portion records are labeled in the ownership_record_type column as owned and the total records are labeled as total.

This table includes A LOT of duplicative information about EIA plants. It is primarily meant for use as an input into the record linkage between FERC1 plants and EIA.

This table inherits canonicalized values for generators, plants, and utilities. EIA reports many attributes in many different tables across EIA-860 and EIA-923. In order to compile tidy, well-normalized database tables, PUDL collects all instances of these values and and chooses a canonical value. By default, PUDL chooses the most consistently reported value of a given attribute as long as it is at least 70% of the given instances reported. If an attribute was reported inconsistently across the original EIA tables, then it will show up as a null value. See /methodology/entity_resolution for a conceptual overview of this process.

Columns
record_id_eia

Identifier for EIA plant parts analysis records.

plant_id_eia

The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.

report_date

Date reported.

plant_part

The part of the plant a record corresponds to.

generator_id

Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!

unit_id_pudl

Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.

prime_mover_code

Code for the type of prime mover (e.g. CT, CG)

energy_source_code_1

The code representing the most predominant type of energy that fuels the generator.

technology_description

High level description of the technology used by the generator to produce electricity.

ferc_acct_name

Name of FERC account, derived from technology description and prime mover code.

utility_id_eia

The EIA Utility Identification number.

true_gran

Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.

appro_part_label

Plant part of the associated true granularity record.

appro_record_id_eia

EIA record ID of the associated true granularity record.

ferc1_generator_agg_id

ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process. The ID is manually assigned and has not been updated since 2020, but only affects a couple hundred records total across all years.

capacity_eoy_mw

Total end of year installed (nameplate) capacity for a plant part, in megawatts.

capacity_factor

Fraction of potential generation that was actually reported for a plant part. Energy generated over time period / nameplate capacity * time period (hours/years/etc.).

capacity_mw

Total installed (nameplate) capacity, in megawatts.

construction_year

Year the plant's oldest still operational unit was built.

fraction_owned

Proportion of generator ownership attributable to this utility.

fuel_cost_per_mmbtu

Average fuel cost per MMBTU of heat content in nominal USD.

fuel_cost_per_mwh

Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.

fuel_type_code_pudl

Simplified fuel type code used in PUDL

generator_retirement_date

Date of the scheduled or effected retirement of the generator.

unit_heat_rate_mmbtu_per_mwh

Fuel content per unit of electricity generated. Coming from MCOE calculation.

installation_year

Year the plant's most recently built unit was installed.

net_generation_mwh

Net electricity generation for the specified period in megawatt-hours (MWh).

generator_operating_year

Year a generator went into service.

operational_status

The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.

operational_status_pudl

The operating status of the asset using PUDL categories.

ownership_record_type

Whether each generator record is for one owner or represents a total of all ownerships.

ownership_dupe

Whether a plant part record has a duplicate record with different ownership status.

planned_generator_retirement_date

Planned effective date of the scheduled retirement of the generator.

plant_id_pudl

A manually assigned PUDL plant ID. May not be constant over time.

plant_name_eia

Plant name.

plant_name_ppe

Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.

plant_part_id_eia

Contains EIA plant ID, plant part, ownership, and EIA utility id

record_count

Number of distinct generator IDs that participated in the aggregation for a plant part list record.

total_fuel_cost

Total annual reported fuel costs for the plant part. Includes costs from all fuels.

total_mmbtu

Total annual heat content of fuel consumed by a plant part record in the plant parts list.

utility_id_pudl

A manually assigned PUDL utility ID. May not be stable over time.

utility_name_eia

The name of the utility.

report_year

Four-digit year in which the data was reported.

plant_id_report_year

PUDL plant ID and report year of the record.

out_eia__yearly_assn_plant_parts_plant_gen

package: pudl

Annual Association table providing connections between plant parts (identified as record_id_eia) and 'plant_gen' records (identified as record_id_eia_plant_gen) from the out_eia__yearly_plant_parts table.

Most-recent data:

2026

Processing:

Data is ready for use in analyses, but for practical reasons has not been denormalized and remains in narrow format.

Source:

EIA -- Mix of multiple EIA Forms

Primary key:

record_id_eia, record_id_eia_plant_gen

Usage Warnings

  • Some columns contain subtotals; use caution when choosing columns to aggregate.

  • Contains information from multiple raw inputs.

Additional Details

The purpose of this table is to help determine what generator records are associated with every plant part record. The plant part records have a one to many relationship to the associated 'plant_gen' records. The 'plant_gen' records are also included in the plant part records, so for these records there is a one to one relationship and the record_id_eia and the record_id_eia_plant_gen are the same.

All of the columns in this table that have a suffix of '_plant_gen' are attributes of the record_id_eia_plant_gen record.

Columns
record_id_eia

Identifier for EIA plant parts analysis records.

record_id_eia_plant_gen

Identifier for EIA plant parts analysis records which is at the plant_part level of plant_gen - meaning each record pertains to one generator.

report_date

Date reported.

plant_id_eia

The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.

utility_id_eia

The EIA Utility Identification number.

ownership_record_type

Whether each generator record is for one owner or represents a total of all ownerships.

generator_id_plant_gen

Generator ID of the record_id_eia_plant_gen record. This is usually numeric, but sometimes includes letters. Make sure you treat it as a string!

energy_source_code_1_plant_gen

Code representing the most predominant type of energy that fuels the record_id_eia_plant_gen's generator.

prime_mover_code_plant_gen

Code for the type of prime mover (e.g. CT, CG) associated with the record_id_eia_plant_gen.

unit_id_pudl_plant_gen

Dynamically assigned PUDL unit id of the record_id_eia_plant_gen. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.

technology_description_plant_gen

High level description of the technology used by the record_id_eia_plant_gen's generator to produce electricity.

ferc_acct_name_plant_gen

Name of FERC account, derived from technology description and prime mover code. This name is associated with the record_id_eia_plant_gen record.

ferc1_generator_agg_id_plant_gen

ID dynamically assigned by PUDL to EIA records with multiple matches to a single FERC ID in the FERC-EIA manual matching process. This ID is associated with the record_id_eia_plant_gen record. It depends on ferc1_generator_agg_id, which has not been updated since 2020, but only affects a couple hundred records total across all years.

generator_operating_year_plant_gen

The year an associated plant_gen's generator went into service.

operational_status_pudl_plant_gen

The operating status of the asset using PUDL categories of the record_id_eia_plant_gen record .

generators_number

The number of generators associated with each record_id_eia.

out_pudl__yearly_assn_eia_ferc1_plant_parts

package: pudl

Annual Association table providing connections between power plant data reported in FERC Form 1 and any available EIA data related to the plant parts covered by each FERC Form 1 record.

Most-recent data:

2025

Processing:

Data has been expanded into a wide/denormalized format, with IDs and codes accompanied by human-readable names and descriptions.

Source:

The Public Utility Data Liberation (PUDL) Project

Primary key:

record_id_ferc1

Usage Warnings

  • Data has been drawn from several EIA sources which are not always consistent with each other, and PUDL chooses the most consistent or relevant value to facilitate cross-referencing even if that means some values will differ from the raw sources. See Harvesting for details, and see Entity Resolution Methodology for a fuller conceptual overview.

  • Contains information from multiple raw inputs.

  • FERC data is notoriously difficult to extract cleanly, and often contains free-form strings, non-labeled total rows and lack of IDs. See Notable Irregularities for details.

Additional Details

This table answers the question "What EIA data reported about plants or generators should be associated with a given plant record found in the FERC Form 1?"

Each record in this table corresponds to a single FERC Form 1 record reported in one of several tables describing power plants (large steam, hydro, small, etc.). These FERC records can correspond to an entire plant, individual generators within a plant, all generators in a plant with the same prime mover type, or just the respondent's ownership share of any of those categories (or other categories). Furthermore, the same utility may report the same plant in different ways in different years.

The EIA data associated with each FERC plant record comes from our Plant Parts EIA table, out_eia__yearly_plant_parts. The EIA data in each record represents an aggregation of several slices of an EIA plant, across both physical characteristics and utility ownership.

This table inherits canonicalized values for generators and plants. EIA reports many attributes in many different tables across EIA-860 and EIA-923. In order to compile tidy, well-normalized database tables, PUDL collects all instances of these values and and chooses a canonical value. By default, PUDL chooses the most consistently reported value of a given attribute as long as it is at least 70% of the given instances reported. If an attribute was reported inconsistently across the original EIA tables, then it will show up as a null value. See /methodology/entity_resolution for a conceptual overview of this process.

Columns
record_id_ferc1

Identifier indicating original FERC Form 1 source record. format: {table_name}_{report_year}_{report_prd}_{respondent_id}_{spplmnt_num}_{row_number}. Unique within FERC Form 1 DB tables which are not row-mapped.

record_id_eia

Identifier for EIA plant parts analysis records.

match_type

Indicates the source and validation of the match between EIA and FERC. Match types include matches was generated from the model, verified by the training data, overridden by the training data, etc.

plant_name_ppe

Derived plant name that includes EIA plant name and other strings associated with ID and PK columns of the plant part.

plant_part

The part of the plant a record corresponds to.

report_year

Four-digit year in which the data was reported.

report_date

Date reported.

ownership_record_type

Whether each generator record is for one owner or represents a total of all ownerships.

plant_name_eia

Plant name.

plant_id_eia

The unique six-digit facility identification number, also called an ORISPL, assigned by the Energy Information Administration.

generator_id

Generator ID is usually numeric, but sometimes includes letters. Make sure you treat it as a string!

unit_id_pudl

Dynamically assigned PUDL unit id. WARNING: This ID is not guaranteed to be static long term as the input data and algorithm may evolve over time.

prime_mover_code

Code for the type of prime mover (e.g. CT, CG)

energy_source_code_1

The code representing the most predominant type of energy that fuels the generator.

technology_description

High level description of the technology used by the generator to produce electricity.

ferc_acct_name

Name of FERC account, derived from technology description and prime mover code.

generator_operating_year

Year a generator went into service.

utility_id_eia

The EIA Utility Identification number.

utility_id_pudl

A manually assigned PUDL utility ID. May not be stable over time.

true_gran

Indicates whether a plant part list record is associated with the highest priority plant part for all identical records.

appro_part_label

Plant part of the associated true granularity record.

appro_record_id_eia

EIA record ID of the associated true granularity record.

record_count

Number of distinct generator IDs that participated in the aggregation for a plant part list record.

fraction_owned

Proportion of generator ownership attributable to this utility.

ownership_dupe

Whether a plant part record has a duplicate record with different ownership status.

operational_status

The operating status of the asset. For generators this is based on which tab the generator was listed in in EIA 860.

operational_status_pudl

The operating status of the asset using PUDL categories.

plant_id_pudl

A manually assigned PUDL plant ID. May not be constant over time.

total_fuel_cost_eia

Total annual reported fuel costs for the plant part. Includes costs from all fuels.

fuel_cost_per_mmbtu_eia

Average fuel cost per MMBTU of heat content in nominal USD.

net_generation_mwh_eia

Net electricity generation for the specified period in megawatt-hours (MWh).

capacity_mw_eia

Total installed (nameplate) capacity, in megawatts.

capacity_factor_eia

Fraction of potential generation that was actually reported for a plant part. Energy generated over time period / nameplate capacity * time period (hours/years/etc.).

total_mmbtu_eia

Total annual heat content of fuel consumed by a plant part record in the plant parts list.

unit_heat_rate_mmbtu_per_mwh_eia

Fuel content per unit of electricity generated. Coming from MCOE calculation.

fuel_type_code_pudl_eia

Simplified fuel type code used in PUDL

installation_year_eia

Year the plant's most recently built unit was installed.

plant_part_id_eia

Contains EIA plant ID, plant part, ownership, and EIA utility id

utility_id_ferc1

PUDL-assigned utility ID, identifying a FERC1 utility. This is an auto-incremented ID and is not expected to be stable from year to year.

utility_name_ferc1

Name of the responding utility, as it is reported in FERC Form 1. For human readability only.

plant_id_ferc1

Algorithmically assigned PUDL FERC Plant ID. WARNING: NOT STABLE BETWEEN PUDL DB INITIALIZATIONS.

plant_name_ferc1

Name of the plant, as reported to FERC. This is a freeform string, not guaranteed to be consistent across references to the same plant.

asset_retirement_cost

Asset retirement cost (USD).

avg_num_employees

The average number of employees assigned to each plant.

capacity_factor_ferc1

Fraction of potential generation that was actually reported for a plant part. Energy generated over time period / nameplate capacity * time period (hours/years/etc.).

capacity_mw_ferc1

Total installed (nameplate) capacity, in megawatts.

capex_annual_addition

Annual capital addition into capex_total.

capex_annual_addition_rolling

Year-to-date capital addition into capex_total.

capex_annual_per_kw

Annual capital addition into capex_total per kw.

capex_annual_per_mw

Annual capital addition into capex_total per MW.

capex_annual_per_mw_rolling

Year-to-date capital addition into capex_total per MW.

capex_annual_per_mwh

Annual capital addition into capex_total per MWh.

capex_annual_per_mwh_rolling

Year-to-date capital addition into capex_total per MWh.

capex_equipment

Cost of plant: equipment (USD).

capex_land

Cost of plant: land and land rights (USD).

capex_per_mw

Cost of plant per megawatt of installed (nameplate) capacity. Nominal USD.

capex_structures

Cost of plant: structures and improvements (USD).

capex_total

Total cost of plant (USD).

capex_wo_retirement_total

Total cost of plant (USD) without retirements.

construction_type

Type of plant construction ('outdoor', 'semioutdoor', or 'conventional'). Categorized by PUDL based on our best guess of intended value in FERC1 freeform strings.

construction_year_eia

Year the plant's oldest still operational unit was built.

construction_year_ferc1

Year the plant's oldest still operational unit was built.

installation_year_ferc1

Year the plant's most recently built unit was installed.

net_generation_mwh_ferc1

Net electricity generation for the specified period in megawatt-hours (MWh).

not_water_limited_capacity_mw

Plant capacity in MW when not limited by condenser water.

opex_allowances

Allowances.

opex_boiler

Maintenance of boiler (or reactor) plant.

opex_coolants

Cost of coolants and water (nuclear plants only)

opex_electric

Production expenses: electric expenses (USD).

opex_engineering

Production expenses: maintenance, supervision, and engineering (USD).

opex_fuel

Production expenses: fuel (USD).

fuel_cost_per_mwh_eia

Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.

fuel_cost_per_mwh_ferc1

Derived from MCOE, a unit level value. Average fuel cost per MWh of heat content in nominal USD.

opex_misc_power

Miscellaneous steam (or nuclear) expenses.

opex_misc_steam

Maintenance of miscellaneous steam (or nuclear) plant.

opex_nonfuel_per_mwh

Investments in non-fuel production expenses per Mwh.

opex_operations

Production expenses: operations, supervision, and engineering (USD).

opex_per_mwh

Total production expenses (USD per MWh generated).

opex_plant

Production expenses: maintenance of electric plant (USD).

opex_production_total

Total operating expenses.

opex_rents

Production expenses: rents (USD).

opex_steam

Steam expenses.

opex_steam_other

Steam from other sources.

opex_structures

Production expenses: maintenance of structures (USD).

opex_total_nonfuel

Total production expenses, excluding fuel (USD).

opex_transfer

Steam transferred (Credit).

peak_demand_mw

Net peak demand for 60 minutes. Note: in some cases peak demand for other time periods may have been reported instead, if hourly peak demand was unavailable.

plant_capability_mw

Net plant capability in megawatts.

plant_hours_connected_while_generating

Hours the plant was connected to load while generating in the report year.

plant_type

Type of plant.

water_limited_capacity_mw

Plant capacity in MW when limited by condenser water.

fuel_cost_per_mmbtu_ferc1

Average fuel cost per MMBTU of heat content in nominal USD.

fuel_type

Type of fuel.

license_id_ferc1

FERC issued operating license ID for the facility, if available. This value is extracted from the original plant name where possible.

opex_maintenance

Production expenses: Maintenance (USD).

opex_total

Total production expenses, excluding fuel (USD).

capex_facilities

Cost of plant: reservoirs, dams, and waterways (USD).

capex_roads

Cost of plant: roads, railroads, and bridges (USD).

net_capacity_adverse_conditions_mw

Net plant capability under the least favorable operating conditions, in megawatts.

net_capacity_favorable_conditions_mw

Net plant capability under the most favorable operating conditions, in megawatts.

opex_dams

Production expenses: maintenance of reservoirs, dams, and waterways (USD).

opex_generation_misc

Production expenses: miscellaneous power generation expenses (USD).

opex_hydraulic

Production expenses: hydraulic expenses (USD).

opex_misc_plant

Production expenses: maintenance of miscellaneous hydraulic plant (USD).

opex_water_for_power

Production expenses: water for power (USD).

ferc_license_id

The FERC license ID of a project.

capex_equipment_electric

Cost of plant: accessory electric equipment (USD).

capex_equipment_misc

Cost of plant: miscellaneous power plant equipment (USD).

capex_wheels_turbines_generators

Cost of plant: water wheels, turbines, and generators (USD).

energy_used_for_pumping_mwh

Energy used for pumping, in megawatt-hours.

net_load_mwh

Net output for load (net generation - energy used for pumping) in megawatt-hours.

opex_production_before_pumping

Total production expenses before pumping (USD).

opex_pumped_storage

Production expenses: pumped storage (USD).

opex_pumping

Production expenses: We are here to PUMP YOU UP! (USD).

total_fuel_cost_ferc1

Total annual reported fuel costs for the plant part. Includes costs from all fuels.

total_mmbtu_ferc1

Total annual heat content of fuel consumed by a plant part record in the plant parts list.

fuel_type_code_pudl_ferc1

Simplified fuel type code used in PUDL

unit_heat_rate_mmbtu_per_mwh_ferc1

Fuel content per unit of electricity generated. Calculated from FERC reported fuel consumption and net generation.