Home › Medical & Clinical › Pack-Years Calculator
Pack-Years Calculator
Converts a smoking history into pack-years (packs per day × years smoked, 20 cigarettes per pack) and notes the USPSTF lung-cancer screening threshold of 20 pack-years.
When to use
You need a standardised cumulative smoking exposure for risk assessment or screening eligibility.
Do not use when: Exposure is from cigars, pipes, vaping or smokeless tobacco, for which pack-years are not defined.
Formula
pack_years = (cigarettes_per_day / cigarettes_per_pack) × years_smoked
Pack-years summarise dose but not intensity or time since quitting, which also affect risk; periods with different rates should be calculated separately and added. Results are informational only and not a substitute for clinical judgement or medical advice.
Inputs
| Parameter | Type | Unit | Required | Description |
|---|---|---|---|---|
cigarettes_per_day | number | no | Average cigarettes smoked per day. Give this or packs_per_day. Range: ≥ 0, ≤ 200 | |
packs_per_day | number | no | Average packs per day (alternative to cigarettes_per_day). Range: ≥ 0, ≤ 10 | |
years_smoked | number | years | yes | Total years of smoking at that rate. Range: ≥ 0, ≤ 100 |
cigarettes_per_pack | integer | default 20 | Pack size; the pack-year definition uses 20. Range: ≥ 10, ≤ 50 |
Outputs
| Output | Type | Unit | Description |
|---|---|---|---|
pack_years | number | pack-years | packs_per_day × years_smoked. |
packs_per_day | number | Packs per day used. | |
cigarettes_per_day | number | Cigarettes per day used. | |
total_cigarettes | number | cigarettes_per_day × 365.25 × years_smoked. | |
screening_note | string | Whether the history reaches the 20 pack-year threshold used for lung-cancer screening eligibility (with age 50–80 and quit ≤15 years ago). |
Example
20 cigarettes/day for 30 years: {"cigarettes_per_day":20,"years_smoked":30} → {"pack_years":30,"packs_per_day":1,"total_cigarettes":219150}
Half a pack a day for 15 years: {"packs_per_day":0.5,"years_smoked":15} → {"pack_years":7.5,"cigarettes_per_day":10}
GET https://tttkmbb.com/api/v1/calculate/pack-years?cigarettes_per_day=20&years_smoked=30
Machine access
- API:
GET https://tttkmbb.com/api/v1/calculate/pack-years(query parameters) orPOSTwith a JSON body{"inputs": {...}} - Schema: https://tttkmbb.com/api/v1/calculators/pack-years · Markdown: https://tttkmbb.com/medical/pack-years.md · JSON definition: https://tttkmbb.com/medical/pack-years.json
- MCP: server
https://tttkmbb.com/mcp, toolrun_calculator with calculator_id="pack-years" - OpenAPI operationId:
calculate_pack_years - Freshness:
static. Authentication: none. Rate limit: fair use (see rate limits).
Sources
FAQ
How do I handle changing habits?
Compute each period separately (e.g. 10/day for 5 years = 2.5, then 20/day for 10 years = 10) and add them: 12.5 pack-years.
Is 20 pack-years a hard cut-off?
USPSTF 2021 recommends annual low-dose CT for adults aged 50–80 with at least 20 pack-years who smoke or quit within 15 years; other programmes use different thresholds.
Related calculators
- Age Calculator — Age is part of screening eligibility.
- VO2 Max Calculator — Cardiorespiratory fitness context.