Canmetry
Open workbench

Find the errors in your file with a DBC checker

Drop a CAN DBC and see what is wrong before it ships: overlapping signals, duplicate IDs, signals past the frame length, broken value tables. Every finding comes with its line number and a fix.

Drop your DBC file here

or

.dbc files up to 150 MiB. The file is read on your computer and never uploaded.

What the DBC checker checks

32 checks in six groups. Each one names the object, the line and the fix.

  • Structure

    8

    IDs, names, DLCs, and anything the viewer's parser quietly drops.

    E001E002E003E004E005W006E007I053
  • Signal layout

    12

    Start bit, length, overlap, multiplexing and scaling of every signal.

    E010E011E012E013E014E015E016W016I017W018W019I054
  • Value tables

    3

    Value tables that point nowhere, repeat a value or cannot fit the signal.

    W020W021W022
  • Nodes

    4

    Senders and receivers that are missing from the node list.

    W030W031I032I033
  • Comments and attributes

    2

    Comments and attributes attached to things that do not exist.

    W040I041
  • Names and encoding

    3

    Names that strict tools reject, and text read in the wrong encoding.

    W050I051W052
  • Error
  • Warning
  • Info

How the DBC checker grades findings

Three levels, so a review can stop at the first one that matters.

  • Error

    The file will decode wrongly, load differently in different tools, or lose data when it is read. Fix these before you share the DBC.

    Two signals use the same bits.

  • Warning

    Probably a mistake or an ambiguity. Tools may disagree about it, so a value can come out right in one and wrong in another.

    A value table points at a signal that does not exist.

  • Info

    Housekeeping. Safe to ignore, useful in a review.

    A node that sends and receives nothing.

Mistakes a DBC checker catches before a value goes wrong

Each of these loads without complaint in at least one tool. The finding is what this page reports.

  • Two signals on the same bits

     SG_ Speed : 0|16@1+ ... SG_ Gear  : 8|8@1+ ...

    E012 Speed and Gear in Engine share 8 bits.

    Line 275
  • A signal past the end of the frame

    BO_ 416 Engine: 8 ECU SG_ Temp : 56|16@1+ ...

    E011 Temp in Engine needs 9 bytes, but the message is 8 bytes long.

    Line 12
  • A duplicate name the parser hides

     SG_ Speed : 0|16@1+ ... SG_ Speed : 16|8@1+ ...

    E004 Engine has two signals named Speed.

    Line 31
  • A value table for a signal that is not there

    VAL_ 416 Gear 0 "Park" 1 "Drive" ;

    W020 A value table points at Engine.Gear, which does not exist.

    Line 640
  • An extended ID without the extended flag

    BO_ 4096 Wide: 8 ECU

    W006 Wide has ID 0x1000 but is not marked extended.

    Line 58

When to run a DBC checker

The check takes a second, so run it wherever a DBC changes hands.

  1. Before you send a DBC out

    A supplier or customer will open it in a tool you do not control. Catch what they would trip over first.

  2. As a release gate

    Run it on every new version, and keep the error count at zero before the DBC goes into a build.

  3. When you inherit a DBC

    A file with no history has had many hands in it. The report shows where it has been edited by accident.

  4. When decoded values look wrong

    Before you blame the log, rule out the DBC: an overlap or a swapped byte order explains most odd values.

What it does not do

It checks the file against the DBC format, not against your project.

It checks

  • Every ID, name and DLC in the file
  • The bit layout of every signal
  • Value tables, nodes, comments and attributes
  • Names and text encoding

It leaves to you

  • Naming rules and signal conventions that belong to your project or OEM.
  • Network design: bus load, cycle times and timing.
  • Fixing the file. Findings tell you the line and the fix, and you edit the DBC yourself.
  • Messages that use extended multiplexing: overlaps are not judged there.
  • Anything it cannot read at all, beyond reporting that the line was not read.

DBC checker questions

Is an overlap always an error?

No. Multiplexed signals may share bits when their switch values differ, because only one of them is present at a time. The checker compares multiplexed signals only when their switch values match, and skips messages that use extended multiplexing.

Why does my DBC load in one tool but not in another?

Tools are not equally strict. cantools stops on overlapping signals by default, some decoders reject duplicate IDs, and the parser behind the DBC viewer drops lines it cannot read. The checker reports each of these so you can see which one applies.

Does it fix the file?

No. Each finding names the line and says how to fix it, and you make the change in your editor. Automatic fixes are not part of this page.

Is my DBC uploaded?

No. The file is read and checked in your browser and never leaves your computer.

Does it handle CAN FD and GBK files?

Yes. DLCs up to 64 bytes are accepted, and GBK and GB18030 files are detected and decoded before the check.

What does a range of [0|0] mean?

In a DBC it means no limits were set, so the checker does not compare it with what the bits can hold.

How is this different from the DBC viewer?

The viewer shows you what the parser understood. The checker reads the raw file and reports what the parser got wrong or silently dropped, with line numbers.

Can I run it in a build pipeline?

Not yet. This page runs in the browser. If you want it in a pipeline, cantools in strict mode catches the overlap and fit errors.