Osteoporosis ICD-10 Codes: 2024–2025 Guide

Osteoporosis ICD-10 Codes: The 2024–2025 Complete Guide
Fast answer
• Osteoporosis with a current pathologic fracture → ICD-10 chapter M80
• Osteoporosis without a current fracture → ICD-10 chapter M81
• M80 codes require specification for fracture site (5th char), laterality (6th char), and encounter type (7th char), using X placeholders if a site or laterality character doesn’t apply (e.g., M80.9XXA).
• M81 codes do not include site-specific or laterality characters by design.
Choosing between M80.051A and M81.0 during a 10-minute chart scrub can feel anything but simple. This guide breaks down every osteoporosis ICD-10-CM code, summarizes the latest guideline notes, and walks through real-world scenarios so you can code confidently—and avoid costly claim denials.
Table of contents
- Osteoporosis coding basics
- What’s new for 2024–2025?
- Difference between M80 and M81
- M80 code list (with fracture)
- M81 code list (without fracture)
- 7th-character refresher & denial traps
- Real-world coding scenarios
- FAQ
- Using BodySpec DXA scans for early bone-health insight
Osteoporosis coding basics
Osteoporosis is a skeletal disorder characterized by low bone mineral density (BMD) and micro-architectural deterioration of bone tissue.
A DEXA scan T-score of ≤ –2.5 meets the World Health Organization threshold for a diagnostic osteoporosis finding.
Accurate ICD-10-CM coding is essential for quality reporting, reimbursement, and population-health analytics.
Key reminders:
- Pathologic fracture present? Choose an M80 code.
- No current fracture? Choose an M81 code.
- Specify the anatomic site (5th character) and laterality (6th character) for M80.
- Append the correct 7th character (A, D, G, or S)—skipping it is a frequent claim-denial trigger (AAPC).
What’s new for 2024–2025?
Good news: No osteoporosis codes were added or deleted for FY 2024 or FY 2025. However, the FY 2025 ICD-10-CM Official Guidelines for Coding and Reporting include two clarifications that affect osteoporosis claims (Guidelines, Section I.C.13):
- Sequencing for adverse-effect coding – When osteoporosis is drug-induced, code the osteoporosis (M80.4- / M81.4) first, followed by T38.0X5- with the appropriate 7th character (A, D, or S) to identify glucocorticoids as the causal drug.
- 7th-character emphasis – CMS reiterates that all pathological fracture codes in chapter M80 must include the correct 7th character—even on problem lists carried forward to subsequent encounters.
M80 vs M81—what’s the difference?

Chapter | Description | When to use |
---|---|---|
M80 | Osteoporosis with current pathologic fracture | Confirmed fracture caused by the underlying osteoporosis. Requires 5th (site), 6th (laterality), and 7th (encounter) characters. |
M81 | Osteoporosis without current pathologic fracture | Osteoporosis documented, no active fracture at this encounter. Site/laterality characters not used. |
Tip: If an osteoporotic fracture is healed and today’s visit is routine follow-up, code the osteoporosis with M81 and add Z87.312 (“Personal history of healed osteoporosis fracture”).
M80 codes (osteoporosis with fracture)
ICD-10-CM structures M80 by cause (age-related, drug-induced, other, unspecified) and site (5th character). The 6th character shows laterality for paired bones (1 = right, 2 = left, 9 = unspecified). Below is a quick-reference snapshot of high-volume combinations. Refer to the official tabular list for the full hierarchy.
Base Code | Etiology | Example 5th Character (Site) | Example 6th Character (Laterality) | Sample Full Code | 7th Char Req’d |
---|---|---|---|---|---|
M80.0 | Age-related osteoporosis with FX | 1 = shoulder; 5 = femur; 8 = vertebra | 1 = right, 2 = left, 9 = unspecified; X for midline sites like vertebra | M80.051A (age-related, right femur, initial) | Yes |
M80.4 | Drug-induced osteoporosis with FX | Same site digits | Same laterality digits or X for midline | M80.48XD (drug-induced, vertebra, subsequent) | Yes |
M80.8 | Other osteoporosis with FX | Same site digits | Same laterality digits | M80.88XS (other, vertebra, sequela) | Yes |
M80.9 | Unspecified osteoporosis with FX | Site intrinsically unspecified | Laterality N/A | M80.9XXA | Yes |
Note on X placeholders: If a required 5th or 6th character is missing (e.g., base code M80.8), insert X for each empty slot up to the 6th position before adding the 7th. Example: M80.8XXA represents “other osteoporosis with fracture, site and laterality unspecified, initial encounter.”

Required 7th characters for M80 codes
7th character | Meaning |
---|---|
A | Initial encounter—active treatment |
D | Subsequent encounter—routine healing |
G | Subsequent encounter—delayed healing |
K | Subsequent encounter—nonunion |
P | Subsequent encounter—malunion |
S | Sequela (late effect) |
In outpatient claims, A, D, G, and S are the most frequently used values.
M81 codes (osteoporosis without fracture)
ICD-10-CM | Description |
---|---|
M81.0 | Age-related osteoporosis without current pathologic fracture |
M81.4 | Drug-induced osteoporosis without fracture |
M81.6 | Localized osteoporosis [Lequesne] without fracture |
M81.8 | Other osteoporosis without fracture |
M81.9 | Osteoporosis, unspecified |
The latest publicly available claims dataset (2021, analyzed May 2022) shows M81.0 accounts for approximately 74 % of outpatient osteoporosis diagnoses (Definitive Healthcare).
7th-character refresher & denial traps
A missing or incorrect 7th character is a leading reason osteoporotic fracture claims get rejected (CMS National Provider Call, 2015).

Common pitfalls:
- No 7th character at all. Every M80 code must end in a 7th character—no exceptions.
- Wrong placeholder usage. If the 5th and/or 6th positions aren’t defined, plug them with X (e.g., M80.9XXA).
- Encounter mismatch. Using A on follow-up visits or D/G on the initial ER visit will trigger audits.
Quick check: If your M80 code is fewer than seven characters, denial is nearly certain.
Real-world coding scenarios

Scenario | Correct Code(s) | Rationale |
---|---|---|
68-year-old woman, post-menopause, acute compression FX of T12 due to severe osteoporosis. | M80.08XA | Age-related osteoporosis w/ vertebral fracture, initial encounter. |
72-year-old man with known osteoporosis for annual wellness visit; no fractures. | M81.0 | Age-related osteoporosis, no fracture. |
Follow-up for previously treated right femoral neck FX healing normally. | M80.051D | “D” = subsequent encounter, right femur. |
Chronic pain from healed osteoporotic vertebral fracture. | M80.08XS + M54.5 | “S” for sequela; separate code for pain. |
FAQ
Q: What is the ICD-10 code for postmenopausal osteoporosis?
A: If no fracture is present → M81.0. With a current pathologic fracture → choose the appropriate M80.0- sub-code (e.g., M80.08- for vertebra, M80.05- for femur) and append the proper 7th character.
Q: Do I need a separate fracture code when using M80?
A: No. M80 already bundles the fracture. You may add an external-cause code (e.g., W19 for unspecified fall) if documented.
Q: How do I code osteoporosis due to long-term steroid use?
A: 1. Code the osteoporosis first.
• M81.4 for drug-induced osteoporosis without fracture.
• M80.4- (+ 7th) for drug-induced osteoporosis with fracture.
- Identify the causal drug effect. Assign T38.0X5- with a 7th character based on the encounter for the adverse drug effect: A for initial/active treatment, D for subsequent, or S for sequela.
- Capture therapy status. Add Z79.52 (long-term use of systemic steroids) if the patient remains on chronic treatment.
Sequencing: Osteoporosis → T38.0X5- → Z79.52.
Q: My EHR flags “7th character missing” but the patient has no fracture. Why?
A: You probably selected an M80 code by mistake. Switch to the correct M81 code.

Q: Which CPT code pairs with a diagnostic DEXA scan?
A: The most common is CPT 77080 for axial skeleton bone-density measurement—see our full guide: Bone Density Test CPT Codes: Billing and Documentation Guide.
Using BodySpec DXA scans for early bone-health insight
BodySpec offers affordable whole-body DXA scans at both mobile units and convenient storefront locations across the U.S.
Our scans are strictly non-diagnostic and intended for wellness tracking—not to replace a clinical bone-density study ordered by your physician.
What our scan does provide:
- Non-diagnostic BMD estimate. You’ll see T-scores and Z-scores that can flag low bone density before a formal diagnostic workup is warranted.
- Actionable trends. Quarterly or annual scans help you spot downward BMD trends early, so you can discuss a diagnostic DEXA with your healthcare provider if needed.
- Whole-body composition data. Lean mass, fat mass, and visceral-fat insights arrive in the same 10-minute session.
Remember: If your BodySpec results suggest osteopenia or osteoporosis, the next step is a clinical diagnostic DEXA scan (billed under CPT 77080) and consultation with your provider.
Think of BodySpec as the check-engine light that prompts a deeper diagnostic visit—not the full engine rebuild.

Curious to see your numbers? Find a BodySpec location near you and book a scan in minutes.
Key takeaways
- M80 = fracture present; M81 = no fracture.
- Include the 5th (site), 6th (laterality), and 7th (encounter) characters on every M80 code.
- Use X placeholders to reach seven characters when needed.
- Follow updated sequencing guidance for drug-induced osteoporosis.
Sources
- ICD10Data M80.08
- ICD10Data M81.0
- AAPC: 7 Top Tips for Mastering ICD-10-CM 7th Characters
- CMS: ICD-10 National Provider Call Transcript (Dec 8 2015)
- FY 2025 ICD-10-CM Official Guidelines
- Definitive Healthcare: Top ICD-10 Codes for Osteoporosis (2022 analysis)
Last updated June 2024.