What grade was I in year
Born in 1998? In 2010 you were 12 and in 7th grade, middle school, on the standard US progression. Enter a birth year and any calendar year to get the grade label, from preschool through twelfth grade and on to college. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Birth year
- 1,998
- Year
- 2,010
- Age
- 12
- Grade
- 7th Grade
- Grade code
- 7
- School level
- middle_school
A calendar year on a photo, a move, or a family story is easy to remember; the US school grade that year is not. This calculator answers what grade was I in for a given year from a birth year only, using the standard United States progression in which kindergarten is typically age five and each following year adds one grade through twelfth grade at age seventeen. Age is the calendar year minus the birth year. Years before kindergarten return preschool labels; years after twelfth grade return college or post-college labels. The engine never reads a server clock.
How a birth year and a calendar year become a US grade label
Ages zero through two return not yet in school. Age three is preschool. Age four is pre-kindergarten.
Age five is kindergarten. Ages six through seventeen map to first through twelfth grade. After high school the same one-year-per-step idea continues into undergraduate labels: college freshman at eighteen, sophomore at nineteen, junior at twenty, senior at twenty-one, and a post-college or graduate label from age twenty-two onward.
Elementary covers kindergarten through fifth, middle school sixth through eighth, and high school ninth through twelfth. A year strictly before the birth year is impossible and fails rather than inventing a negative age.
Where a what-grade-was-I-in calculator earns its keep
People reconstructing a childhood year from a photo caption, a house move, or a reunion invite need a grade label without digging through report cards. School registrars, alumni offices, and yearbook projects map a birth year onto the grade a student would have occupied in a named calendar year when only the year of birth is on file. Journalists and genealogists place a person in elementary, middle, or high school for a given year without inventing a birth month.
Parent dashboards and classroom demos can run the free in-browser tool without installing a date library or shipping a timezone database to every client. Keep expectations honest: this capability applies a published US age-to-grade table from two explicit years; it does not score a test, convert a GPA, estimate reading level of a passage, or label a generation. Pair it with a birth-year inverter when you already have an age, and with a generation-cohort helper when the product copy wants Millennial or Gen Z rather than a grade.
What you can do with it
What grade was I in 2010
Enter a birth year and a remembered calendar year to see the standard US grade label for that year, from pre-K through twelfth grade and college.
Alumni and yearbook year from birth year
Map a stored birth year onto the grade a student would have occupied in a named school year when the file has no enrolment roster.
Family photo and genealogy captions
Turn a caption year and a birth year into kindergarten, seventh grade, or senior year without guessing a cut-off month.
FAQ
What happens if the year is before the birth year?
A calendar year before the year of birth cannot have a school grade and is not billed.
Which ages are kindergarten and twelfth grade?
Kindergarten is age five (calendar year minus birth year). Twelfth grade is age seventeen. First grade is six, and each year adds one grade in between.
Does the calculator use today's date?
No. Both the birth year and the calendar year must be supplied. The engine never reads a server clock, so the same pair of years always returns the same grade.
Why could my real grade have been one year off?
Only your birth year is used, so no school-entry cut-off such as September 1 can be applied. Your age is the calendar year minus your birth year, and if your birthday fell after your district's cut-off, your actual grade may differ by one.
What does it show for years after high school?
It keeps adding one step per birthday, so you are a college freshman at 18, a sophomore at 19, a junior at 20 and a senior at 21. From age 22 onward you get a post-college or graduate label.
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/edu/what-grade-was-i-in-year \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"birth_year":1998,"year":2010}'const res = await fetch("https://api.kit.forhosting.com/edu/what-grade-was-i-in-year", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"birth_year": 1998,
"year": 2010
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/edu/what-grade-was-i-in-year",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"birth_year": 1998,
"year": 2010
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/edu/what-grade-was-i-in-year", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"birth_year":1998,"year":2010}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"birth_year":1998,"year":2010}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/edu/what-grade-was-i-in-year", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"birth_year": 1998,
"year": 2010
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "edu.what_grade_was_i_in_year",
"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
If the calendar year is before the birth year the task fails with invalid_input and is not billed.
How a birth year and a calendar year become a US grade label
Standard United States K–12 progression treats kindergarten as the school year when a child is typically five years old and then advances one numbered grade per year: first grade at six, second at seven, continuing through twelfth grade at seventeen. This calculator never has a birth month, so it cannot apply a September first cut-off; it uses the calendar-year age defined as the requested year minus the birth year. That age is the whole number of calendar years elapsed since the year of birth, which is the convention behind search queries such as what grade was I in two thousand ten. The mapping is a published table, not a look-up of today's date, so the same two years always produce the same grade label in a browser, in tests, and on the API.
Input contract, response shape, and error behaviour
Years must lie in one through nine thousand nine hundred ninety-nine. Equal years are valid: age zero is not yet in school. The engine never defaults year to the host clock, so a missing year is an error rather than a silent today. POST a compact JSON body with two required whole integers: birth_year, the calendar year of birth, and year, the calendar year you want the grade for. Optional aliases born, born_year, dob_year, and birth map to birth_year so forms and SDKs can keep a familiar name; calendar_year, in_year, as_of_year, and for_year map to year. Each field may arrive as a JSON integer or as a numeric string; booleans, objects, empty strings, and fractional years fail with invalid_input naming the field and are not billed. On success the body echoes birth_year and year, reports age as year minus birth_year, returns grade as the human label, grade_code as a stable token such as K, 7, or college_1, school_level as none, early_childhood, elementary, middle_school, high_school, college, or post_college, and formula restating the fixed mapping. Example: birth_year nineteen ninety-eight and year two thousand ten yields age twelve and seventh grade.
Where a what-grade-was-I-in calculator earns its keep
Call the prepaid API when roster backfills, eligibility worksheets, or content sites need a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request.
Technical questions
How do I find what grade I was in for a given year?
Send whole integers birth_year and year. The API subtracts them to get age and returns the standard US label: kindergarten at age five, nth grade at age n+5 through twelfth grade at seventeen.
What does the what-grade-was-I-in calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.