Skip to content
← All datasets

High School Graduation Rates

Georgia high school graduation rates by school, district, and demographic subgroup, 2012-2025.

Year coverage
2012–2025
Updated
annual
Version
1.2.0
Schema hash
cf373e5d8659

Detail levels available

StateDistrictSchool · default

Overview

Georgia high school graduation rates at the school, district, and state level by demographic subgroup, 2012-2025. A single `graduation_rate` column (0-1 scale) carries three distinct methodologies discriminated by `rate_type`: the federal adjusted 4-year cohort rate (2012-2025), the 5-year cohort variant (2017-2024, keyed to the cohort year so a year's 4-year and 5-year rows describe the same cohort), and the Senate Bill 431 on-time rate (2021-2024, school-level only). `num_cohort` and `num_graduates` carry the published denominator/numerator where a source ships them; CCRPI accountability years add an improvement `indicator_target` and color `ccrpi_flag`. Sources span six release families (CCRPI workbooks, legacy 2012-2014 releases, standalone 4-year and 5-year cohort releases, SB 431 on-time releases, and a GOSA-portal CSV that fills the 2023 4-year count gap), merged by source precedence. This topic publishes the underlying graduation rates by methodology and demographic; the CCRPI Graduation Rate component score as it feeds the accountability index (a distinct benchmarked value, not equal to the raw 4-year rate) — alongside the overall CCRPI score and the other four component scores — lives in the `ccrpi_scoring_by_component` topic (the CCRPI overview).

Row grain: One row per year, district_code, school_code, demographic, rate_type.

Key metric

graduation_rate — Graduation Rate (proportion)

The single headline value most answers want.

Variables

Every column in the fact table. The code is the exact field name the API returns.

ColumnTypeUnitRangeNull?Description
yearYearinteger——noGraduation (cohort end) calendar year. For `4_year` rows, the spring the cohort was due to graduate. For `5_year` rows, the COHORT year — the year that same cohort was due to graduate on the 4-year schedule — never the year the 5-year rate was published (one year later), so a year's `4_year` and `5_year` rows describe the same cohort. The 2022+ CCRPI workbooks label their 5-year slice with the cohort year already; the 2018-2020 workbooks label it with the CCRPI report year and are re-keyed to year - 1 (their 5-year rows land in 2017-2019), and the standalone December 2021 5-year release is the 2020 cohort. The re-key rests on a cohort-alignment test the transform re-runs every time: a 5-year rate cannot fall below its own cohort's 4-year rate. For `on_time` rows, the SB 431 graduation year. Sourced from the bronze year column where one exists (CCRPI/legacy/on-time files; cross-checked against the filename) and from the filename for the standalone cohort releases. The February 2018 standalone 4-year release carries 2017-cohort data and lands in 2017.
Full description
Graduation (cohort end) calendar year. For `4_year` rows, the spring the cohort was due to graduate. For `5_year` rows, the COHORT year — the year that same cohort was due to graduate on the 4-year schedule — never the year the 5-year rate was published (one year later), so a year's `4_year` and `5_year` rows describe the same cohort. The 2022+ CCRPI workbooks label their 5-year slice with the cohort year already; the 2018-2020 workbooks label it with the CCRPI report year and are re-keyed to year - 1 (their 5-year rows land in 2017-2019), and the standalone December 2021 5-year release is the 2020 cohort. The re-key rests on a cohort-alignment test the transform re-runs every time: a 5-year rate cannot fall below its own cohort's 4-year rate. For `on_time` rows, the SB 431 graduation year. Sourced from the bronze year column where one exists (CCRPI/legacy/on-time files; cross-checked against the filename) and from the filename for the standalone cohort releases. The February 2018 standalone 4-year release carries 2017-cohort data and lands in 2017.
district_codeDistrict Codestring——yes3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state-charter/state-school operators; the allowlisted pseudo-district code `RTC` (Residential Treatment Center aggregate, data years 2015-2018 only). NULL for state-level rows. FK to the districts dimension.
Full description
3-digit GOSA district code (zero-padded) for standard districts; 7-digit code for state-charter/state-school operators; the allowlisted pseudo-district code `RTC` (Residential Treatment Center aggregate, data years 2015-2018 only). NULL for state-level rows. FK to the districts dimension.

Joins districts; adds its label columns.

school_codeSchool Codestring——yes4-digit GOSA school code (zero-padded; later bronze years strip leading zeros). NULL for district- and state-level rows. FK to the schools dimension (composite key with district_code).
Full description
4-digit GOSA school code (zero-padded; later bronze years strip leading zeros). NULL for district- and state-level rows. FK to the schools dimension (composite key with district_code).

Joins schools; adds its label columns.

demographicDemographicstring——noStudent subgroup the row reports — race, gender, economic status, disability, and more; 'all' is the total.
Full description
Canonical demographic code (FK to demographics dimension). 10 subgroups are reported across every era (all, asian_pacific_islander, black, hispanic, white, multiracial, native_american, economically_disadvantaged, english_learners, students_with_disabilities); 8 more (active_duty, female, male, foster_care, homeless, migrant, not_economically_disadvantaged, students_without_disabilities) appear ONLY in 2023 via the GOSA 4-year cohort CSV's wider breakdown. Race uses the combined `asian_pacific_islander` bucket — no source file publishes separate Asian or Pacific Islander rows. `American Indian/Alaskan [Native]` label drift folds to `native_american`; the GOSA CSV's `Limited English Proficient` folds to `english_learners`.
18 allowed values
  • active_duty
  • all
  • asian_pacific_islander
  • black
  • economically_disadvantaged
  • english_learners
  • female
  • foster_care
  • hispanic
  • homeless
  • male
  • migrant
  • multiracial
  • native_american
  • not_economically_disadvantaged
  • students_with_disabilities
  • students_without_disabilities
  • white

Joins demographics; adds its label columns.

rate_typeRate Typestring——noWhich graduation-rate methodology the row uses: 4-year cohort, 5-year cohort, or the SB 431 on-time rate.
Full description
Graduation-rate methodology: `4_year` (federal adjusted 4-year cohort rate, 2012-2025), `5_year` (5-year cohort variant — the same cohort given one more year to graduate — 2017-2024, keyed to the cohort year; see year), or `on_time` (SB 431 statutory measure — continuous enrollment from Oct 1 of 9th grade — 2021-2024, school-level rows only). Denominator semantics differ per type (see num_cohort).
3 allowed values
  • 4_year
  • 5_year
  • on_time
graduation_rateGraduation Ratenumberproportion—yesShare of the cohort that graduated, on a 0-1 scale; which methodology applies is set by rate_type.
Full description
Graduation rate on the 0-1 decimal scale (bronze ships 0-100; divided by 100). Interpretation follows rate_type. For overlapping 4-year keys the CCRPI accountability value wins by source precedence; standalone cohort releases fill years CCRPI does not cover, and ~200 small-cell 2023 keys carry the GOSA CSV rate that the CCRPI workbook suppressed. CAVEAT: the rate and the count pair can come from releases published at different cutoffs — do NOT assume num_graduates / num_cohort equals graduation_rate for `4_year` rows (it reconciles only to ~0.4pp even within one release). For `on_time` rows the identity holds to published rounding and is enforced as a quality check.
num_cohortNumber Cohortintegercount—yesPublished cohort denominator. For `4_year` rows: the federal adjusted cohort (first-time 9th graders four years prior, adjusted for transfers) from the standalone cohort releases — ALL-Students demographic only in 2015-2022/2024-2025, all 18 demographics in 2023 via the GOSA CSV. For `on_time` rows: `Total Enrolled` per SB 431 (continuous enrollment from Oct 1). Never published for `5_year` rows or the 2012-2014 legacy years.
Full description
Published cohort denominator. For `4_year` rows: the federal adjusted cohort (first-time 9th graders four years prior, adjusted for transfers) from the standalone cohort releases — ALL-Students demographic only in 2015-2022/2024-2025, all 18 demographics in 2023 via the GOSA CSV. For `on_time` rows: `Total Enrolled` per SB 431 (continuous enrollment from Oct 1). Never published for `5_year` rows or the 2012-2014 legacy years.
num_graduatesNumber Graduatesintegercount—yesPublished count of graduates (cohort numerator). Same source coverage as num_cohort. Never exceeds num_cohort (0 violations source-wide; enforced as a quality check). CAVEAT: published at a different cutoff than the CCRPI graduation_rate for 4-year rows — see graduation_rate.
Full description
Published count of graduates (cohort numerator). Same source coverage as num_cohort. Never exceeds num_cohort (0 violations source-wide; enforced as a quality check). CAVEAT: published at a different cutoff than the CCRPI graduation_rate for 4-year rows — see graduation_rate.
indicator_targetIndicator Targetnumberproportion—yesCCRPI improvement target on the same 0-1 scale as graduation_rate (observed range [0.022, 0.9]). Published by the 2018, 2019, 2023, 2024 and 2025 CCRPI workbooks; because a workbook's 5-year rows are keyed to their cohort year (one year before the workbook), coverage by (year, rate_type) is: `4_year` in 2018, 2019, 2023, 2024, 2025 and `5_year` in 2017, 2018, 2022, 2023, 2024. NULL for the 2020 workbook's rows (2020 4-year, 2019 5-year — all `NA` at source, COVID CCRPI suspension), for the 2022 workbook's rows (2022 4-year, 2021 5-year — the release omitted the column), and for every non-CCRPI source and rate_type. NOT cross-topic comparable: each CCRPI topic's target inherits its companion metric's scale (§16).
Full description
CCRPI improvement target on the same 0-1 scale as graduation_rate (observed range [0.022, 0.9]). Published by the 2018, 2019, 2023, 2024 and 2025 CCRPI workbooks; because a workbook's 5-year rows are keyed to their cohort year (one year before the workbook), coverage by (year, rate_type) is: `4_year` in 2018, 2019, 2023, 2024, 2025 and `5_year` in 2017, 2018, 2022, 2023, 2024. NULL for the 2020 workbook's rows (2020 4-year, 2019 5-year — all `NA` at source, COVID CCRPI suspension), for the 2022 workbook's rows (2022 4-year, 2021 5-year — the release omitted the column), and for every non-CCRPI source and rate_type. NOT cross-topic comparable: each CCRPI topic's target inherits its companion metric's scale (§16).
ccrpi_flagCCRPI Flagstring——yesCCRPI performance color (green/yellow/red) for whether the school met its graduation improvement target.
Full description
CCRPI performance color flag: `green` (met the improvement target), `yellow` (improved but short of target), or `red` (did not improve); bronze G/Y/R recoded per §16. The graduation indicator never awards `green_star` in any bronze year (2018-2025, verified). Same publication coverage as indicator_target. A derived performance attribute functionally determined by the rest of the row key, so it is excluded from the contract grain.
3 allowed values
  • green
  • red
  • yellow

Filters

Query parameters the fact endpoint accepts. Comma-separated values are OR within a parameter; multiple parameters AND together.

ParameterKindAllowed valuesNotes
yearyear_exactany value—
year_minyear_rangeany value—
year_maxyear_rangeany value—
detaildetaildistrictsschoolsstatesenum-enforced, default: schools
district_codeforeign_keyany valuemulti-value
school_codeforeign_keyany valuemulti-value
demographicforeign_key
18 allowed values
  • active_duty
  • all
  • asian_pacific_islander
  • black
  • economically_disadvantaged
  • english_learners
  • female
  • foster_care
  • hispanic
  • homeless
  • male
  • migrant
  • multiracial
  • native_american
  • not_economically_disadvantaged
  • students_with_disabilities
  • students_without_disabilities
  • white
multi-value, enum-enforced
rate_typecategorical4_year5_yearon_timemulti-value, enum-enforced, pick one
ccrpi_flagcategoricalgreenredyellowmulti-value, enum-enforced
district_typedimension_attribute
7 allowed values
  • commission_charter
  • resa
  • standard
  • state_agency
  • state_charter
  • state_school
  • state_special
multi-value, enum-enforced
school_leveldimension_attributeelementarymiddlehighk12othermulti-value, enum-enforced
localedimension_attributecitysuburbtownruralmulti-value, enum-enforced
demographic_categorydimension_attribute
12 allowed values
  • aggregate
  • disability
  • economic_status
  • esol
  • foster_care
  • gender
  • grade
  • homeless_status
  • migrant_status
  • military
  • race
  • sped
multi-value, enum-enforced

Example requests

Run these against the base URL — they return live data.

All rows (first page), schools level

curl "https://georgiacivicdata.org/api/v1/education/ccrpi_graduation_rate"

schools data for 2025

curl "https://georgiacivicdata.org/api/v1/education/ccrpi_graduation_rate?year=2025"

Filtered to rate_type = 4_year for 2025

curl "https://georgiacivicdata.org/api/v1/education/ccrpi_graduation_rate?year=2025&rate_type=4_year"

One district (code 601), 2025

curl "https://georgiacivicdata.org/api/v1/education/ccrpi_graduation_rate?district_code=601&year=2025&detail=districts"

Download 2025 as CSV

curl "https://georgiacivicdata.org/api/v1/education/ccrpi_graduation_rate?year=2025&format=csv"

Notes & limitations

NULL handling

  • Suppressed cells (too few students to report) are NULL, never zero.
  • Zero is a real, reported value.

Limitations

Suppressed cells are NULL (not zero). State rows have NULL district_code and school_code. District rows have NULL school_code.