Ecotoxicology

    Fulton's K, HSI and GSI: How to Calculate Fish Biometric Indices

    How to calculate Fulton's condition factor, hepatosomatic index and gonadosomatic index from weight and length data, what confounds them, and what to report.

    LabreadorNovember 3, 20268 min read

    Why biometric indices still matter

    Before you spend money on a biomarker panel, there is a cheaper measurement sitting on the dissection tray: the weight of the fish and the weight of its organs. Fulton's condition factor (K), the hepatosomatic index (HSI) and the gonadosomatic index (GSI) are simple ratios, yet they integrate everything a contaminant regime does to an organism — feeding, energy allocation, liver response and reproductive output.

    They are also the metrics most often reported badly. The formulas are trivial, so the errors are never arithmetic. They are a length measured one way in one lab and another way in the next, a missing organ weight quietly turned into zero, and a "significant" difference between two groups of five fish sampled in different months.

    The three indices

    K   = (W_body / L³) × 100
    HSI = (W_liver / W_body) × 100
    GSI = (W_gonad / W_body) × 100
    

    where W_body is body mass in g, L is body length in cm, and the organ masses are in the same unit as body mass.

    • K — Fulton's condition factor. Weight relative to length cubed. It is read as nutritional status or "plumpness". It needs both weight and length.
    • HSI — hepatosomatic index. Liver share of body mass. In ecotoxicology it rises with detoxification demand (enzyme induction, hepatocyte hypertrophy, lipid accumulation) and falls with energy depletion or atrophy. It needs liver and body mass, not length.
    • GSI — gonadosomatic index. Gonad share of body mass. A standard proxy for maturity and reproductive investment, and a sensitive endpoint for endocrine-active contaminants. It needs gonad and body mass, not length.

    All three are percentages, dimensionless once the mass units cancel — except K, which is really g/cm³ scaled by 100.

    Worked example

    One fish: body mass 412 g, total length 32.5 cm, liver 4.9 g, gonad 1.85 g.

    K   = (412 / 32.5³) × 100 = (412 / 34328.125) × 100 = 1.20
    HSI = (4.9 / 412) × 100   = 1.19 %
    GSI = (1.85 / 412) × 100  = 0.45 %
    

    Note what K actually did: it divided mass by length cubed. Change the length by 5 % and K moves by about 15 %, so a fish measured to the tail fin instead of to the end of the vertebrae is not a slightly different number — it is a systematically different one.

    Comparing two populations

    A single fish means nothing. Indices are compared between a reference and an exposed group, and the group is described by its mean and sample standard deviation (n − 1).

    IndexReference site (n = 5)Exposed site (n = 5)
    K1.22 ± 0.041.05 ± 0.05
    HSI (%)1.18 ± 0.111.84 ± 0.19
    GSI (%)0.45 ± 0.060.21 ± 0.05

    The pattern is the classic contaminant signature: thinner fish, heavier livers, smaller gonads. Two cautions before that sentence goes into a manuscript. First, with n = 5 per group the standard deviations above are estimated from four degrees of freedom — they are not stable. Second, the indices are descriptive. Deciding whether the difference is statistically supported belongs to a separate test on prepared groups, and the choice of test should follow the data's distribution, not the wish for a p-value.

    The length definition problem

    K is only comparable when every fish in the comparison was measured the same way. Common definitions:

    • TL — total length, snout to the tip of the longest caudal fin ray.
    • SL — standard length, snout to the end of the vertebral column (base of the tail).
    • FL — fork length, snout to the fork of the tail.

    For the same fish, TL > FL > SL, so K(TL) < K(FL) < K(SL). Mixing them inside one dataset is not a rounding error; it is a bias of several percent that no statistical test can remove. State the definition in the methods and keep one column for it.

    The deeper issue is that K assumes body mass scales with length cubed — isometric growth. Fish usually do not grow isometrically. Fitting the length–weight relationship

    log W = log a + n × log L
    

    and using the measured exponent instead of 3 gives the relative condition factor

    Kn = (W / (a × L^n)) × 100
    

    If your fish grow allometrically (n clearly different from 3), Kn is the fairer comparison across a wide size range, and K should be reported as what it is: a fixed-exponent approximation.

    Units, zeros and missing values

    The formulas are unit-sensitive in one direction and unit-agnostic in the other:

    • Mass ratios (HSI, GSI) only need the organ and the body in the same unit. Liver in mg and body in g is a 1000× error, not a small one.
    • K depends on the length unit: L in mm instead of cm changes K by a factor of 1000.

    Then come the two data decisions that silently rewrite results:

    • A measured zero is not a missing value. An organ mass recorded as 0 (atresia, a truly absent organ in a juvenile) gives a valid index of 0 and belongs in the group mean.
    • A missing organ mass is not a zero. If the liver was not weighed, HSI for that fish is unavailable — it must not be imputed as 0, because that drags the group mean down and inflates the apparent effect.

    Each index should be evaluated on its own rows: K needs weight and length, HSI needs liver and body, GSI needs gonad and body. A fish with no gonad weight still contributes to K and HSI. That keeps one specimen from deleting three indices.

    What breaks these numbers

    • Season, sex and feeding status. K and GSI swing with the reproductive cycle and with gut fullness. Sampling a reference population in April and an exposed one in June measures the calendar.
    • Organ mass larger than body mass. Physically impossible; the value is invalid and must be flagged, not averaged.
    • Gut mass in "body mass". Decide once whether body mass is eviscerated or whole, and apply it to every fish.
    • Tiny groups. With n = 3, one gravid female moves the group GSI more than the contaminant does.
    • No universal healthy range. K = 1.2 is not "good" in absolute terms. Interpret within a species, season, length class and study; cross-study comparison of raw K values is meaningless.

    What to report

    1. The formulas used, and whether K or Kn.
    2. The length definition (TL, SL or FL) and the measuring board precision.
    3. Mass units and whether body mass included the gut.
    4. n per index — not one n for the whole table, since missing organs make the indices differ.
    5. Mean ± SD (or median ± IQR for skewed, small samples) and the SD convention (n − 1).
    6. How missing organ masses and measured zeros were treated.
    7. The statistical test used for group comparison and why it was appropriate.

    Doing it in Labreador

    The Biometric Indices module calculates K, HSI and GSI from a pasted or uploaded table, entirely in your browser — no data leaves your machine.

    • Paste or drop CSV/TSV/XLS/XLSX with sample ID, body weight, length, liver weight and gonad weight; headers are recognised, and mm/cm/m and mg/g/kg are converted with the conversion shown to you.
    • Length is chosen explicitly when standard and total length both exist in the file, so the definition never gets guessed.
    • Each index validates its own inputs: K needs weight and length, HSI and GSI do not need length.
    • A measured zero organ mass stays a valid zero index; a missing or impossible mass (organ heavier than the body) is reported as unavailable instead of being averaged in.
    • Group summaries use eligible rows only, with sample SD (n − 1) and an explicit "unavailable" for n < 2.
    • CSV and PDF exports keep every row, the original measurements, unique row IDs and the reason an index could not be calculated.

    For the full formula reference, see the methods page.

    Key takeaways

    • K, HSI and GSI are ratios, not biomarkers — they tell you that allocation shifted, not why.
    • Fix the length definition before collecting data, and check whether length–weight growth is really isometric.
    • Never turn a missing organ mass into zero; keep a measured zero.
    • Report n per index, the SD convention, and how unavailable values were handled.
    • Compare within species, season and size class — there is no universal healthy K.

    Related guides