{
  "slug": "route-density-stops-per-hour",
  "title": "Route Density Stops Per Hour Calculator",
  "heading": "Route Stop Density Calculator",
  "category": "other",
  "url": "https://www.revenuelab.fyi/toolbox/route-density-stops-per-hour",
  "summary": "Plan realistic route timing from stop count, distance, and dwell.",
  "description": "Last-mile delivery routes live or die on stop density — how many stops you can realistically complete per hour once you account for drive time between stops, parking, walking, and delivery dwell at the door. This calculator takes total stops, total route miles, average speed between stops, and average dwell time per stop to compute total route time and the resulting stops-per-hour rate. Dispatchers use this to size routes to a driver's shift length; drivers use it to sanity-check whether a route with 140 stops in a 9-hour shift is realistic (it needs under 4 minutes total per stop including driving, which is tight for anything but dense urban drop density).",
  "formula": "Total time = (miles ÷ speed) + (stops × dwell); stops/hr = stops ÷ total hours.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=route-density-stops-per-hour",
  "inputs": [
    {
      "id": "stops",
      "label": "Total stops",
      "kind": "number",
      "hint": null,
      "default": 120,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "routeMiles",
      "label": "Total route miles",
      "kind": "number",
      "hint": null,
      "default": 85,
      "unit": "mi",
      "min": 1,
      "max": null
    },
    {
      "id": "avgSpeed",
      "label": "Average speed between stops",
      "kind": "number",
      "hint": null,
      "default": 22,
      "unit": "mph",
      "min": 1,
      "max": null
    },
    {
      "id": "dwellMinutes",
      "label": "Average dwell per stop",
      "kind": "number",
      "hint": null,
      "default": 2.5,
      "unit": "min",
      "min": 0.1,
      "max": null
    },
    {
      "id": "shiftHours",
      "label": "Available shift length",
      "kind": "number",
      "hint": null,
      "default": 9,
      "unit": "hr",
      "min": 1,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "stopsPerHour",
      "label": "Stops per hour",
      "format": "decimal",
      "hint": null,
      "primary": true
    },
    {
      "id": "totalHours",
      "label": "Total route time",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "driveHours",
      "label": "Drive time",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "dwellHours",
      "label": "Total dwell time",
      "format": "decimal",
      "hint": null,
      "primary": false
    },
    {
      "id": "overShiftBy",
      "label": "Hours over available shift",
      "format": "decimal",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Total stops: 120",
      "Total route miles: 85 mi",
      "Average speed between stops: 22 mph",
      "Average dwell per stop: 2.5 min",
      "Available shift length: 9 hr"
    ],
    "outputs": [
      "Stops per hour: 13.54",
      "Total route time: 8.86",
      "Drive time: 3.86",
      "Total dwell time: 5",
      "Hours over available shift: 0"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter total stops.",
      "Enter total route miles (mi).",
      "Enter average speed between stops (mph).",
      "Enter average dwell per stop (min).",
      "Enter available shift length (hr).",
      "Read your stops per hour on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "stops": 72,
        "routeMiles": 51,
        "avgSpeed": 13,
        "dwellMinutes": 1.5,
        "shiftHours": 5.3999999999999995
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "stops": 120,
        "routeMiles": 85,
        "avgSpeed": 22,
        "dwellMinutes": 2.5,
        "shiftHours": 9
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "stops": 192,
        "routeMiles": 136,
        "avgSpeed": 35,
        "dwellMinutes": 4,
        "shiftHours": 14.4
      }
    }
  ],
  "limitations": [
    "Estimates assume standard, average conditions — local rules, pricing, and materials vary.",
    "Results are rounded for readability; add a buffer before ordering, booking, or committing.",
    "Double-check anything with a real cost attached against a local quote."
  ],
  "faq": [
    {
      "q": "What's a typical stops-per-hour rate for last-mile delivery?",
      "a": "Dense residential parcel routes commonly run 14-20 stops per hour; suburban routes with more spread-out drops run 8-12; rural or B2B routes with longer distances between stops can drop to 4-6 stops per hour."
    },
    {
      "q": "What counts as dwell time?",
      "a": "Time from parking to getting back in the vehicle — walking to the door, scanning, photo confirmation, and any customer interaction. It's easy to underestimate; even 30 extra seconds per stop across 150 stops adds 75 minutes to a route."
    },
    {
      "q": "How do I use the feasibility check?",
      "a": "If hours over shift is greater than zero, the route as planned won't finish within the driver's available hours without cutting into breaks or running late — either reduce stop count, tighten the route sequence, or extend the shift."
    },
    {
      "q": "Does average speed include traffic and lights?",
      "a": "It should — use your actual historical average speed for that route type from telematics data, not posted speed limits. Urban routes with frequent stop lights often average 15-20 mph even on roads posted at 35-40."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/trailer-utilization-rate",
    "https://www.revenuelab.fyi/toolbox/detention-pay-recovery",
    "https://www.revenuelab.fyi/toolbox/van-fleet-replacement-cycle"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Route Density Stops Per Hour Calculator (https://www.revenuelab.fyi/toolbox/route-density-stops-per-hour)"
}