{
  "id": "distance-calculator",
  "version": "2.0.0",
  "name": "Distance Calculator",
  "shortName": "Distance",
  "description": "Calculate distance in 2D, 3D, or between two latitude/longitude coordinates on Earth.",
  "category": "Math & Statistics",
  "categorySlug": "math-statistics",
  "keywords": [
    "distance formula",
    "2d distance",
    "3d distance",
    "latitude longitude distance",
    "great circle distance",
    "haversine"
  ],
  "status": "live",
  "workStatus": "pending",
  "reviewStatus": "pending",
  "migrationStatus": "migrated",
  "migratedDate": "2026-08-25",
  "engine": "native",
  "creator": null,
  "reviewer": null,
  "quality": {
    "availability": "live",
    "technicalReviewRecord": "/reviews/distance-calculator.json",
    "qualifiedReview": "pending",
    "qualifiedReviewer": null,
    "qualifiedReviewDate": null,
    "formulaVersion": "2.0.0",
    "referenceCoverage": "references-listed",
    "releaseTestScope": "Catalog and regression checks are not a professional formula audit; consult release evidence.",
    "historicalMetadataDate": "2026-08-25",
    "historicalMetadataNotice": "The imported date is not evidence of a completed human review."
  },
  "urls": {
    "page": "/calculator/distance-calculator/",
    "definition": "/calculator/distance-calculator/definition.json",
    "schema": "/calculator/distance-calculator/schema.json",
    "llms": "/calculator/distance-calculator/llms.txt",
    "legacyDefinition": "/calculator/distance-calculator.json"
  },
  "queryExample": "https://askcalculators.com/calculator/distance-calculator/?mode=2d&x1=0&y1=0&x2=3&y2=4",
  "queryParameters": {
    "mode": {
      "label": "Distance model",
      "type": "select",
      "required": true,
      "default": "2d"
    },
    "x1": {
      "label": "x₁",
      "type": "number",
      "required": true,
      "default": 0,
      "showWhen": {
        "field": "mode",
        "equals": "2d"
      }
    },
    "y1": {
      "label": "y₁",
      "type": "number",
      "required": true,
      "default": 0,
      "showWhen": {
        "field": "mode",
        "equals": "2d"
      }
    },
    "x2": {
      "label": "x₂",
      "type": "number",
      "required": true,
      "default": 3,
      "showWhen": {
        "field": "mode",
        "equals": "2d"
      }
    },
    "y2": {
      "label": "y₂",
      "type": "number",
      "required": true,
      "default": 4,
      "showWhen": {
        "field": "mode",
        "equals": "2d"
      }
    },
    "x1Three": {
      "label": "x₁",
      "type": "number",
      "required": true,
      "default": 0,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      }
    },
    "y1Three": {
      "label": "y₁",
      "type": "number",
      "required": true,
      "default": 0,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      }
    },
    "z1Three": {
      "label": "z₁",
      "type": "number",
      "required": true,
      "default": 0,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      }
    },
    "x2Three": {
      "label": "x₂",
      "type": "number",
      "required": true,
      "default": 3,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      }
    },
    "y2Three": {
      "label": "y₂",
      "type": "number",
      "required": true,
      "default": 4,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      }
    },
    "z2Three": {
      "label": "z₂",
      "type": "number",
      "required": true,
      "default": 12,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      }
    },
    "latitude1": {
      "label": "Latitude 1",
      "type": "number",
      "required": true,
      "default": 40.7128,
      "showWhen": {
        "field": "mode",
        "equals": "geographic"
      }
    },
    "longitude1": {
      "label": "Longitude 1",
      "type": "number",
      "required": true,
      "default": -74.006,
      "showWhen": {
        "field": "mode",
        "equals": "geographic"
      }
    },
    "latitude2": {
      "label": "Latitude 2",
      "type": "number",
      "required": true,
      "default": 51.5074,
      "showWhen": {
        "field": "mode",
        "equals": "geographic"
      }
    },
    "longitude2": {
      "label": "Longitude 2",
      "type": "number",
      "required": true,
      "default": -0.1278,
      "showWhen": {
        "field": "mode",
        "equals": "geographic"
      }
    }
  },
  "inputs": [
    {
      "id": "mode",
      "label": "Distance model",
      "type": "select",
      "required": true,
      "defaultValue": "2d",
      "options": [
        {
          "label": "2D coordinates",
          "value": "2d"
        },
        {
          "label": "3D coordinates",
          "value": "3d"
        },
        {
          "label": "Latitude and longitude",
          "value": "geographic"
        }
      ],
      "width": "full"
    },
    {
      "id": "x1",
      "label": "x₁",
      "type": "number",
      "required": true,
      "defaultValue": 0,
      "step": 0.01,
      "showWhen": {
        "field": "mode",
        "equals": "2d"
      },
      "width": "half"
    },
    {
      "id": "y1",
      "label": "y₁",
      "type": "number",
      "required": true,
      "defaultValue": 0,
      "step": 0.01,
      "showWhen": {
        "field": "mode",
        "equals": "2d"
      },
      "width": "half"
    },
    {
      "id": "x2",
      "label": "x₂",
      "type": "number",
      "required": true,
      "defaultValue": 3,
      "step": 0.01,
      "showWhen": {
        "field": "mode",
        "equals": "2d"
      },
      "width": "half"
    },
    {
      "id": "y2",
      "label": "y₂",
      "type": "number",
      "required": true,
      "defaultValue": 4,
      "step": 0.01,
      "showWhen": {
        "field": "mode",
        "equals": "2d"
      },
      "width": "half"
    },
    {
      "id": "x1Three",
      "label": "x₁",
      "type": "number",
      "required": true,
      "defaultValue": 0,
      "step": 0.01,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      },
      "width": "half"
    },
    {
      "id": "y1Three",
      "label": "y₁",
      "type": "number",
      "required": true,
      "defaultValue": 0,
      "step": 0.01,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      },
      "width": "half"
    },
    {
      "id": "z1Three",
      "label": "z₁",
      "type": "number",
      "required": true,
      "defaultValue": 0,
      "step": 0.01,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      },
      "width": "half"
    },
    {
      "id": "x2Three",
      "label": "x₂",
      "type": "number",
      "required": true,
      "defaultValue": 3,
      "step": 0.01,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      },
      "width": "half"
    },
    {
      "id": "y2Three",
      "label": "y₂",
      "type": "number",
      "required": true,
      "defaultValue": 4,
      "step": 0.01,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      },
      "width": "half"
    },
    {
      "id": "z2Three",
      "label": "z₂",
      "type": "number",
      "required": true,
      "defaultValue": 12,
      "step": 0.01,
      "showWhen": {
        "field": "mode",
        "equals": "3d"
      },
      "width": "half"
    },
    {
      "id": "latitude1",
      "label": "Latitude 1",
      "type": "number",
      "required": true,
      "defaultValue": 40.7128,
      "min": -90,
      "max": 90,
      "step": 0.000001,
      "showWhen": {
        "field": "mode",
        "equals": "geographic"
      },
      "width": "half"
    },
    {
      "id": "longitude1",
      "label": "Longitude 1",
      "type": "number",
      "required": true,
      "defaultValue": -74.006,
      "min": -180,
      "max": 180,
      "step": 0.000001,
      "showWhen": {
        "field": "mode",
        "equals": "geographic"
      },
      "width": "half"
    },
    {
      "id": "latitude2",
      "label": "Latitude 2",
      "type": "number",
      "required": true,
      "defaultValue": 51.5074,
      "min": -90,
      "max": 90,
      "step": 0.000001,
      "showWhen": {
        "field": "mode",
        "equals": "geographic"
      },
      "width": "half"
    },
    {
      "id": "longitude2",
      "label": "Longitude 2",
      "type": "number",
      "required": true,
      "defaultValue": -0.1278,
      "min": -180,
      "max": 180,
      "step": 0.000001,
      "showWhen": {
        "field": "mode",
        "equals": "geographic"
      },
      "width": "half"
    }
  ],
  "outputs": [
    {
      "id": "distance",
      "label": "Distance",
      "format": "number",
      "primary": true,
      "digits": 6
    },
    {
      "id": "distanceKilometers",
      "label": "Distance",
      "format": "number",
      "digits": 3,
      "suffix": " km"
    },
    {
      "id": "distanceMiles",
      "label": "Distance",
      "format": "number",
      "digits": 3,
      "suffix": " mi"
    },
    {
      "id": "deltaX",
      "label": "Δx",
      "format": "number",
      "digits": 6
    },
    {
      "id": "deltaY",
      "label": "Δy",
      "format": "number",
      "digits": 6
    },
    {
      "id": "deltaZ",
      "label": "Δz",
      "format": "number",
      "digits": 6
    },
    {
      "id": "initialBearing",
      "label": "Initial bearing",
      "format": "number",
      "digits": 3,
      "suffix": "°"
    },
    {
      "id": "midpoint",
      "label": "Midpoint",
      "format": "text"
    }
  ],
  "formula": {
    "expression": "Cartesian: d=√[Σ(qᵢ−pᵢ)²]; geographic: d=2R·asin(√[sin²(Δφ/2)+cosφ₁cosφ₂sin²(Δλ/2)])."
  },
  "examples": [
    {
      "label": "Reproducible default-input example (not a personal recommendation)",
      "inputs": {
        "mode": "2d",
        "x1": 0,
        "y1": 0,
        "x2": 3,
        "y2": 4,
        "x1Three": 0,
        "y1Three": 0,
        "z1Three": 0,
        "x2Three": 3,
        "y2Three": 4,
        "z2Three": 12,
        "latitude1": 40.7128,
        "longitude1": -74.006,
        "latitude2": 51.5074,
        "longitude2": -0.1278
      }
    }
  ],
  "sources": [
    {
      "label": "Calculator.net reference calculator",
      "url": "https://www.calculator.net/distance-calculator.html"
    }
  ]
}
