Geometric standard deviation calculator
Measure spread as a multiplying factor rather than a distance: a geometric standard deviation of 2 means values typically vary by a factor of two, and 1 means they are all identical. Suited to ratios, concentrations and growth factors. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Values
- 1, 2, 4, 8
- Quantity
- 4
- Geometric mean
- 2.8284271248
- Geometric standard deviation
- 2.1705098787
- Log standard deviation
- 0.7749621071
Geometric standard deviation describes how widely strictly positive observations vary on a multiplicative scale. This calculator transforms each value with the natural logarithm, finds the population standard deviation in log space, and exponentiates that result. A value of one means there is no spread, while larger results indicate increasing proportional variation. It is useful for ratios, growth factors, concentrations, and other log-normal data where ordinary additive differences do not tell the whole story.
Understand what geometric standard deviation measures
Ordinary standard deviation measures additive distance from an arithmetic mean. Geometric standard deviation, usually abbreviated GSD, measures multiplicative distance around a geometric mean. That distinction matters when a change from 1 to 2 should be treated like a change from 10 to 20: both are a doubling, even though their additive differences are not equal.
The calculator first takes the natural logarithm of every observation. On that transformed scale, ratios become differences and multiplicative patterns become ordinary additive patterns. It then calculates the population standard deviation of those logarithms and applies the exponential function.
A result of 1 means every input is identical because the log-space standard deviation is zero. A result of 2 indicates a characteristic multiplicative spread by a factor of two. For data that are approximately log-normal, the interval from the geometric mean divided by the GSD to the geometric mean multiplied by the GSD corresponds to one standard deviation in log space.
The statistic is dimensionless as a spread factor, even when the observations have units. This capability uses the population definition with divisor n, so it describes the supplied array itself rather than estimating an unseen population from a sample.
Prepare the input and interpret the response
Every element must be a real, finite number strictly greater than zero. A successful response reports the count, geometric mean, geometric standard deviation, and the underlying population standard deviation of the logged values. It also names the method and includes the formula so results are straightforward to audit.
Read the geometric standard deviation as a factor, not as a quantity to add and subtract. If the geometric mean is 10 and the GSD is 1.5, one log-space standard-deviation band runs from about 10 / 1.5 to 10 × 1.5. Identical values always return a GSD of exactly 1.
Choose GSD for multiplicative and log-normal data
Geometric standard deviation is a natural fit when observations are positive and their variation is better described by ratios than by absolute gaps. Environmental concentration measurements, particle sizes, biological fold changes, latency ratios, financial growth factors, and manufacturing measurements with proportional error often behave this way. Before choosing GSD, inspect what the numbers mean.
Counts that can legitimately be zero, signed changes, temperatures on an interval scale, and values distributed symmetrically around an arithmetic mean generally need a different statistic. Do not add an arbitrary constant merely to force zero or negative data through the logarithm; doing so changes every ratio and makes the resulting spread depend on that arbitrary choice. Also distinguish this population calculation from a sample estimate.
This calculator divides the sum of squared log deviations by n because it summarizes exactly the observations supplied. A statistical workflow estimating the variability of a larger population from a sample may instead use n minus one in log space and should label that choice clearly. GSD is also different from the geometric mean: the mean identifies multiplicative center, while GSD identifies multiplicative spread.
Reporting both gives readers the scale and the variability together.
What you can do with it
Summarize environmental concentrations
Describe proportional variation in strictly positive concentration readings that span orders of magnitude and are approximately log-normal.
Compare process variability
Express the spread of positive particle sizes, cycle times, or normalized measurements as an easy-to-compare multiplicative factor.
FAQ
What is geometric standard deviation?
It is the exponential of the standard deviation of the natural logarithms of positive observations. It expresses spread as a multiplicative factor.
Why must every value be strictly positive?
The real natural logarithm is undefined for zero and negative values.
Does this use the population or sample formula?
It uses the population formula and divides the squared log deviations by n. It summarizes the exact array supplied.
How do I interpret a GSD of 1?
A GSD of 1 means the log-space standard deviation is zero, so all supplied values are identical. Larger values mean greater multiplicative spread.
How do I use the GSD to build a range around the geometric mean?
Divide and multiply instead of subtracting and adding. With a geometric mean of 10 and a GSD of 1.5, one log-scale standard deviation runs from 10 divided by 1.5 to 10 times 1.5, for roughly log-normal data.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/stat/geometric-std-dev \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"values":[1,2,4,8]}'const res = await fetch("https://api.kit.forhosting.com/stat/geometric-std-dev", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"values": [
1,
2,
4,
8
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/geometric-std-dev",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"values": [
1,
2,
4,
8
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/geometric-std-dev", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"values":[1,2,4,8]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"values":[1,2,4,8]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/geometric-std-dev", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"values": [
1,
2,
4,
8
]
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.geometric_std_dev",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Prepare the input and interpret the response
Send one field named values containing a non-empty JSON array of numbers, such as [1, 2, 4, 8]. Zero and negative numbers cannot be transformed with a real natural logarithm, so the capability returns an invalid_input error instead of silently producing NaN, infinity, or a complex result. Numeric strings are not accepted as substitutes for JSON numbers; this keeps automated pipelines explicit and prevents accidental coercion of malformed data. API requests use the published base price of $0.002 per item.
Integration use cases
Validate analytical pipelines
Generate deterministic geometric spread results for automated reports, teaching materials, and regression tests without external dependencies.
Technical questions
How much does an API calculation cost?
Each successful API request uses the published base price of $0.002 per item. The browser calculator runs locally for free.