Home / Science / Ecology and organisms / Fisheries science / CPUE trend calculatorTool #339

CPUE calculator: catch per unit effort by year, standardised CPUE index (log-linear GLM) and stock trend

Work out catch per unit effort (CPUE) from catch and effort records: nominal CPUE by year, a standardised index from a log-linear model with year plus factors such as vessel, area or gear, 95 % intervals, factor effects and the yearly trend, with a chart. Paste records or open a CSV or Excel file.

Keep it one tap away for everyday use.

Bookmark CPUE trend calculator?

Press Ctrl + D now. Your browser opens its own bookmark box, where you choose the name and folder.

  1. Records
  2. Model
  3. Index
  4. Trend
Nothing is uploadedWorks offline once open

Catch and effort records

Catch and effort in any units (kg and hours, numbers and hooks): CPUE is catch ÷ effort. Columns after the third are factors, treated as categories; a first row of names labels them. Up to 50,000 records and 7 factors. The example (120 trips, 2015 to 2024, three vessels in two areas) is made up.

The standardised index fits ln(CPUE) = year + factors (a lognormal GLM) by least squares, so a year in which more fishing happened in a richer area or by a better vessel is not mistaken for more fish. A logarithm of zero is impossible: leave zero catches out (the index then follows catch rates when fish were caught), or add a small constant to every CPUE.

CPUE index

By year

Factor effects (table)
Download

What it does

Catch per unit effort (CPUE), catch divided by fishing effort, is the most common index of how a fish stock is changing: if there are fewer fish, each hour of trawling or each hundred hooks catches less. But raw (“nominal”) CPUE also changes when the fleet moves to richer grounds, switches gear or when better vessels join, so scientists standardise it.

This tool:

  • works out nominal CPUE for each year as total catch ÷ total effort;
  • fits a log-linear model (a lognormal GLM), ln(CPUE) = year + vessel + area + …, by least squares, and takes each year’s predicted CPUE at the most common vessel, area and so on as the standardised index, with a 95 % interval;
  • shows how much each factor level multiplies CPUE compared with its reference level;
  • fits a straight line through the logarithm of the index to give the trend in % per year, with its interval;
  • draws both indices, each scaled to a mean of 1, so their shapes can be compared.

How to use it

  1. Paste or open one row per trip, set or haul: year, catch, effort, then any factors as extra columns (vessel, area, gear, month, depth band…). A header row names them.
  2. Tick the factors to include. A factor that is perfectly tied to the year (for example a vessel that fished only in one year) cannot be separated from it; the tool says so.
  3. Choose what to do with zero catches: leave them out, or keep them by adding 10 % of the mean CPUE to every record before taking logs. Many zeros call for a delta (two-part) model, which this tool does not fit.

Worked example (made-up records)

120 trips from 2015 to 2024 by three vessels in two areas, 5 of them with no catch. Leaving out the zeros, the model ln(CPUE) = year + vessel + area explains 61 % of the variation (residual SD 0.338). Vessel Bravo catches 1.43 times as much per hour as Alpha, Comet 0.73 times, and the North area 0.72 times the South. The standardised index (kg per hour for Alpha in the South) falls from 2.96 in 2015 to 1.75 in 2024, −40.9 %, against −37.3 % for nominal CPUE. Standardised CPUE fell 5.4 % a year, with a 95 % interval of −8.0 % to −2.8 %.

Keeping the zeros with a constant added gives a noisier index and a trend of −4.1 % a year whose interval now includes zero.

Tips

  • CPUE tracks abundance only if catchability stays the same. Better gear, fish finders or fish crowding into a shrinking area can keep CPUE high while the stock falls (“hyperstability”).
  • Use the effort unit that best matches how fishing works (hook-hours, trawl hours, soak days).
  • Look at the factor effects: a big area or vessel effect is the reason standardisation matters for your data.

FAQs

Why predict at reference levels? The index then means “CPUE for a typical vessel in a typical area”. Any other choice moves the whole index up or down by the same factor, so the trend does not change.

Why the exp(s²/2) term? Back-transforming a mean of logs gives the median, not the mean; multiplying by exp(s²/2) corrects that for lognormal errors.

Is my data uploaded? No. Everything runs in your browser.

Where the numbers come from

  • CPUE standardisation with a lognormal GLM (ln CPUE = year + factors), predictions at reference levels with the exp(s²/2) back-transform: M. N. Maunder and A. E. Punt (2004), Standardizing catch and effort data: a review of recent approaches, Fisheries Research 70: 141-159; N. C. H. Lo, L. D. Jacobson and J. L. Squire (1992), Canadian Journal of Fisheries and Aquatic Sciences 49: 2515-2526. Method only.
  • Checked in the tests against statsmodels 0.14 (ordinary least squares on log CPUE with categorical year, vessel and area, and its prediction intervals for the mean). The example records are made up.

Standard scientific values, such as constants, atomic weights and melting points, are facts found in every textbook; we name where ours were checked. If you are an author or publisher and want a value, a credit or a table changed or removed, tell us and we will act quickly.

Last updated 2026-11-09.

Related tools

Trend and anomaly analyser #138 Paste or open a time series (yearly, monthly or any steps) and test for a trend with Mann-Kendall, the Hamed-Rao autocorrelation correction or the seasonal test, get Sen's slope with its confidence interval, a Pettitt change point and anomalies from a baseline period. Biodiversity indices #39 Paste species counts for one or more sites and get Shannon, Simpson, evenness, Chao1 richness, rarefaction curves and Bray-Curtis similarity in one table. Runs in your browser. Sample size and power calculator #32 How many subjects, samples or survey responses do you need? Sample size for comparing two means, paired data, two proportions, or a survey's margin of error, with power curves. Matches R and G*Power. Von Bertalanffy growth fitter #340 Fit the von Bertalanffy growth curve to fish length-at-age data by nonlinear least squares. Get L∞, K and t₀ with standard errors and 95 % intervals, the growth performance index φ', a Ford-Walford plot and charts. Paste ages and lengths or open a CSV or Excel file. Yield per recruit and MSY calculator #341 Work out Beverton-Holt yield per recruit against fishing mortality and age at first capture, with the reference points F0.1 and Fmax. Then get MSY, BMSY and FMSY from the Schaefer or Fox surplus production model, from your own r and K or fitted to a series of catches and CPUE. 1D Schrödinger solver #923 Choose a textbook potential, type a formula or draw your own, and get the lowest energy levels and wavefunctions of the one-dimensional Schrödinger equation by the matrix (finite-difference) method, with the exact levels alongside for the box, harmonic oscillator, finite well, Morse, linear and Pöschl–Teller potentials.