Calculate salinity from what is actually measured by a CTD, i.e. conductivity, in-situ temperature and pressure. Often this is done by the CTD processing software, but sometimes it is helpful to do this directly, e.g. when there is a concern about mismatches in sensor response times.

  temperature = NULL,
  pressure = NULL,
  eos = getOption("oceEOS", default = "gsw")



a measure of conductivity (see also conductivityUnit) or an oce object holding hydrographic information. In the second case, all the other arguments to swSCTp are ignored.


in-situ temperature (\(^\circ\)C), defined on the ITS-90 scale; see “Temperature units” in the documentation for swRho().


pressure (dbar).


string indicating the unit used for conductivity. This may be "ratio" or "" (meaning conductivity ratio), "mS/cm" or "S/m". Note that the ratio mode assumes that measured conductivity has been divided by the standard conductivity of 4.2914 S/m. In dealing with unfamiliar data for which the measurement unit has not been recorded, it can be sensible to try all three possibilities for conductivityUnit, to see which yields the most sensible salinities.


equation of state, either "unesco" or "gsw".


Practical Salinity.


Two variants are provided. First, if eos is "unesco", then salinity is calculated using the UNESCO algorithm described by Fofonoff and Millard (1983) as in reference 1. Second, if eos is "gsw", then the Gibbs-SeaWater formulation is used, via gsw::gsw_SP_from_C() in the gsw package. The latter starts with the same formula as the former, but if this yields a Practical Salinity less than 2, then the result is instead calculated using formulae provided by Hill et al. (1986; reference 2), modified to match the "unesco" value at Practical salinity equal to 2 (reference 3).


  1. Fofonoff, P. and R. C. Millard Jr, 1983. Algorithms for computation of fundamental properties of seawater. Unesco Technical Papers in Marine Science, 44, 53 pp.

  2. K. Hill, T. Dauphinee, and D. Woods. “The Extension of the Practical Salinity Scale 1978 to Low Salinities.” IEEE Journal of Oceanic Engineering 11, no. 1 (January 1986): 109-12. doi:10.1109/JOE.1986.1145154

  3. gsw_from_SP online documentation, available at

See also

For thermal (as opposed to electrical) conductivity, see swThermalConductivity(). For computation of electrical conductivity from salinity, see swCSTp().

Other functions that calculate seawater properties: T68fromT90(), T90fromT48(), T90fromT68(), computableWaterProperties(), locationForGsw(), swAbsoluteSalinity(), swAlpha(), swAlphaOverBeta(), swBeta(), swCSTp(), swConservativeTemperature(), swDepth(), swDynamicHeight(), swLapseRate(), swN2(), swPressure(), swRho(), swRrho(), swSR(), swSTrho(), swSigma(), swSigma0(), swSigma1(), swSigma2(), swSigma3(), swSigma4(), swSigmaT(), swSigmaTheta(), swSoundAbsorption(), swSoundSpeed(), swSpecificHeat(), swSpice(), swSpiciness0(), swSpiciness1(), swSpiciness2(), swSstar(), swTFreeze(), swTSrho(), swThermalConductivity(), swTheta(), swViscosity(), swZ()


Dan Kelley


# 1. Demonstrate agreement with test value in UNESCO documents
swSCTp(1, T90fromT68(15), 0, eos = "unesco") # expect 35
#> [1] 35
# 2. Demonstrate agreement of gsw and unesco, S>2 case
swSCTp(1, T90fromT68(15), 0, eos = "gsw") # again, expect 35
#> [1] 35
# 3. Demonstrate close values even in very brackish water
swSCTp(0.02, 10, 100, eos = "gsw") # 0.6013981
#> [1] 0.6013981
swSCTp(0.02, 10, 100, eos = "unesco") # 0.6011721
#> [1] 0.6011721