Protein purification techniques can be categorized into those based on molecular size, solubility, and electric charge. Size-based techniques include dialysis, ultrafiltration, and size-exclusion chromatography which separate proteins based on their ability to pass through semi-permeable membranes or porous beads. Solubility-based techniques include isoelectric precipitation and salting out which alter a protein's solubility by adjusting pH or salt concentration. Charge-based techniques such as ion-exchange and electrophoresis separate proteins using their net electric charge in an applied electric field or ion-exchange column.