J1587 vs J1939: Understanding the Key Differences

July 11, 2025

If you’ve dived into the world of vehicle diagnostics, you’ve probably seen the terms J1587 and J1939 pop up especially when dealing with heavy-duty vehicles. These two protocols are part of the backbone of how trucks, buses, and off-highway machinery communicate. But what's the difference, and why does it matter?

Let’s break it down in a no-nonsense, easy-to-understand way.

What is J1587?

Background and Purpose

J1587 is an older diagnostic protocol developed by the Society of Automotive Engineers (SAE). It works over the J1708 physical layer, a serial data bus, and was widely used in heavy-duty vehicles in the 1990s and early 2000s.

Key Features of J1587

  • Based on 8-bit ASCII message format.
  • Runs on the J1708 bus (a 2-wire, 9600 bps serial connection).
  • Message IDs are limited and less structured.
  • Mainly used for basic diagnostics and fault code reporting.
  • Low data speed, but reliable and simple.

What is J1939?

Modern Replacement for J1587

J1939 was introduced as a more modern, flexible, and robust protocol built on the CAN (Controller Area Network) bus system. It's now the standard in most new heavy-duty vehicles, replacing J1587/J1708 in the majority of applications.

Main Characteristics of J1939

  • Runs on CAN bus (250 kbps or 500 kbps).
  • Structured messaging using PGNs (Parameter Group Numbers).
  • Designed for real-time communication between multiple ECUs.
  • High bandwidth and support for more complex data.
  • Ideal for data logging, fleet monitoring, and emission control.

J1587 Protocol Breakdown

AspectDetails
Physical LayerJ1708 (RS485-like serial bus)
Baud Rate9600 bits per second
Message StructureASCII-based, limited length (21 bytes)
Device AddressingNumerical IDs, less dynamic
Use CasesFault code reporting, basic diagnostics
ReliabilityHigh, but limited performance
Network TypePeer-to-peer

J1939 Protocol Breakdown

AspectDetails
Physical LayerCAN bus (ISO 11898)
Baud RateTypically 250 kbps or 500 kbps
Message StructureBinary format, supports extended frame formats
AddressingSupports both static and dynamic addressing
Use CasesEngine, transmission, brakes, emission, sensors
ReliabilityVery high, supports real-time communication
Network TypeBroadcast and peer-to-peer

J1587 vs J1939 - Key Differences Table

Feature J1587 J1939
Protocol Foundation Serial (J1708) CAN (Controller Area Network)
Baud Rate 9600 bps 250 kbps or 500 kbps
Message Format ASCII, 21-byte messages Binary, supports longer frames
PGN/SPN Support ❌ Not supported ✔️ Core structure based on PGNs/SPNs
Diagnostic Capability Basic (mainly DTCs) Advanced (real-time data, control, monitoring)
Message Type Simple messages Complex, structured messages
Multinode Communication Limited Excellent support
Used In Pre-2007 heavy-duty vehicles 2007+ heavy-duty and modern fleet systems
Data Logging Minimal Extensive
Real-Time Communication ❌ Not designed for it ✔️ Designed for real-time response
Vehicle Network Size Small scale Large multi-ECU environments
Software Flashing ❌ Not supported ✔️ Supported in advanced systems

Use Cases

Use Case J1587 J1939
Diagnostic Trouble Codes ✔️ Basic ✔️ Advanced
Real-Time Data Monitoring ❌ Limited ✔️ Yes
Fleet Management Systems ⚠️ Basic Logs Only ✔️ Fully Supported
Emissions Monitoring ❌ Not Supported ✔️ Mandatory in most cases
Engine/Brake Control Data ⚠️ Some data only ✔️ Comprehensive
ECU-to-ECU Communication ❌ Not native ✔️ Designed for it

Performance Comparison: J1587 vs J1939

Metric J1587 J1939
Speed Low High
Bandwidth Limited High
Diagnostic Range Basic Deep & complex
Message Structuring Simple, flat Hierarchical, modular
Implementation Cost Low Moderate
Future-Proofing ❌ Obsolete ✔️ Industry standard

Limitations of Each Protocol

Limitation J1587 J1939
Data Speed Slow Fast
Modern ECU Compatibility ❌ Rarely supported today ✔️ Fully compatible
Real-Time Data Support ❌ Not optimized ✔️ Primary use
Message Size Limitations 21 bytes max Up to 1785 bytes (via BAM transport)
PGN/SPN Usage ❌ Not available ✔️ Rich structure
Diagnostics Scope Basic trouble codes Full access to vehicle subsystems

The Shift from J1587 to J1939

The transition from J1587/J1708 to J1939 happened around 2007, when emission regulations became stricter, and more real-time monitoring was needed. OEMs and fleet managers demanded better data, faster communication, and multi-ECU support—which J1939 delivers exceptionally well.

Future of Vehicle Communications

While J1587 served the industry well for decades, its time has passed. Today’s trucks and machinery need smarter diagnostics, faster communication, and better integration with telematics platforms. J1939 is expected to evolve further with extensions like J1939-22 and integrations with DoIP and Ethernet-based communication in the future.

Conclusion

When it comes to J1587 vs J1939, the choice is clear if you're working with modern vehicles. J1587 was great for its time—simple, effective, and widely used. But the future belongs to J1939, with its robust data handling, real-time capabilities, and multi-device communication. Whether you’re a developer, fleet technician, or vehicle system integrator, understanding both protocols is key—but implementing J1939 is the smart move for future-proofing your systems.