In bacteria, the same enzyme catalyzes the synthesis of mRNA and non-coding RNA (ncRNA).
RNAP is a large molecule. The core enzyme has five subunits (~400 kDa):
; β′: The β′ subunit is the largest subunit, and is encoded by the rpoC gene. The β′ subunit contains part of the active center responsible for RNA synthesis and contains some of the determinants for non-sequence-specific interactions with DNA and nascent RNA. It is split into two subunits in Cyanobacteria and chloroplasts.
; β: The β subunit is the second-largest subunit, and is encoded by the rpoB gene.  The β subunit contains the rest of the active center responsible for RNA synthesis and contains the rest of the determinants for non-sequence-specific interactions with DNA and nascent RNA.
; α (α and α): Two copies of the α subunit, being the third-largest subunit, are present in a molecule of RNAP: α and α (one and two). Each α subunit contains two domains: αNTD (N-terminal domain) and αCTD (C-terminal domain). αNTD contains determinants for assembly of RNAP. αCTD (C-terminal domain) contains determinants for interaction with promoter DNA, making non-sequence-non-specific interactions at most promoters and sequence-specific interactions at upstream-element-containing promoters, and contains determinants for interactions with regulatory factors.
; ω: The ω subunit is the smallest subunit.  The ω subunit facilitates assembly of RNAP and stabilizes assembled RNAP.
In order to bind promoters, RNAP core associates with the transcription initiation factor sigma (σ) to form RNA polymerase holoenzyme. Sigma  reduces the affinity of RNAP for nonspecific DNA while increasing specificity for promoters, allowing transcription to initiate at correct sites. The complete holoenzyme therefore has 6 subunits: β′βα and αωσ (~450 kDa).