# What is a Vina score, and what counts as good

> The AutoDock Vina score is a docking score in kcal/mol, not a measured binding energy. Learn what the output columns mean, why there is no universal good score, and how far Vina tracks experimental affinity.

The Vina score is the number [AutoDock Vina](/app/autodock-vina) reports for each docked pose, in kcal/mol. It is the value of Vina's empirical scoring function for that pose, and Vina presents it as a predicted binding affinity: more negative means Vina considers the pose more favorable. It is not a measured binding free energy, and converting it to a Kd or IC50 gives numbers that can be off by orders of magnitude.

There is no universal good Vina score. The number depends on ligand size, pocket, receptor preparation and scoring function, and Vina's own error on complexes with known affinities is around 2 to 3 kcal/mol. A useful cutoff has to come from your target: the score of a redocked native ligand, the scores of known actives against decoys, or the top fraction of a screen. The Vina authors recommend exactly that kind of target-specific check before ordering compounds.

## How Vina calculates the score

Vina scores a pose by summing simple terms over every pair of heavy atoms, one from the ligand and one from the receptor, within 8 Å. Each term depends on the surface distance between the two atoms, which is the distance between their centers minus both atomic radii. Hydrogens are not modeled explicitly, and Vina ignores partial charges, so electrostatics enter only through the hydrogen-bond and hydrophobic terms.

  <caption><strong>Table 1. Terms and weights in the Vina scoring function.</strong> The five pair terms are summed over ligand and receptor heavy-atom pairs within 8 Å, and N_rot divides that sum. The current source code uses the same weights to more decimal places. Sources: Trott and Olson (2010), AutoDock Vina source code (2026).</caption>
  <thead>
    <tr>
      <th scope="col">Term</th>
      <th scope="col">Weight</th>
      <th scope="col">What it rewards or penalizes</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>gauss1</td>
      <td>−0.0356</td>
      <td>Atoms in contact, a narrow attraction centered at zero surface distance</td>
    </tr>
    <tr>
      <td>gauss2</td>
      <td>−0.0052</td>
      <td>A broad attraction centered 3 Å apart</td>
    </tr>
    <tr>
      <td>repulsion</td>
      <td>0.840</td>
      <td>Atoms that overlap</td>
    </tr>
    <tr>
      <td>hydrophobic</td>
      <td>−0.0351</td>
      <td>Contacts between hydrophobic atoms</td>
    </tr>
    <tr>
      <td>hydrogen bond</td>
      <td>−0.587</td>
      <td>Donor and acceptor pairs at hydrogen-bonding distance</td>
    </tr>
    <tr>
      <td>N_rot</td>
      <td>0.0585</td>
      <td>Ligand flexibility, applied as a divisor</td>
    </tr>
  </tbody>

The weighted sum of the five pair terms is the intermolecular energy. Vina then divides it by 1 + 0.0585 × N_rot, where N_rot is the number of rotatable bonds between heavy atoms in the ligand. That last step is a rough penalty for the flexibility a ligand loses when it binds. A ligand with seven rotatable bonds has its intermolecular energy divided by about 1.41.

Two details are easy to miss. The weights were fitted to experimental binding affinities from the PDBbind database, which is why the result is on a kcal/mol scale and why Vina calls it an affinity, but five distance terms and a flexibility divisor cannot capture solvation, entropy or electrostatics in detail. And the intramolecular energy of the ligand affects which pose Vina chooses but is removed from the reported score of the best pose. Lower-ranked poses are reported relative to the best pose's internal energy so the ranking is preserved.

## Reading the Vina output

Each docking run returns several poses, nine by default, within 3 kcal/mol of the best one. The usual output table has these columns:

  <caption><strong>Table 2. Columns in the Vina output table.</strong> Source: AutoDock Vina manual (2026).</caption>
  <thead>
    <tr>
      <th scope="col">Column</th>
      <th scope="col">Meaning</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Mode</td>
      <td>The pose's rank, 1 being the best score</td>
    </tr>
    <tr>
      <td>Affinity</td>
      <td>The Vina score in kcal/mol</td>
    </tr>
    <tr>
      <td>RMSD lower bound</td>
      <td>Distance from mode 1, matching each atom to the nearest atom of the same element in the other pose</td>
    </tr>
    <tr>
      <td>RMSD upper bound</td>
      <td>Distance from mode 1, matching each atom to itself</td>
    </tr>
  </tbody>

The two RMSD columns compare each pose with mode 1, not with any experimental structure. A pose with an RMSD upper bound of 12 Å is a different binding mode; one with both bounds under about 2 Å is a near-copy of the top pose. Running Vina's score-only mode, or opening the data view of a ProteinIQ docking job, also shows the parts of the score: the intermolecular energy, the ligand's internal energy, the torsional penalty and the unbound-state energy, which combine as (1) + (2) + (3) − (4).

The [c-Abl batch example](/app/autodock-vina?jobId=cge7gsamwpeuxmhkandolpdw) on ProteinIQ shows how these fit together. Its top imatinib pose has an intermolecular energy of −17.633 kcal/mol and a torsional term of 5.120 kcal/mol, and the reported score is their sum, −12.512 kcal/mol. Dividing −17.633 by −12.512 gives 1.409, which matches the 1 + 0.0585 × N_rot formula with seven rotatable bonds. For the second-ranked pose, the score is −11.290 kcal/mol even though the intermolecular energy alone is −16.680, because that pose's internal energy is less favorable than the top pose's.

## What counts as a good Vina score

A Vina score is only meaningful relative to other scores from the same setup. Changing the receptor structure, protonation, search box, exhaustiveness or scoring function changes the scale. The Vina documentation warns that AutoDock4 and Vina scores are not comparable: the same imatinib and c-Abl tutorial system scores about −14 kcal/mol with AutoDock4 and about −13 kcal/mol with Vina. Vinardo uses different terms and weights, so its scores belong on their own scale too.

The more defensible ways to set a threshold all use reference points from your own target:

1. Redock the co-crystallized ligand and use its score as a benchmark. A new compound scoring well below it deserves a closer look; one scoring far above it probably does not fit as well under this model.
2. Dock known actives and property-matched decoys with the same protocol, then pick the cutoff that separates them. The Vina FAQ suggests decoys of similar size to the actives.
3. In a large screen, rank by score and take a top fraction, such as the top 1%, rather than a fixed kcal/mol value.
4. Normalize by size. Ligand efficiency divides binding free energy by the number of heavy atoms, and about 0.3 kcal/mol per heavy atom is a commonly proposed floor for drug candidates. Applied to docking scores, it flags large molecules that score well only because they are large.

Size matters because every extra heavy atom in contact with the receptor adds favorable pair terms. Experimentally, the binding free energy of the strongest ligands grows by about 1.5 kcal/mol per heavy atom up to about 15 atoms and then levels off. Vina's sum over contacts has no such plateau, so bigger molecules tend to score better whether or not they bind better.

### What a score would mean as a Kd

Vina reports kcal/mol, so it is tempting to turn the score into a dissociation constant with ΔG = RT ln Kd. At 25 °C every 1.36 kcal/mol is a factor of 10.

  <caption><strong>Table 3. Vina scores converted to dissociation constants.</strong> We calculated each Kd with ΔG = RT ln Kd at 298.15 K, as if the score were a measured binding free energy.</caption>
  <thead>
    <tr>
      <th scope="col">Vina score</th>
      <th scope="col">Kd if the score were a true ΔG</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>−6 kcal/mol</td>
      <td>40 µM</td>
    </tr>
    <tr>
      <td>−7 kcal/mol</td>
      <td>7.4 µM</td>
    </tr>
    <tr>
      <td>−8 kcal/mol</td>
      <td>1.4 µM</td>
    </tr>
    <tr>
      <td>−9 kcal/mol</td>
      <td>250 nM</td>
    </tr>
    <tr>
      <td>−10 kcal/mol</td>
      <td>47 nM</td>
    </tr>
    <tr>
      <td>−12 kcal/mol</td>
      <td>1.6 nM</td>
    </tr>
  </tbody>

The table is useful for intuition about scale, not for prediction. Trott and Olson reported a standard error of 2.85 kcal/mol between Vina scores and experimental binding free energies on a set of 190 complexes. On the CASF-2016 benchmark of 285 complexes, Vina's scores correlated with measured affinities at R = 0.604 with a standard deviation of 1.73 log units, about 2.4 kcal/mol. An error of 2.4 kcal/mol is a factor of about 50 in Kd, so a score that converts to 50 nM is consistent with anything from about 1 nM to 2.5 µM.

## Worked example: three ABL1 inhibitors

The public [c-Abl batch example](/app/autodock-vina?jobId=cge7gsamwpeuxmhkandolpdw) docks imatinib, nilotinib and ponatinib into the same c-Abl kinase domain from PDB 1IEP, with one search box and one random seed. All three are approved drugs that bind the same ATP pocket, which makes them a fair test of whether the score ranks binders correctly.

Klaeger and colleagues measured all three against ABL1 in a single kinobeads competition assay in cell lysate. Their apparent Kd values put ponatinib first at 36 nM, imatinib second at 106 nM and nilotinib third at 301 nM. Vina ranks them the other way round. The [table data and sources](/data/guides/vina-score/abl1-inhibitors.csv) are available to download.

  <caption><strong>Table 4. Vina scores and measured ABL1 binding for three inhibitors.</strong> Vina scores are the top poses of the ProteinIQ c-Abl batch example (PDB 1IEP, Vina scoring, seed 42). Measured values are kinobeads apparent Kd values from cell lysate, converted with ΔG = RT ln Kd at 298.15 K. Source: Klaeger et al. (2017).</caption>
  <thead>
    <tr>
      <th scope="col">Ligand</th>
      <th scope="col">Heavy atoms</th>
      <th scope="col">Vina score</th>
      <th scope="col">Score per heavy atom</th>
      <th scope="col">Measured apparent Kd</th>
      <th scope="col">Measured ΔG</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Nilotinib</td>
      <td>39</td>
      <td>−13.62 kcal/mol</td>
      <td>0.35</td>
      <td>301 nM</td>
      <td>−8.90 kcal/mol</td>
    </tr>
    <tr>
      <td>Imatinib</td>
      <td>37</td>
      <td>−12.51 kcal/mol</td>
      <td>0.34</td>
      <td>106 nM</td>
      <td>−9.52 kcal/mol</td>
    </tr>
    <tr>
      <td>Ponatinib</td>
      <td>39</td>
      <td>−12.44 kcal/mol</td>
      <td>0.32</td>
      <td>36 nM</td>
      <td>−10.16 kcal/mol</td>
    </tr>
  </tbody>

![Horizontal bars comparing Vina scores and measured binding free energies for ponatinib, imatinib and nilotinib on ABL1](/images/charts/vina-score-vs-measured-abl1-binding.webp '**Figure 1. Vina scores and measured binding for three ABL1 inhibitors.** Bars show binding free energy with the sign reversed, so longer bars mean stronger binding. Vina scores come from the top poses of the ProteinIQ c-Abl batch example (PDB 1IEP, Vina scoring, seed 42). Measured values are kinobeads apparent Kd values from Klaeger et al. (2017), converted with ΔG = RT ln Kd at 298.15 K. Source: [Klaeger et al. (2017)](https://doi.org/10.1126/science.aan4368).')

Other measurements agree that ponatinib is the strongest of the three: it inhibited native ABL kinase with an IC50 of 0.37 nM in its original characterization. An isolated-domain binding assay measured imatinib at 1.1 nM and nilotinib at 10 nM, again with imatinib ahead of nilotinib.

Three lessons follow. The scores differ by at most 1.2 kcal/mol, well inside Vina's error, so the order among them is not evidence of anything. The absolute values say even less: converted, all three scores imply sub-nanomolar binding, while measured values for imatinib alone range from 1.1 nM for the isolated kinase domain to 106 nM in cell lysate. What the scores do show is that all three fit this pocket well, with scores per heavy atom above 0.3 kcal/mol. That is what docking is good for: telling a plausible binder from an implausible one, not ordering potent binders by affinity.

## Where Vina scores are reliable, and where they are not

Vina is better at finding poses than at predicting affinity. In CASF-2016, Vina picked a pose within 2 Å of the crystal structure as its top choice for 90.2% of complexes when the native pose was among the candidates, the best docking power of the scoring functions tested. Its scoring power, the correlation with affinity, was moderate at R = 0.604, below the best machine-learning rescoring function at 0.816. In its original release, Vina docked 78% of 190 test complexes within 2 Å.

Real pose prediction is harder than those benchmarks, because the receptor is usually not the exact structure the ligand was crystallized with. In the GNINA benchmark, Vina's top pose was within 2 Å in 58% of redocking cases and 27% of cross-docking cases with a defined pocket. On the DUD-E virtual screening set of 102 targets, Vina 1.2 reproduced the crystal pose as its top pose for 68% of complexes and averaged an area under the ROC curve of 0.72 for separating actives from decoys.

A few situations make Vina scores especially unreliable:

- Metal-binding ligands, because the default Vina function does not model coordination; Vina 1.2 can use the AutoDock4Zn force field for zinc sites
- Charged ligands and salt bridges, because Vina ignores partial charges
- Large or very flexible ligands, where both the size bias and the search get worse
- Pockets whose shape changes on binding, because the receptor is rigid by default
- Covalent inhibitors, whose binding is not represented in the scoring function

## Checking a good score before you trust it

A low score says the pose fits the model, not that it is physically right. The checks that catch most false positives are cheap.

Look at the pose. A plausible pose fills the pocket, makes the hydrogen bonds you would expect from known ligands, and does not leave polar groups buried without a partner. [PLIP](/app/plip) lists the interactions in a docked complex. Check the geometry with [PoseBusters](/app/posebusters), which flags bond lengths, clashes and stereochemistry that a scoring function can tolerate.

Check stability across runs. Repeat the docking with different random seeds or higher exhaustiveness. A pose that comes back as mode 1 every time is more trustworthy than one that appears once. If you have a reference structure, measure the distance with [RMSD Calculator](/app/rmsd-calculator); 2 Å is the usual cutoff for a correct pose.

Get a second opinion from a different method. Rescoring the same poses with [gnina](/app/gnina), which uses convolutional neural networks to score poses, improved top-pose accuracy from 58% to 73% in redocking compared with Vina scoring. [smina](/app/smina) supports custom scoring terms and Vinardo. For affinity, [Boltz-2](/app/boltz-2) predicts a log IC50 for ranking active molecules and a separate binder probability for separating binders from decoys. Agreement between methods that fail in different ways is better evidence than any single score.

## Vina scores on ProteinIQ

  <caption><strong>Table 5. Docking scores and pose checks on ProteinIQ.</strong></caption>
  <thead>
    <tr>
      <th scope="col">Tool</th>
      <th scope="col">What it reports</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>[AutoDock Vina](/app/autodock-vina)</td>
      <td>Vina, Vinardo or AutoDock4 scores per pose, RMSD bounds and the native energy terms; score-only and local optimization modes</td>
    </tr>
    <tr>
      <td>[smina](/app/smina)</td>
      <td>Vina-family docking with custom scoring and minimization</td>
    </tr>
    <tr>
      <td>[gnina](/app/gnina)</td>
      <td>Vina-style docking with CNN pose and affinity scores</td>
    </tr>
    <tr>
      <td>[PoseBusters](/app/posebusters)</td>
      <td>Physical and chemical plausibility checks for docked poses</td>
    </tr>
    <tr>
      <td>[PLIP](/app/plip)</td>
      <td>Hydrogen bonds, hydrophobic contacts and other interactions in a complex</td>
    </tr>
    <tr>
      <td>[RMSD Calculator](/app/rmsd-calculator)</td>
      <td>Pose RMSD against a reference ligand</td>
    </tr>
    <tr>
      <td>[Boltz-2](/app/boltz-2)</td>
      <td>Co-folded complexes with predicted affinity and binder probability</td>
    </tr>
    <tr>
      <td>[DiffDock](/app/diff-dock)</td>
      <td>Diffusion-based pose generation with its own confidence score</td>
    </tr>
  </tbody>

A practical sequence for a docking result:

1. Dock with [AutoDock Vina](/app/autodock-vina) and include the native ligand or a known active as a reference.
2. Compare each compound's score with the reference rather than with a fixed number, and divide by heavy atoms to spot size effects.
3. Inspect the top poses, run [PoseBusters](/app/posebusters) and list interactions with [PLIP](/app/plip).
4. Repeat promising runs with new seeds, and rescore with [gnina](/app/gnina) or predict the complex with [Boltz-2](/app/boltz-2).
5. Treat the shortlist as hypotheses for an experiment, not as measured affinities.

The [AutoDock Vina guide](/guides/how-to-use-autodock-vina-online) covers preparing inputs and setting the search box, and the [molecular docking](/use-cases/molecular-docking) and [structure-based virtual screening](/use-cases/structure-based-virtual-screening) use cases compare docking methods.

## Frequently asked questions

### Is a more negative Vina score better?

Yes, within one docking setup. More negative means Vina considers the pose more favorable. Differences smaller than about 2 kcal/mol between different compounds are within the scoring function's typical error.

### Is −7 kcal/mol a good Vina score?

For a small fragment it can be strong; for a drug-sized molecule it is unremarkable. Compare it with a known ligand docked into the same receptor with the same settings, and check its score per heavy atom.

### Is the Vina score the binding affinity?

Vina calls it a predicted binding affinity, and its weights were fitted to measured affinities, but it is a simple scoring function with errors of a few kcal/mol. It correlates moderately with measured affinity, R = 0.604 on CASF-2016, and should not be reported as a Kd, Ki or IC50.

### Why did my ligand get a positive Vina score?

A positive score usually means the pose clashes with the receptor. Common causes are a search box that does not include the pocket, a receptor with a bound ligand or extra atoms left in the site, or a ligand too large for the pocket in this receptor conformation.

### Can I compare Vina scores between different proteins?

Not reliably. Pocket size, shape and chemistry change the score scale, so the same ligand can score differently against two proteins without binding them differently. Compare compounds against one prepared receptor instead.

### Are Vina, Vinardo and AutoDock4 scores comparable?

No. Each uses different terms and weights, and the AutoDock Vina documentation states that AutoDock4 and Vina scores are not comparable. Pick one scoring function for a project and keep it.
