{
  "id": "grade-curve",
  "version": "e637649bf889",
  "status": "published",
  "name": "Grade Curve Calculator",
  "question": "How does the grade curve work?",
  "summary": "Curves a test score three ways: a flat curve that adds points, a scale that multiplies, or a linear curve that maps the class’s lowest and highest scores onto a new range.",
  "category": "education",
  "subcategory": "grades",
  "url": "https://www.acalculator.org/education/grade-curve-calculator",
  "markdown": "https://www.acalculator.org/education/grade-curve-calculator.md",
  "kind": "function",
  "method": "Raw % = score ÷ points possible × 100, and top % the same for the highest score. Flat: curved % = raw % + (target − top %). Scale: curved % = raw % × target ÷ top %. Linear: curved % = new low + (target − new low) ÷ (top % − low %) × (raw % − low %).",
  "assumptions": [
    "Every score is on the same test, out of the same points possible; your score is at most the highest score.",
    "A curve can give more than 100% if you set the target above 100%; nothing is capped.",
    "Values are taken exactly as typed; percents are shown to 2 decimal places, halves away from zero."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "m": {
        "title": "Curve",
        "description": "Flat adds the same points to everyone; scale multiplies; linear stretches the low-to-high range.",
        "type": "string",
        "enum": [
          "flat",
          "scale",
          "linear"
        ]
      },
      "s": {
        "title": "Your score (points)",
        "description": "The points you scored on the test.",
        "type": "number",
        "minimum": 0,
        "maximum": 1000000
      },
      "t": {
        "title": "Points possible",
        "description": "The most points the test allows; 100 when scores are percents.",
        "type": "number",
        "minimum": 0.0001,
        "maximum": 1000000
      },
      "h": {
        "title": "Highest score in the class",
        "description": "The top score anyone got, in points.",
        "type": "number",
        "minimum": 0,
        "maximum": 1000000
      },
      "l": {
        "title": "Lowest score in the class",
        "description": "The lowest score anyone got, in points.",
        "type": "number",
        "minimum": 0,
        "maximum": 1000000
      },
      "ty": {
        "title": "Curve the top score to",
        "description": "The percent the highest score becomes; usually 100%.",
        "type": "number",
        "x-unit": "percent",
        "minimum": 0,
        "maximum": 1000
      },
      "by": {
        "title": "Curve the lowest score to",
        "description": "The percent the lowest score becomes.",
        "type": "number",
        "x-unit": "percent",
        "minimum": 0,
        "maximum": 1000
      }
    }
  },
  "outputs": {
    "curved": {
      "label": "Curved grade",
      "description": "Your grade after the curve, as a percent to 2 decimal places.",
      "format": "text"
    },
    "raw": {
      "label": "Raw grade",
      "description": "Score ÷ points possible × 100, before the curve, to 2 decimal places.",
      "format": "text"
    },
    "curvedPoints": {
      "label": "Curved score (points)",
      "description": "The curved percent of the points possible.",
      "format": "number"
    },
    "added": {
      "label": "Points added",
      "description": "Curved points minus your points.",
      "format": "number"
    },
    "rule": {
      "label": "Rule",
      "description": "The curve as a formula on percents.",
      "format": "text"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "m": "flat",
      "s": 75,
      "t": 100,
      "h": 92,
      "l": 55,
      "ty": 100,
      "by": 60
    },
    "outputs": {
      "curved": "83.00%",
      "raw": "75.00%",
      "curvedPoints": 83,
      "added": 8,
      "rule": "curved % = raw % + (100.00 − 92.00) = raw % + 8.00"
    },
    "text": "Your curved grade is 83.00%."
  },
  "examples": [
    {
      "given": {
        "m": "flat",
        "s": 75,
        "t": 100,
        "h": 92,
        "ty": 100
      },
      "expect": {
        "curved": "83.00%",
        "raw": "75.00%",
        "curvedPoints": 83,
        "added": 8
      },
      "source": "CompSci.rocks, Should you grade on a curve? (flat curve: subtract the highest score from a perfect score and add the difference to everyone; linear distribution: Score = Y₀ + [(Y₁ − Y₀)/(X₁ − X₀)] × (Z − X₀), 72% with scores 55 to 96 curved to 60 to 100 is about 77%), https://compsci.rocks/blog/curve-grades/ (retrieved 2026-10-05); hand calculation in content.mdx: 75 + (100 − 92) = 83"
    },
    {
      "given": {
        "m": "linear",
        "s": 72,
        "t": 100,
        "h": 96,
        "l": 55,
        "ty": 100,
        "by": 60
      },
      "expect": {
        "curved": "76.59%",
        "curvedPoints": 76.58536585365853,
        "added": 4.585365853658536
      },
      "source": "CompSci.rocks, Should you grade on a curve? (flat curve: subtract the highest score from a perfect score and add the difference to everyone; linear distribution: Score = Y₀ + [(Y₁ − Y₀)/(X₁ − X₀)] × (Z − X₀), 72% with scores 55 to 96 curved to 60 to 100 is about 77%), https://compsci.rocks/blog/curve-grades/ (retrieved 2026-10-05); hand calculation in content.mdx: 60 + 40 ÷ 41 × 17 = 76.585…"
    },
    {
      "given": {
        "m": "scale",
        "s": 34,
        "t": 40,
        "h": 38,
        "ty": 100
      },
      "expect": {
        "curved": "89.47%",
        "raw": "85.00%",
        "curvedPoints": 35.78947368421053
      },
      "source": "CompSci.rocks, Should you grade on a curve? (flat curve: subtract the highest score from a perfect score and add the difference to everyone; linear distribution: Score = Y₀ + [(Y₁ − Y₀)/(X₁ − X₀)] × (Z − X₀), 72% with scores 55 to 96 curved to 60 to 100 is about 77%), https://compsci.rocks/blog/curve-grades/ (retrieved 2026-10-05); hand calculation in content.mdx (the linear rule with 0 kept at 0): 85 × 100 ÷ 95 = 89.47"
    },
    {
      "given": {
        "m": "linear",
        "s": 156,
        "t": 200,
        "h": 194,
        "l": 0,
        "ty": 100,
        "by": 23.5
      },
      "expect": {
        "curvedPoints": 170.03092783505156,
        "curved": "85.02%"
      },
      "source": "Texas A&M, Math 467 grades page (a linear curve: scores × 0.79 + 47 raise the top score 194 to 200 and the median 156 to 170), https://people.tamu.edu/~fulling/m467/s09/grades.html (retrieved 2026-10-05); CompSci.rocks, Should you grade on a curve? (flat curve: subtract the highest score from a perfect score and add the difference to everyone; linear distribution: Score = Y₀ + [(Y₁ − Y₀)/(X₁ − X₀)] × (Z − X₀), 72% with scores 55 to 96 curved to 60 to 100 is about 77%), https://compsci.rocks/blog/curve-grades/ (retrieved 2026-10-05); hand calculation in content.mdx: 23.5 + 76.5 ÷ 97 × 78 = 85.015…%, × 2 = 170.03 points"
    }
  ],
  "sources": [
    "CompSci.rocks, Should you grade on a curve?: the flat curve (subtract the highest score from a perfect score and add the difference to every score) and the linear distribution, Score = Y₀ + [(Y₁ − Y₀)/(X₁ − X₀)] × (Z − X₀), with 72% on scores from 55 to 96 curved to 60 to 100 giving about 77%. Retrieved 2026-10-05. https://compsci.rocks/blog/curve-grades/",
    "Texas A&M University, Math 467 grades page: a linear curve that multiplies scores by 0.79 and adds 47, raising the top score 194 to 200 and the median 156 to 170. Retrieved 2026-10-05. https://people.tamu.edu/~fulling/m467/s09/grades.html"
  ],
  "related": [
    "square-root-curve",
    "test-grade",
    "grade",
    "final-grade"
  ],
  "changelog": []
}
