PDBFixer
v1.12.0Fix PDB and mmCIF structures by adding missing atoms, residues, hydrogens, and solvent.
PDBFixer repairs PDB and mmCIF structure files in preparation for molecular dynamics simulations. Part of the OpenMM toolkit, it adds missing heavy atoms, hydrogens, and entire loops; converts modified residues to standard amino acids; selects single conformations from alternate locations; deletes unwanted chains; and builds explicit solvent boxes or lipid membranes around the system.
Experimental structures from X-ray crystallography and cryo-EM rarely arrive simulation-ready. They lack hydrogens, contain incomplete side chains from regions of poor electron density, include crystallization artifacts like buffers and duplicate chains, and frequently carry modified residues (selenomethionine, phosphoserine) that standard force fields cannot parameterize. GROMACS, AMBER, and OpenMM all reject the raw files. PDBFixer addresses these issues through eight correction passes:
OXT oxygen where a chain end lacks it (N-terminal hydrogens come from the hydrogen step)ProteinIQ accepts one structure per job and returns the fixed structure with a run summary and applied-settings JSON file.
Upload a PDB or mmCIF file (or enter an RCSB PDB ID) to repair missing atoms and hydrogens. Rebuilding missing residues is optional and off by default. PDBFixer runs on cloud hardware with no local Python or OpenMM installation. Each job repairs one structure and returns its fixed file with a run summary.
Upload one structure file or enter one RCSB PDB ID (1HSG for HIV-1 protease is a common test case). PDB (.pdb, .ent) and mmCIF/PDBx (.cif, .mmcif, .pdbx) formats are accepted, subject to the upload and atom limits shown for your account. NMR entries with several models are accepted, and PDBFixer repairs the first model.
Under "Core processing," enable Prepare for molecular dynamics to standardize modified residues and use 0.15 M ionic strength when adding solvent. Leave it off when you want to control those settings individually. Keep Heterogens set to Keep all to preserve ligands, ions, and water. To extract a single chain from a multi-chain complex, list the unwanted chain IDs in Remove chains (e.g., B, C).
Under "Add options," Add missing heavy atoms and Add missing hydrogens are enabled by default. Both are required for MD simulations. Enable Add missing residues only when complete chains are needed; this step is slow for structures with large gaps.
For explicit solvent MD, enable Add solvent box; the default adds counterions needed for neutralization without extra salt. Set ionic strength to 0.15 M for physiological salt. For membrane proteins, enable Add lipid membrane instead; solvent and membrane are mutually exclusive.
Click Submit job to start processing. Once complete, the repaired structure can be downloaded directly or opened in the integrated PDB Viewer. A summary CSV and provenance JSON file record the requested and resolved settings.
| Input | Description |
|---|---|
PDB | One protein, DNA, RNA, or mixed structure in PDB or mmCIF format (.pdb, .ent, .cif, .mmcif, .pdbx). PDB IDs fetch from RCSB. |
pH value: Sets protonation states for titratable groups when adding hydrogens. Default 7.0. The field only applies when "Add missing hydrogens" is enabled.Output format: Writes either identifier-preserving PDB or PDBx/mmCIF, matching the two save formats in PDBFixer's desktop interface. Default PDB.Prepare for molecular dynamics: Enables nonstandard residue replacement and sets ionic strength to 0.15 M when adding solvent. Default Off.Heterogens: Keep all preserves ligands, ions, and water from the original structure. Water only removes ligands and ions but preserves crystallographic waters. Remove all strips all heterogens and keeps the polymer chains.Remove chains: Comma-separated chain IDs to exclude (e.g., B, C, D).Apply mutations: Point mutations introduced during processing. Format CHAIN:ORIGINAL-POSITION-NEW (e.g., A:ALA-57-GLY, B:VAL-123-ILE).These settings control which structural elements PDBFixer adds to the input.
Add missing residues: Builds entire missing loops from SEQRES records. Off by default. Slow for structures with large gaps (10+ residue loops). A job builds at most 200 missing residues in total. A structure whose SEQRES lists far more residues than it models, such as a domain cut from a long chain, fails within seconds with the regions PDBFixer found, and the failed job offers either its internal gaps or turning the option off.Missing residue regions: Optional comma-separated CHAIN:START-END selectors (for example A:45-52). Leave empty to add every region PDBFixer detects. Each selector must match a detected region exactly, because PDBFixer adds whole regions. A selector that does not match fails with the regions PDBFixer found, and when one of them overlaps it, the failed job offers to use that region.Add missing heavy atoms: Completes truncated side chains. On by default. Required for most MD force fields.Add missing hydrogens: Adds hydrogens at the specified pH. On by default. Required for explicit hydrogen MD; can be disabled for rigid-body docking or implicit hydrogen force fields.Replace nonstandard residues: Converts modified amino acids (selenomethionine, phosphoserine) to their standard equivalents. Off by default to preserve deposited chemistry; enable it when standard force-field preparation requires standard residues.Selected residue replacements: Optional comma-separated CHAIN:RESIDUE_ID:NEW selectors (for example A:57:MET). Leave empty to apply every replacement PDBFixer suggests. Exact chain IDs and insertion codes are preserved.Adding explicit water creates a simulation-ready system. The protein is surrounded by a rectangular or truncated box of water molecules with counterions for charge neutralization.
Add solvent box: Enables water box construction. Significantly increases processing time and output file size.Cation/Anion: Ion types for charge neutralization. Na+/Cl- is standard for most simulations. K+ is appropriate where potassium is physiologically relevant.Ionic strength: Molar concentration of added salt beyond the counterions needed to neutralize the system. Default 0.0 M matches PDBFixer; 0.15 M is common for physiological salt.Box geometry: Shape of the periodic boundary box when automatic padding is used. Cubic is standard and compatible with all software. Dodecahedron and Octahedron reduce water count by approximately 30% while maintaining minimum distance from protein to box edge, producing faster simulations with equivalent accuracy.Box sizing: Padding sets the distance from the protein to the box edges. Dimensions sets explicit X/Y/Z lengths in nanometers.Water model: TIP3P is the standard choice for most force fields. TIP4P-Ew provides improved density and diffusion properties. SPC/E is popular for GROMACS workflows.Membrane systems embed the protein in a lipid bilayer for studying GPCRs, ion channels, and transporters.
Add lipid membrane: Constructs a membrane system. Cannot be combined with Add solvent box; the membrane system includes water and ions automatically.Lipid type: Composition of the bilayer. POPC (palmitoyl-oleoyl-phosphatidylcholine) is the standard choice for general membrane protein studies. POPE is preferred for bacterial membranes.Membrane center Z: Position of the bilayer center along the Z-axis in nanometers. The default places the center at Z = 0; orient and position the input protein to span that plane. PDBFixer does not determine its membrane orientation automatically.Minimum padding: Distance from the protein to the box edges in nanometers.Relax added atoms: On by default. After PDBFixer adds missing atoms and residues, ProteinIQ minimizes only those added atoms with the Amber14 force field, holding them loosely near PDBFixer's placement while every deposited atom stays fixed, then lets PDBFixer add hydrogens as usual. Turn it off to keep PDBFixer's own placement exactly. This step is a ProteinIQ addition, not part of PDBFixer.Solvent force field: Molecular mechanics force field used when constructing an explicit solvent box. PDBFixer default uses PDBFixer's standard force-field selection and can build definitions for retained nonstandard residues. Fixed AMBER14, AMBER99SB, and CHARMM36 choices require every retained residue to have compatible parameters; unsupported residues are rejected before solvation. Hydrogen placement, missing-heavy-atom repair, and membrane construction do not use this setting.Random seed: Seed passed to PDBFixer's missing-atom and missing-residue placement step. 0 lets PDBFixer choose its normal random state. This setting does not control hydrogen or solvent placement.Use custom box vectors: Manual triclinic box vectors (A, B, C as comma-separated X,Y,Z components in nanometers) instead of standard box shapes. Useful for non-orthogonal simulation setups.Download templates: Comma-separated residue codes to fetch from the PDB Chemical Component Dictionary (e.g., ATP, GTP, HEM). Use for non-standard residues not included in the default template library.PDBFixer applies a stepwise workflow that compares each residue against template records and uses OpenMM's force fields to place missing atoms in chemically reasonable positions. It packages the most common preparation steps behind a single streamlined path.
For each residue, PDBFixer consults the PDB Chemical Component Dictionary to determine which atoms should exist. Missing atoms are placed at ideal bond lengths, angles, and dihedrals defined in the template library. The deposited coordinates of resolved atoms are preserved exactly; only missing pieces are reconstructed.
After placement, PDBFixer minimizes the added heavy atoms while holding existing atoms fixed. Its clash check skips atoms of the same residue, so a rebuilt side chain can still fold onto itself. With Relax added atoms on, ProteinIQ then minimizes the added atoms again with the full Amber14 force field, which knows the bonds of every standard residue. Residues without an Amber14 template, such as ligands and modified residues, are left out of that step and stay where PDBFixer put them. Neither step equilibrates the structure; simulation setup and equilibration remain separate steps.
When "Add missing hydrogens" is enabled, the pH value setting determines protonation. PDBFixer's source hydrogen-placement path preserves valid ligands and covalent modifications without requiring the whole structure to match the explicit-solvent force field. At pH 7.0, histidine residues are added neutral, aspartate and glutamate deprotonated, lysine and arginine protonated. Disulfide bonds are detected automatically and the bonded cysteines are kept neutral. For atypical pH (lysosomal pH 4.5, endosomal pH 5.5), adjust the setting accordingly; PROPKA can be run first to identify residues with shifted pKa values that warrant special attention.
The pH is compared with one fixed cutoff per residue type, taken from the hydrogen definitions that ship with OpenMM's Modeller. It is not a calculation of the local electrostatic environment, so a buried aspartate with a shifted pKa is treated like any exposed one.
| Residue | Form below the cutoff | Form above the cutoff | Cutoff (pH) |
|---|---|---|---|
| Aspartate | ASH (neutral, HD2 added) | ASP (charged) | 4.4 |
| Glutamate | GLH (neutral, HE2 added) | GLU (charged) | 4.4 |
| Histidine | HIP (both ring nitrogens protonated, +1) | HID or HIE (neutral, one hydrogen) | 6.5 |
| Cysteine | CYS (thiol, HG added) | thiolate, no HG | 8.5 |
| Lysine | LYS (+1, three HZ) | LYN (neutral, two HZ) | 10.0 |
Arginine is always positively charged, and a cysteine in a disulfide bond has no thiol hydrogen at any pH. Which neutral histidine tautomer is written depends on which ring nitrogen forms the better hydrogen bond; an existing ring hydrogen is respected. The pH only changes standard amino acids: a retained ligand receives hydrogens only when PDBFixer finds a matching definition in the Chemical Component Dictionary, with that definition's default protonation, and otherwise stays without hydrogens.
Hydrogens are placed without a force field and are not minimized. On public entry 3GVU, the placed X-H bonds averaged 1.18 to 1.19 Å for N, C and O parents, longer than the equilibrium lengths in OpenMM's bundled AMBER ff14SB definitions (0.96 Å for O-H, 1.01 Å for N-H, 1.08 to 1.09 Å for C-H). Run a minimization before dynamics.
Missing residues are placed from residue templates along an initial connecting path and then minimized. These are approximate coordinates, not a prediction of the experimentally missing loop conformation. Inspect rebuilt regions before using them in further calculations.
Every batch includes a downloadable run.log with the validated preparation settings, submitted/completed/failed structure counts, and bounded atom, residue, and chain summaries for successful results. Individual failure details and internal process diagnostics are kept out of this curated log.
Each job produces one fixed PDB or PDBx/mmCIF file in the selected format. The summary CSV (pdbfixer_batch_summary.csv) has one row per structure with the columns source_name, display_name, status, output_filename, atoms_count, residues_count, chains_count, processing_steps, error and warnings. The pdbfixer_settings_provenance.json file records tool versions plus the requested and resolved settings.
| Metric | Description |
|---|---|
Source | Original file name or RCSB identifier |
Atoms | Every atom in the fixed structure, including hydrogens, retained waters and ligands, and any added solvent or lipids |
Residues | Every residue in the output, including waters and ligands; grows when loops or solvent are added |
Chains | Total chains in the output topology, including any solvent and ion chains |
Processing applied | Semicolon-separated list of the steps that ran (see the table below) |
Warnings | Mixed alternate conformer warning, empty when nothing was flagged |
The 3D viewer labels each repaired model by its source name and shows one structure at a time, since PDBFixer does not generate alternative poses. Ligand-specific grouping controls are hidden for the same reason.
Processing appliedOn public entry 3GVU with Heterogens set to Keep all and Add missing residues on, PDBFixer finds three gaps (a 14-residue N-terminal stretch and internal gaps of 3 and 4 residues), 30 missing heavy atoms in 9 residues and one missing OXT. It adds 2,645 hydrogens at pH 7.0, taking the structure from 2,390 atoms and 422 residues to 5,224 atoms and 443 residues.
The 422 residues include 149 waters and 2 ligands, which is why Residues is larger than the chain length. These counts were measured by calling PDBFixer directly on the pinned source.
Text in Processing applied | What it tells you |
|---|---|
Removed chains: B, C | Only chain IDs that existed are listed; an ID absent from the structure is ignored without a message |
Will add 3 missing residue segments | The number of gaps rebuilt from SEQRES, not the number of residues (21 in the 3GVU example) |
Replaced 3 nonstandard residues | Residues converted to their standard parent |
Removed all heterogens including water or Removed heterogens (kept water) | The Heterogens choice that was applied |
Added missing residues and missing heavy atoms and missing terminal atoms | Which categories needed work, with no counts; terminal atoms means the C-terminal OXT |
Relaxed 19 added atoms in 5 rebuilt residues with Amber14 ... | Relax added atoms ran; the largest single move is given in ångströms |
Added 2645 missing hydrogens (pH 7.0, PDBFixer placement) | Hydrogen count, which includes two per retained crystallographic water |
Hydrogens already complete (pH 7.0, PDBFixer placement) | The hydrogen step ran and found nothing to add |
Added solvent box (padding=1.0nm, ...) or Added POPC membrane (...) | The box or membrane parameters that were used |
No modifications needed | Nothing ran, which requires Add missing hydrogens to be off as well |
Missing residues and heavy atoms are named without counts, so compare Atoms and Residues with the input to see how much was built. A switched-off step leaves no line at all: with Add missing residues off, gaps in the chain stay open and the report does not mention them.
The Warnings column flags residues that combine atoms from different alternate conformers. For 3GVU it reads "Mixed alternate conformers: SER A:277 (OG only in conformer B; other atoms from conformer A), MET A:278 (CG, SD, CE only in conformer B; other atoms from conformer A)".
PDBFixer keeps the first listed position of each atom and ignores occupancy (conformer A of SER A:277 has occupancy 0.40, conformer B 0.60), but it still keeps atoms recorded only in another conformer. The result is a side chain detached from its backbone.
The warning lists up to 10 residues and does not change the output. A second warning appears when Relax added atoms could not relax some added atoms, for example in a modified residue Amber14 has no template for; those atoms keep PDBFixer's placement. The same text appears in run.log and in the warnings column of the summary CSV. If it appears, delete the unwanted conformer from the input before running PDBFixer, or inspect those residues in the PDB Viewer.
The repair moves only what it adds. Existing atoms are held fixed during the minimization of new heavy atoms, and the hydrogens are not minimized at all, so the deposited geometry, including its clashes and strained side chains, is kept.
With Relax added atoms off, rebuilt regions are also not clash-free: in a seeded run on 3GVU with Add missing residues on, two non-bonded heavy-atom pairs involving rebuilt residues sat closer than 2.5 Å (the closest was 2.26 Å).
Gaps left unrebuilt are not capped. In the 3GVU run with residues off, GLY 436 carries a single backbone hydrogen as if it followed ARG 432 directly, although the two residues are 9.2 Å apart, and ARG 432 receives no OXT. MD setup tools will then see an uncapped chain break, so rebuild the gap or add capping groups in the simulation package.
PDBFixer also reports no geometry statistics. Check Ramachandran outliers, rotamers and clashes with MolProbity (see Ramachandran plot and MolProbity score).
The written file also drops experimental per-atom values as well: the PDB output sets occupancy to 1.00 and the B-factor column to 0.00, the mmCIF output writes 0.0 for both, and SEQRES and secondary structure records are not carried over. For predicted structures this erases the pLDDT stored in the B-factor column, so keep the original file for confidence coloring.
Hydrogens are not the problem when a repaired receptor fails in AutoDock Vina. The receptor preparation step (Meeko) infers bonds from interatomic distances, and it rejects residues where PDBFixer placed atoms too close to non-bonded neighbors.
Production failures traced to PDBFixer outputs showed added atoms 0.95 to 1.95 Å from neighbors in rebuilt loops and side chains, reported as "atoms are too close together" for a named residue.
Most of these come from PDBFixer folding a rebuilt side chain onto itself. On public entries 4DRI, 5GNK, 5IUH, 5TKD, 7L1X, 8I7S and 9DMM, Meeko rejected PDBFixer's output with Heterogens set to Remove all and the other settings at their defaults, and accepted every one after Relax added atoms, which is now on by default. The relaxation took 2 to 10 seconds per structure. Files made before 21 October 2026 were not relaxed, so run the original structure through PDB Fixer again.
One other cause was fixed at the source. PDBFixer 1.12 placed a rebuilt C-terminal OXT beside the alpha carbon (1.79 to 1.84 Å from CA instead of about 2.4 Å). ProteinIQ now installs the upstream commit that corrects this (pull request #347), so rerun the original structure; files made earlier keep the misplaced OXT.
A mixed-conformer residue can still fail with "could not match residue templates", so heed the warning above, and consider leaving Add missing residues off for receptors.
Visual inspection before long simulations catches problems that propagate into MD trajectories:
If added loops look unrealistic, extended energy minimization or brief MD equilibration refines the structure. The PDB Viewer provides in-browser inspection, and MolProbity delivers detailed geometry validation. Inspect the residues named in Warnings and the regions rebuilt under Will add ... missing residue segments first.
Routine structure preparation involves several steps: identify missing atoms, fetch templates, add hydrogens, build solvent, and neutralize charges. PDBFixer automates these steps with selectable settings.
| Aspect | PDB Fixer | Manual preparation |
|---|---|---|
| Input formats | PDB and mmCIF/PDBx | Varies by software |
| Missing atoms | Automatic detection and placement | Requires scripting or plugins |
| Hydrogens | pH-dependent protonation states | Often uniform or default states |
| Loop building | Automated with minimization | Requires homology modeling tools |
| Large structures | Cloud CPU processing with tiered atom limits | CPU-only in most tools |
| Reproducibility | Seed controls the heavy-atom repair integrator; other placement steps are unseeded | Depends on operator and software |
| Processing time | Minutes for typical structures; large repairs can take longer | Hours for complex cases |
| Learning curve | Minimal | Requires software expertise |
PDBFixer is well suited to routine structure processing and simulation setup. For complex cases requiring manual intervention (unusual ligands, specific protonation states, asymmetric membrane positioning), it serves as a strong starting point that can be refined in dedicated tools.
Several tools overlap with PDBFixer on specific preparation tasks.
Modeller is a lower-level API used by this workflow. It provides more granular control (custom residue templates, hybrid solvent setups) but requires Python scripting. Use it when the standard PDBFixer settings do not capture a required preparation step.tleap is the standard preparation tool for AMBER force fields. It integrates directly with AMBER-specific parameter sets; the trade-off is less automation than PDBFixer.For protonation state prediction at a specific pH, PROPKA provides pKa values that can guide the pH setting passed to PDBFixer. For binding site analysis on the fixed structure, fpocket identifies druggable pockets; for protein-ligand docking on the cleaned structure, AutoDock Vina and DiffDock are the standard starting points.
Enable Prepare for molecular dynamics, then add a solvent box with 1.0 nm padding when explicit solvent is needed. With the default atom-repair controls enabled, this standardizes modified residues, adds missing heavy atoms and hydrogens, and uses 0.15 M ionic strength. The output PDB includes box vectors and counterions, ready for equilibration in OpenMM, GROMACS, or AMBER.
Fix the structure with default settings, then use AutoDock Vina or DiffDock for molecular docking. Remove all deletes water, ions, and ligands. Keep all heterogens when the deposited ligand must remain as a reference pose, then remove only the molecules your docking workflow does not need.
Structures from ESMFold, Boltz-2, AlphaFold 2, or OpenFold 3 often need protonation or format adjustments before downstream analysis. PDBFixer adds hydrogens and standardizes the structure, but its output zeroes the B-factor column where these tools store pLDDT, so keep the original file for confidence coloring.
In a workflow, each incoming structure is submitted as its own PDBFixer job. This keeps the source, settings provenance, fixed structure, and summary unambiguous for every result.
Add missing heavy atoms and Add missing hydrogens handle most preparation needs without aggressive modification.Add missing residues unless complete chains are required. Long gap fills produce approximate conformations needing extensive equilibration. If the missing region is not relevant to the study, leave it missing.0 M for neutralization-only preparation, use 0.15 M for physiological salt, and consider 0.5 to 1.0 M for halophiles or aggregation studies.TIP3P works with AMBER14 and CHARMM36; SPC/E is common in GROMACS workflows. Mixing incompatible water models with force fields produces incorrect thermodynamic properties.POPC for general eukaryotic membranes, POPE for bacterial inner membranes.PDBFixer is open-source software licensed under MIT/LGPL. ProteinIQ provides a web interface with a free account tier and paid tiers for larger structures.
Small proteins (under 5,000 atoms) with default settings often finish quickly. Larger structures, missing-residue rebuilding, and solvent or membrane construction take longer on CPU, and structures with extensive loop building or large solvent boxes can take several minutes or more.
PDBFixer builds loops with idealized geometry followed by brief energy minimization. Long loops (10+ residues) often need additional refinement, such as extended minimization or short MD equilibration, to relax into reasonable conformations.
PDBFixer adds missing atoms and prepares structures for simulation. PROPKA predicts pKa values for titratable residues without modifying the structure. The two are complementary: running PROPKA first identifies residues with shifted pKa values, and the pH setting passed to PDBFixer is then adjusted accordingly.
The output supplies prepared coordinates and, when solvent or membrane is added, periodic box information. You still need a compatible simulation force field, parameters for retained ligands, a simulation topology, and an equilibration protocol.
The Heterogens setting controls this. Remove all strips all non-protein molecules, including ligands. Keep all preserves them along with crystallographic waters.
Replace nonstandard residues converts modified residues to their standard equivalents when enabled. It is off by default to preserve modifications, but standard force fields may not parameterize them. Download templates can fetch specific residue definitions from the PDB Chemical Component Dictionary for custom ligands.
Use PDBFixer default for the broadest source-compatible solvent preparation, especially when retaining ligands or modified residues. Choose AMBER14, AMBER99SB, or CHARMM36 only when the entire retained structure is parameterized by that force field. The selection applies only to explicit solvent setup; hydrogen placement, missing-heavy-atom repair, and membrane construction follow PDBFixer's own behavior.
Yes. PDBFixer processes all chains in the input structure. Remove chains excludes specific chains from the output.
Enable Add lipid membrane rather than Add solvent box. Select the appropriate lipid type (POPC for general eukaryotic membranes, POPE for bacterial inner membranes) and set the membrane center to position the transmembrane domain correctly.
hydrogens.xml definitions and bond lengths from its AMBER ff14SB files.Modeller.addHydrogens documentation: docs.openmm.orgValidate protein structures with clashscore, Ramachandran, rotamer, and geometry checks.
Generate structural summary reports and diagrams for a single protein PDB structure.
Model accuracy estimation and sequence ranking with AlphaFold
Fetch AlphaFold DB CIF, PDB, BCIF, and PAE JSON files from a UniProt accession.
Repair SDF, MOL, and MOL2 ligands for RDKit, Meeko, and docking preparation workflows.
Fetch experimental structure files from RCSB PDB or PDBe using a PDB ID.
Prepare biomolecular structures for electrostatics calculations with charge and radius assignment.
Analyze protein backbone phi/psi angles and classify favored, allowed, and outlier residues.
Score every protein interface with ESM-2 and a graph neural network
Assess docking quality between model and native structures