Quintile Income Share Ratio Calculator (S80/S20)
The quintile share ratio, also known as S80/S20, compares the percentage of income received by the richest 20 percent of a population with the percentage received by the poorest 20 percent.
Run — free
Enter both income shares from the same statistical source and this calculator divides the upper-quintile share by the lower-quintile share. The result states how many times as much income share the richest fifth receives, making a widely reported inequality indicator quick to calculate and easy to interpret.
What the S80/S20 ratio measures
The quintile share ratio condenses two parts of an income distribution into one comparison. Analysts first rank people or households by equivalised disposable income, divide that ordered population into five equally sized groups, and calculate the proportion of total income received by each group. S80 is the share received by the top fifth, while S20 is the share received by the bottom fifth. Dividing S80 by S20 answers a direct question: how many times larger is the richest fifth's income share than the poorest fifth's share? If the result is 5.8, the upper group receives 5.8 times the portion received by the lower group. A larger ratio indicates a wider separation between the two ends under the chosen dataset and methodology. It does not describe every part of the distribution, identify causes, or say how income varies inside either quintile. Treat it as a focused summary measure, especially useful for comparing consistently defined populations, places, or periods.
How to enter shares and calculate the ratio
Enter the richest-fifth and poorest-fifth income shares as percentages of total income, using values reported by the same source. For example, use 45.2 and 7.8 when the richest 20 percent receives 45.2 percent and the poorest 20 percent receives 7.8 percent. The calculator applies the standard formula S80/S20 = richest fifth share divided by poorest fifth share. Both values must be positive because a zero denominator would make the ratio undefined, and neither can exceed 100 percent. Their sum also cannot exceed 100 percent because the groups do not overlap and other quintiles must account for the remaining income. Decimal inputs are accepted, and the result is rounded only for stable output rather than during the underlying division. Units cancel in the ratio, but the inputs must use the same scale. Do not combine a decimal fraction such as 0.452 with a percentage such as 7.8; enter both as percentages from one internally consistent distribution.
Compare results without overstating them
S80/S20 is most informative when every compared observation follows the same definitions. Check whether the source measures individuals or households, which income components are included, whether taxes and transfers are reflected, which equivalence scale is used, and what reference period applies. A ratio calculated from disposable household income is not directly interchangeable with one based on gross personal income. Sampling, survey nonresponse, top-income undercoverage, and revisions can also shift the reported shares. When tracking change over time, preserve the original shares alongside the calculated ratio so reviewers can see whether movement came from the top, the bottom, or both. Pair the measure with complementary indicators such as the Gini coefficient, median income, poverty rates, or decile shares when a fuller distributional picture is required. This calculator performs the arithmetic deterministically and does not judge whether a particular ratio is high or low. Interpretation should rely on a documented benchmark and on comparable data, not on the number in isolation.
What you can do with it
Compare income inequality across regions
Calculate S80/S20 for regions whose income shares use the same population, income definition, and reference year.
Track a distribution over time
Turn published upper- and lower-quintile shares into a consistent annual series while retaining both source values for auditability.
Check a report or spreadsheet
Recalculate a stated quintile share ratio from its component shares before publishing an inequality table or policy brief.
FAQ
What is the formula for the quintile share ratio?
S80/S20 equals the income share of the richest 20 percent divided by the income share of the poorest 20 percent.
What does an S80/S20 value of 6 mean?
It means the richest fifth receives six times the share of total income received by the poorest fifth under that dataset's definitions.
Should I enter percentages or decimal fractions?
Enter percentage shares, such as 45.2 and 7.8. Both inputs must use the same scale and come from the same distribution.
Is a lower quintile share ratio always better?
A lower result indicates a narrower gap between the selected quintile shares, but policy interpretation requires context, comparable definitions, and other welfare measures.
Is S80/S20 the same as the Gini coefficient?
No. S80/S20 compares only the top and bottom fifths, while the Gini coefficient summarizes inequality across the full distribution.
What does the API request cost?
Each API request costs $0.002. The same deterministic calculation can also run free in the browser.
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/econ/quintile-share-ratio \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"richest_fifth_share":45.2,"poorest_fifth_share":7.8}'const res = await fetch("https://api.kit.forhosting.com/econ/quintile-share-ratio", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"richest_fifth_share": 45.2,
"poorest_fifth_share": 7.8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/econ/quintile-share-ratio",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"richest_fifth_share": 45.2,
"poorest_fifth_share": 7.8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/econ/quintile-share-ratio", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"richest_fifth_share":45.2,"poorest_fifth_share":7.8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"richest_fifth_share":45.2,"poorest_fifth_share":7.8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/econ/quintile-share-ratio", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"richest_fifth_share": 45.2,
"poorest_fifth_share": 7.8
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "econ.quintile_share_ratio",
"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. |