Third quartile calculator
Find the third quartile of a list in one step: for the values 1 to 8, Q3 is 6.25, the point with three quarters of the data at or below it. Uses the same interpolation as Excel. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
The third quartile, written Q3, is the 75th percentile of a numeric sample: three quarters of the ordered values sit at or below this cut, and one quarter sit at or above it. Analysts, students, and quality engineers reach for Q3 when they need the upper hinge of a distribution without computing a full five-number summary or an interquartile range. This calculator accepts a non-empty list of finite numbers, sorts a working copy, and returns the 75th percentile by linear inclusive interpolation — the same family as Excel PERCENTILE.INC.
What the third quartile means and how Q3 is computed
The third quartile of a numeric dataset is the 75th percentile of the ordered sample. After the values are sorted from smallest to largest, Q3 is the cut at which three quarters of the observations lie at or below the mark and one quarter lie at or above it. This calculator uses linear inclusive interpolation, the same family as Excel PERCENTILE.INC and many textbook linear quantile methods.
For a list of n finite numbers the interpolation index is i equals zero point seven five times n minus one. When i is an integer, Q3 is exactly the order statistic at that zero-based index. When i is not an integer, Q3 is a weighted mix of the two neighboring order statistics: the value at floor of i plus the fractional part times the gap to the value at ceil of i.
A singleton list has Q3 equal to that lone number, because every percentile of a one-point sample is the point itself. Ties, negatives, zeros, and mixed signs are first-class: only rank on the number line matters. Unlike Tukey exclusive hinges used by a sibling quartile-and-IQR tool, this landing answers the search for the third quartile as the 75th percentile, which is the definition students meet in introductory statistics, spreadsheets, and reporting dashboards.
The procedure is fully deterministic: the same list always yields the same Q3, which makes the number safe to pin in homework keys, automated tests, and reproducible notebooks without Monte Carlo noise or hidden rounding choices.
Practical use, limits, pricing, and related tools
Use the browser tool when you want an immediate third quartile while checking a homework answer, profiling a small dataset, or explaining the upper hinge before introducing interquartile range, without installing a statistics package. Accepted lists stay bounded: up to one hundred thousand values cover classroom tables, sensor batches, and typical analytics excerpts while still finishing quickly. Results are fully deterministic: the same values always yield the same n, q3, interpolation index, min, and max.
There is no language model, no external statistics service, and no randomness, so the capability is safe to pin in continuous-integration checks and reproducible lesson materials. Keep lists modest for everyday classroom and dashboard use; the hundred-thousand ceiling is a guardrail against accidental bulk dumps, not a target.
When you also need Q1, the median, IQR, or an arbitrary k-th percentile in the same sitting, call the dedicated tools for those search intents; this landing stays focused on the third quartile so the page and the response contract stay honest about what they deliver.
What you can do with it
Homework and introductory statistics labs
Students and graders verify Q3 as the 75th percentile for the same list, including the hard rule that an empty dataset is invalid and a singleton has Q3 equal to that value.
Quality control and score bands
Engineers and teachers turn a finished batch of readings or exam scores into a stable third quartile for reports and upper-band cutoffs without opening a spreadsheet percentile formula.
FAQ
How do I compute the third quartile of a list of numbers?
Q3 is the 75th percentile by linear inclusive interpolation.
What happens if the dataset is empty?
At least one finite number is required to compute the third quartile. Validation failures are not charged.
Does a list of one number have a third quartile?
Yes. That single value is every percentile of a one-point sample, so Q3 equals the value. A singleton is valid; an empty dataset is not.
How is this different from a quartile-and-IQR calculator?
This tool returns only Q3 as the 75th percentile (linear inclusive). A quartile-and-IQR calculator returns Q1, Q2, Q3, the interquartile range, and often Tukey fences. Those are separate search intents.
Is the third quartile calculator free?
The browser tool runs free on your device.
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/third-quartile \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"values":[1,2,3,4,5,6,7,8]}'const res = await fetch("https://api.kit.forhosting.com/stat/third-quartile", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"values": [
1,
2,
3,
4,
5,
6,
7,
8
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/stat/third-quartile",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"values": [
1,
2,
3,
4,
5,
6,
7,
8
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/stat/third-quartile", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"values":[1,2,3,4,5,6,7,8]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"values":[1,2,3,4,5,6,7,8]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/stat/third-quartile", 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,
3,
4,
5,
6,
7,
8
]
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "stat.third_quartile",
"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.
Limits
max_values | 100000 |
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
Empty datasets are rejected with invalid_input rather than inventing a quartile from no data.
What the third quartile means and how Q3 is computed
An empty list has no order statistics, so the engine refuses to invent a quartile and fails with invalid_input.
Input contract, response shape, and validation rules
There is no requirement that numbers lie in a particular interval such as zero to one hundred: any finite magnitude within a published safe bound is accepted, so scores, prices, residuals, and signed sensor readings compute a truthful Q3 without preprocessing. POST a JSON object with a required values field: a non-empty array of finite numbers, at least one entry and at most one hundred thousand. Aliases accepted for the same list include numbers, data, list, and x, so scripts that already speak in those terms do not need a rename step. Each element may be a JSON number or a numeric string; non-finite values, empty strings, booleans, and non-numeric tokens fail with invalid_input naming the bad index. You may also pass values as a single comma- or whitespace-separated string when a text form is more convenient than a JSON array. On success the body returns n, q3 (the third quartile), percentile fixed at seventy-five, method set to linear_inclusive, the interpolation index together with lo_index, hi_index and weight so a classroom walk-through can be audited, plus min, max, and a short formula string. Missing values, an empty array, more than one hundred thousand entries, or a body that is not an object all raise invalid_input and are not billed. Pair this contract with a dedicated quartile-and-IQR or five-number-summary tool if you need Q1, the median, and fences in the same sitting; this endpoint reports the textbook 75th-percentile third quartile only.
Practical use, limits, pricing, and related tools
Each successful request is one billable item at $0.002; failed validation does not consume balance. Wire the endpoint into data-science tutorials, spreadsheet-migration tests, coding-interview sandboxes, or preprocessing steps where you already prefer a closed-form 75th percentile over opaque calculators that hide whether they used Tukey hinges, nearest rank, or exclusive variants.
Integration use cases
Scripts and CI numeric fixtures
Pipelines and interview sandboxes call a deterministic Q3 contract instead of reimplementing the 75th percentile in every language with different empty-list and interpolation rules.