Understanding pKa For Amino Acids: A Practical Guide
pKa values for amino acids are equilibrium constants that describe when a protonated group gives up its proton. For a standard amino acid in dilute solution, the alpha-carboxyl group has a pKa around 2.2, the alpha-amino group sits near 9.6, and each ionizable side chain has its own value. Cysteine's thiol is roughly 8.3, lysine's epsilon-amino is 10.5, arginine's guanidino group is 12.5, and histidine's imidazole is around 6.0. Aspartate and glutamate sit at about 3.9 and 4.3 respectively. These numbers come from measuring titration curves of the free amino acids, not from some theoretical framework. The most useful thing you can do with pKa values is predict the ionization state of an amino acid or peptide at any given pH. You apply the Henderson-Hasselbalch equation to each titratable group independently. For acidic groups, the deprotonated fraction equals 1 divided by 1 plus 10 raised to the power of pKa minus pH. For basic groups, the protonated fraction equals 1 divided by 1 plus 10 raised to the power of pH minus pKa. Net charge is the sum of all individual charges weighted by their fractional states. I ran into a real problem last year when I was modeling a short peptide for a solubility study. The sequence had a histidine and an aspartate positioned three residues apart. Standard pKa tables gave me a histidine pKa of 6.0 and an aspartate pKa of 3.9, so at pH 5.5 I calculated the histidine as mostly protonated and the aspartate as mostly deprotonated, giving me a strong salt bridge. When I actually ran the peptide through capillary electrophoresis, the migration time didn't match my calculation at all. The apparent pI was shifted by nearly a full pH unit compared to what the fixed values predicted.
The issue was that neighboring charges alter the local electrostatic field, which shifts the effective pKa of each group. The histidine in that sequence had its pKa pushed up because the adjacent aspartate was already deprotonated and stabilized the protonated form through electrostatic attraction. This is called a coupling effect between ionizable sites. You can see this quantitatively with the Tanford-Ross equation, which couples two pKa values through an interaction energy term. But honestly, most people don't need to derive that. What matters is knowing that fixed textbook pKa values fail whenever charged groups sit within a few angstroms of each other. For proteins, this effect becomes much larger. A buried histidine in a hydrophobic core can have its pKa shifted by 2 or 3 pH units from the standard value. I found this out when working with a variant of a small enzyme where a single surface mutation introduced a nearby positive charge. The wild-type enzyme had an isoelectric point of about 6.8 based on standard calculations. The mutant's measured pI was closer to 5.9. Running PROPKA on both structures showed that the mutation altered the pKa of a distant histidine by about 1.1 units through long-range electrostatic effects. Without that calculation, you would have no idea why the pI shifted so dramatically. If you need to compute pI values quickly, the EMBOSS suite has a tool called pepstats that takes a FASTA sequence and outputs the theoretical pI using fixed pKa values. It is fast, it is free, and it runs on Linux and macOS through a simple command. Here is the typical invocation:
pepstats -sequence my_peptide.fasta -outform text This output gives you the pI and the composition. The pI calculation finds the pH at which the net charge crosses zero by iterating over pH from 0 to 14 and applying Henderson-Hasselbalch to every ionizable group. It assumes independent titration, which is the same limitation I described above. For routine work this is usually fine. For anything involving charged clusters or buried residues, you should switch to a method that computes pKa from structure. PDB2PQR is a good option. It takes a PDB file, assigns protonation states, and runs Delphi or APBS to calculate electrostatic potentials. It also reports pKa values that include the local environment. The workflow is a bit heavier than pepstats but the results are more reliable for problematic cases. I typically run it through the PDB2PQR web server for single structures, or use the command-line version in batch mode when I have many variants to screen.
Get the Full Details

One thing that catches people off guard is the behavior of cysteine and tyrosine in pI calculations. Their pKa values are close enough that the default treatment in many tools can be inaccurate. Cysteine is sometimes omitted entirely from pI calculations in older software packages because its pKa is so high and its contribution is often negligible at neutral pH. If your peptide is rich in cysteine residues, check whether your tool is including it. I once missed a disulfide bond artifact in a sequencing project because the pI calculator I was using skipped cysteine by default. N-terminal and C-terminal groups also get treated inconsistently across tools. Some programs use the free amino acid pKa values, while others adjust them for the peptide bond environment. The alpha-amino pKa in a peptide is typically lower than in the free amino acid because the adjacent carbonyl withdraws electron density. The difference is usually about 0.5 pH units but it accumulates when you are computing pI for longer sequences. Here is a quick reference for the most commonly used pKa values that most tools will assume:
N-terminus: 8.0 to 9.6 depending on the residue context. C-terminus: 3.1 to 3.4 depending on the residue context. Aspartate side chain: 3.9. Glutamate side chain: 4.3. Cysteine side chain: 8.3. Tyrosine side chain: 10.1. Lysine side chain: 10.5. Arginine side chain: 12.5. Histidine side chain: 6.0. These are the values in the standard tables from Lehninger and similar biochemistry textbooks. Your tool may use slightly different numbers, which is why checking the source is worth doing before you trust a published pI value. For most practical purposes, fixed pKa methods give you an answer in under a minute and that is enough for planning buffer conditions, choosing an isoelectric focusing gel, or setting up an ion-exchange chromatography gradient. When the sequence contains clustered charged residues, post-translational modifications, or non-standard amino acids, the fixed-value approach breaks down and you should invest the extra time in a structure-based calculation or measure the pI experimentally.