{
  "id": "price-elasticity-of-demand",
  "version": "68e99540948d",
  "status": "published",
  "name": "Price Elasticity of Demand Calculator",
  "question": "What is price elasticity of demand?",
  "summary": "Finds the price elasticity of demand by the midpoint method from two prices and the quantities sold at each, says whether demand is elastic, inelastic or unit elastic, and shows the change in revenue.",
  "category": "finance",
  "subcategory": "business",
  "url": "https://www.acalculator.org/finance/price-elasticity-of-demand-calculator",
  "markdown": "https://www.acalculator.org/finance/price-elasticity-of-demand-calculator.md",
  "kind": "function",
  "method": "Elasticity = (% change in quantity) ÷ (% change in price), where each % change = (new − old) ÷ ((new + old) ÷ 2) × 100 (the midpoint method), shown without its sign.",
  "assumptions": [
    "The midpoint (arc) method, so going from A to B gives the same elasticity as going from B to A.",
    "Everything else that affects demand stays the same between the two points.",
    "Prices are at least $0.01; quantities are 0 or more, not both 0."
  ],
  "inputs": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "properties": {
      "p1": {
        "title": "Starting price",
        "description": "The price before the change.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 0.01,
        "maximum": 1000000000000
      },
      "q1": {
        "title": "Quantity at the starting price",
        "description": "How many units buyers want at the starting price.",
        "type": "number",
        "minimum": 0,
        "maximum": 1000000000000000
      },
      "p2": {
        "title": "New price",
        "description": "The price after the change.",
        "type": "number",
        "x-unit": "USD",
        "minimum": 0.01,
        "maximum": 1000000000000
      },
      "q2": {
        "title": "Quantity at the new price",
        "description": "How many units buyers want at the new price.",
        "type": "number",
        "minimum": 0,
        "maximum": 1000000000000000
      }
    }
  },
  "outputs": {
    "elasticity": {
      "label": "Price elasticity of demand",
      "description": "The size of % change in quantity ÷ % change in price (midpoint method), without its sign.",
      "format": "number"
    },
    "kind": {
      "label": "Demand is",
      "description": "Elastic above 1, unit elastic at 1, inelastic below 1, perfectly inelastic at 0.",
      "format": "text"
    },
    "signed": {
      "label": "Elasticity with its sign",
      "description": "% change in quantity ÷ % change in price; negative when price and quantity move in opposite directions.",
      "format": "number"
    },
    "quantityChange": {
      "label": "% change in quantity",
      "description": "(Q₂ − Q₁) ÷ ((Q₁ + Q₂) ÷ 2) × 100.",
      "format": "percent"
    },
    "priceChange": {
      "label": "% change in price",
      "description": "(P₂ − P₁) ÷ ((P₁ + P₂) ÷ 2) × 100.",
      "format": "percent"
    },
    "revenue1": {
      "label": "Revenue before",
      "description": "Starting price × starting quantity.",
      "format": "money"
    },
    "revenue2": {
      "label": "Revenue after",
      "description": "New price × new quantity.",
      "format": "money"
    },
    "revenueChange": {
      "label": "Change in revenue",
      "description": "Revenue after minus revenue before.",
      "format": "money"
    }
  },
  "defaultAnswer": {
    "inputs": {
      "p1": 70,
      "q1": 2800,
      "p2": 60,
      "q2": 3000
    },
    "outputs": {
      "elasticity": 0.44827586206896547,
      "kind": "inelastic",
      "signed": -0.44827586206896547,
      "quantityChange": 6.896551724137931,
      "priceChange": -15.384615384615385,
      "revenue1": 196000,
      "revenue2": 180000,
      "revenueChange": -16000
    },
    "text": "The price elasticity of demand is 0.45: demand is inelastic."
  },
  "examples": [
    {
      "given": {
        "p1": 70,
        "q1": 2800,
        "p2": 60,
        "q2": 3000
      },
      "expect": {
        "elasticity": 0.44827586206896547,
        "kind": "inelastic",
        "quantityChange": 6.896551724137931,
        "priceChange": -15.384615384615385,
        "revenue1": 196000,
        "revenue2": 180000,
        "revenueChange": -16000
      },
      "source": "OpenStax, Principles of Economics 3e, §5.1 Price Elasticity of Demand and Price Elasticity of Supply (midpoint method: % change = (new − old) ÷ ((new + old) ÷ 2) × 100; elasticity = % change in quantity ÷ % change in price; from $70 and 2,800 to $60 and 3,000 the elasticity is 0.45, inelastic; elastic above 1, unitary at 1, inelastic below 1), https://openstax.org/books/principles-economics-3e/pages/5-1-price-elasticity-of-demand-and-price-elasticity-of-supply (retrieved 2026-10-02) (6.9%, −15.4%, 0.45); Python 3: (200/2900*100)/(-10/65*100)"
    },
    {
      "given": {
        "p1": 4,
        "q1": 6,
        "p2": 6,
        "q2": 4
      },
      "expect": {
        "elasticity": 1,
        "kind": "unit elastic",
        "quantityChange": -40,
        "priceChange": 40,
        "revenueChange": 0
      },
      "source": "hand calculation in content.mdx: −2 ÷ 5 = −40% and 2 ÷ 5 = 40%, so 1; OpenStax, Principles of Economics 3e, §5.1 Price Elasticity of Demand and Price Elasticity of Supply (midpoint method: % change = (new − old) ÷ ((new + old) ÷ 2) × 100; elasticity = % change in quantity ÷ % change in price; from $70 and 2,800 to $60 and 3,000 the elasticity is 0.45, inelastic; elastic above 1, unitary at 1, inelastic below 1), https://openstax.org/books/principles-economics-3e/pages/5-1-price-elasticity-of-demand-and-price-elasticity-of-supply (retrieved 2026-10-02)"
    },
    {
      "given": {
        "p1": 10,
        "q1": 100,
        "p2": 12,
        "q2": 70
      },
      "expect": {
        "elasticity": 1.9411764705882353,
        "kind": "elastic",
        "signed": -1.9411764705882353,
        "quantityChange": -35.294117647058826,
        "priceChange": 18.181818181818183,
        "revenueChange": -160
      },
      "source": "hand calculation in content.mdx: −30 ÷ 85 = −35.29%, 2 ÷ 11 = 18.18%, ratio 1.94; Python 3: (-30/85*100)/(2/11*100); OpenStax, Principles of Economics 3e, §5.1 Price Elasticity of Demand and Price Elasticity of Supply (midpoint method: % change = (new − old) ÷ ((new + old) ÷ 2) × 100; elasticity = % change in quantity ÷ % change in price; from $70 and 2,800 to $60 and 3,000 the elasticity is 0.45, inelastic; elastic above 1, unitary at 1, inelastic below 1), https://openstax.org/books/principles-economics-3e/pages/5-1-price-elasticity-of-demand-and-price-elasticity-of-supply (retrieved 2026-10-02)"
    },
    {
      "given": {
        "p1": 5,
        "q1": 50,
        "p2": 6,
        "q2": 50
      },
      "expect": {
        "elasticity": 0,
        "kind": "perfectly inelastic",
        "revenueChange": 50
      },
      "source": "hand calculation in content.mdx: the quantity does not change; OpenStax, Principles of Economics 3e, §5.1 Price Elasticity of Demand and Price Elasticity of Supply (midpoint method: % change = (new − old) ÷ ((new + old) ÷ 2) × 100; elasticity = % change in quantity ÷ % change in price; from $70 and 2,800 to $60 and 3,000 the elasticity is 0.45, inelastic; elastic above 1, unitary at 1, inelastic below 1), https://openstax.org/books/principles-economics-3e/pages/5-1-price-elasticity-of-demand-and-price-elasticity-of-supply (retrieved 2026-10-02)"
    }
  ],
  "sources": [
    "OpenStax, Principles of Economics 3e, §5.1 Price Elasticity of Demand and Price Elasticity of Supply (midpoint method: % change = (new − old) ÷ ((new + old) ÷ 2) × 100; elasticity = % change in quantity ÷ % change in price; from $70 and 2,800 to $60 and 3,000 the elasticity is 0.45, inelastic; elastic above 1, unitary at 1, inelastic below 1). https://openstax.org/books/principles-economics-3e/pages/5-1-price-elasticity-of-demand-and-price-elasticity-of-supply (retrieved 2026-10-02)"
  ],
  "related": [
    "percentage-change",
    "markup"
  ],
  "changelog": []
}
