Free CAN DBC Viewer
Open a .dbc file to see every CAN message and signal, how each is scaled, and which bits it occupies.
What is a CAN DBC Viewer?
A DBC file describes the messages on a CAN bus: each identifier, the signals packed into its bytes, and how to turn raw bits into engineering values. This viewer reads one and lays it out so you can check it without CANalyzer or a paid tool.
It reads the parts of Vector’s DBC format that define data: version, nodes, messages, signals with multiplexing, comments, value tables and float signal types. Attribute definitions and other statements are counted and skipped, and the bit layout draws Intel and Motorola signals byte by byte.
Key Features
Every Message Listed
Identifier, length, sender, signal count and comment for each message, with 29-bit extended IDs marked.
Signal Details
Start bit, length, byte order, sign, scale, offset, range, unit, receivers and value tables.
Bit Layout
A grid per message showing which signal owns each payload bit, the quickest way to spot overlaps.
Multiplexing and Floats
Multiplexor and multiplexed signals are labelled, and SIG_VALTYPE_ float signals are recognised.
Stays on Your Computer
The database is parsed in your browser and never uploaded.
Perfect for everyone
- Automotive and embedded engineers
- CAN bus reverse engineers
- Students learning vehicle networks
How to Use the CAN DBC Viewer
Open the database and switch between three views.
Open the DBC
Use Open .dbc file or paste the text. Files exported by CANdb++, Kvaser and cantools all work.
Read the Summary
Check the version, the nodes and the message list with identifiers and senders.
Inspect Signals
Signals shows how every signal is packed and scaled, with its value table.
Check the Layout
Bit layout shows each message as a grid, so gaps and overlaps stand out.
DBC Snippets, Read
Each row is part of a DBC file and each answer is this viewer’s output in the mode on the chip. Work out the byte order before you reveal it.
“VERSION "1.4" BU_: ECU ABS BO_ 256 EngineData: 8 ECU SG_ EngineSpeed : 0|16@1+ (0.125,0) [0|8031.875] "rpm" ABS SG_ CoolantTemp : 16|8@1+ (1,-40) [-40|215] "degC" ABS”
“BO_ 256 EngineData: 8 ECU SG_ EngineSpeed : 0|16@1+ (0.125,0) [0|8031.875] "rpm" ABS SG_ CoolantTemp : 16|8@1+ (1,-40) [-40|215] "degC" ABS VAL_ 256 CoolantTemp 0 "Sensor fault" 255 "Not available" ;”
“BO_ 512 WheelSpeed: 8 ABS SG_ VehicleSpeed : 7|16@0+ (0.01,0) [0|655.35] "km/h" ECU”
“BO_ 512 WheelSpeed: 8 ABS SG_ VehicleSpeed : 7|16@0+ (0.01,0) [0|655.35] "km/h" ECU”
“BO_ 2566844926 Odometer: 8 BCM SG_ TotalDistance : 0|32@1+ (0.125,0) [0|526385151.875] "km" ECU”
“BO_ 768 DoorStatus: 2 BCM SG_ Page M : 0|4@1+ (1,0) [0|15] "" ECU SG_ FrontLeftOpen m0 : 8|1@1+ (1,0) [0|1] "" ECU SG_ RearLeftOpen m1 : 8|1@1+ (1,0) [0|1] "" ECU”
“BO_ 1024 Battery: 8 BMS SG_ PackVoltage : 0|32@1- (1,0) [0|1000] "V" ECU SIG_VALTYPE_ 1024 PackVoltage : 1;”
“BO_ 256 EngineData: 8 ECU SG_ EngineSpeed : 0|16@1+ (0.125,0) "rpm" ABS”
“ SG_ EngineSpeed : 0|16@1+ (0.125,0) [0|8031.875] "rpm" ABS”
“VERSION "1.4" BU_: ECU ABS”
The Lines in a DBC File
A DBC file is plain text made of keyword lines. These ten define the data this viewer reads.
VERSION
An optional version string at the top, often left empty by tools.
“Is VERSION required?”
BU_
The list of nodes, the ECUs that send and receive messages.
“What does BU_ list?”
BO_
A message: decimal identifier, name, length in bytes and sending node.
“Is the identifier decimal or hex?”
Extended IDs
A 29-bit identifier is written with bit 31 set, so 0x18FEF1FE appears as 2566844926.
“Which bit marks an extended ID?”
SG_
A signal: start bit, length, byte order, sign, (factor,offset), [min|max], unit and receivers.
“What does @1 mean?”
Byte Order
@1 is Intel (little-endian), @0 is Motorola (big-endian), whose start bit is the most significant.
“Which order starts at the MSB?”
Multiplexing
M marks the multiplexor, and m0, m1 and so on mark signals present only for that value.
“What does m2 mean?”
CM_
A comment on the file, a node, a message or a signal, which may span lines.
“Can a comment span several lines?”
VAL_
A value table naming raw values, such as 0 "Off" 1 "On".
“What does VAL_ map?”
SIG_VALTYPE_
Marks a signal as IEEE float (1) or double (2) instead of an integer.
“What does value 2 mean?”
Intel Versus Motorola Byte Order
Byte order causes more DBC confusion than anything else. These points explain how each one counts bits, which is exactly what the Bit layout view draws.
Bit Numbering
Bits are numbered 0 to 63 across the payload: byte 0 holds bits 0 to 7, byte 1 holds 8 to 15, with bit 0 as each byte’s least significant bit.
Intel Signals
The start bit is the least significant bit, and the signal grows upward through higher bits and later bytes.
Motorola Signals
The start bit is the most significant bit. The signal runs down to bit 0 of that byte, then continues at bit 7 of the next byte.
The Sawtooth
Because of that jump, Motorola bit sequences look like a sawtooth: 7 down to 0, then 15 down to 8.
Other Conventions
Some tools number Motorola start bits by their least significant bit instead. Vector’s convention, used here, is the MSB.
Checking a Signal
If a decoded value looks byte-swapped, the byte order is almost always set the wrong way round in the DBC.
DBC Pitfalls
Common mistakes when writing or reading CAN databases.
Wrong Byte Order
A 16-bit value of 0x1A2C read as 0x2C1A is a byte-order mistake, not a scaling one.
Overlapping Signals
Two signals claiming the same bits corrupt each other. The layout grid shows overlaps immediately.
Signed Versus Unsigned
Temperatures and torques are often signed. Forgetting the minus sign turns -1 into 255 or 65535.
Offsets Applied Twice
Some tools apply the offset in the DBC and again in code. Decide where scaling happens once.
Extended ID Confusion
The same number with and without bit 31 is a different message. Check the extended flag.
Ranges That Lie
The [min|max] range is documentation only. Decoders don’t clamp values to it.
Hidden Attributes
Cycle times and send types live in BA_ attributes, which this viewer counts but doesn’t list.
Tools That Read and Write DBC Files
DBC is a Vector format, but the files move between many tools. These are the ones you are most likely to export from or load into after checking a database here.
Vector CANdb++
The original editor that ships with CANalyzer and CANoe. Most DBC files in the industry were written or last saved by it.
cantools
A Python library and command line that loads DBC, KCD and ARXML, decodes frames, and can generate C code for signal packing.
python-can
Reads and writes CAN logs from SocketCAN and USB adapters. Paired with cantools it decodes live traffic with a DBC.
SavvyCAN
An open source desktop tool for capturing, graphing and reverse engineering traffic, with DBC loading built in.
opendbc
A public collection of community DBC files for passenger cars, built for driver-assistance projects and useful as a reference.
Kvaser Database Editor
A free editor from Kvaser for creating and changing DBC files without a Vector licence.
Attributes the Viewer Skips
BA_DEF_ and BA_ lines attach extra properties to the database, nodes, messages and signals. The viewer counts them in the summary and leaves them out of the listing, so here is what the common ones mean when you open the file in a text editor.
GenMsgCycleTime
How often a periodic message is sent, in milliseconds. A value of 100 means the frame should appear ten times a second.
GenMsgSendType
Whether a message is cyclic, sent on change, or sent only when requested. Gateways and test benches read this to schedule traffic.
GenSigStartValue
The raw value a signal holds before its first real update, used by simulators that send the message before the ECU has data.
BusType
Marks the database as classic CAN or CAN FD. Tools use it to pick frame lengths and bit timing.
VFrameFormat
Says whether each message is a standard, extended or FD frame, which can override how the identifier is read.
ProtocolType
Set to J1939 in heavy-vehicle databases, where identifiers carry a PGN, priority and source address instead of a plain ID.
NmStationAddress
A node’s network management address, used by AUTOSAR and OSEK network management messages.
When to Open a DBC File
Whenever you need to know what a CAN database actually says.
Reviewing a Supplier Database
Check a DBC from a supplier for missing comments, overlaps and odd scaling before integrating it.
Writing Decoder Code
Read start bits, lengths and byte order exactly before writing firmware or a logger parser.
Reverse Engineering
Compare a community DBC against captured traffic to confirm which bits move.
Teaching CAN
Show students how signals pack into bytes and how factor and offset make physical values.
Diffing Versions
Open two versions side by side to see which messages and signals changed.