Canmetry Community is a browser-based CAN log analyzer for loading raw bus logs and DBC files directly in the browser. The community edition is fully client-side: files are read locally, parsed locally, and decoded locally.
Load log → Load DBC → Channel mapping (+ Start) → Graph / Trace / DBC
Typical session:
BLF, ASC, CSV, LOG, or MF4.dbc filesYou do not need a separate File → Parse signals step after mapping; Start parsing on the card begins decode.
Optional actions:
Graph is the decoded signal workspace. It combines a searchable signal list, per-signal properties, grouping, and an interactive chart for time-domain analysis.

Use Graph when you want to:
| Area | Purpose |
|---|---|
| Left signal table | Current plotted signals, visibility, Y value, ΔY, hex display, remove |
| Group controls | Create groups, switch group view mode, remove groups |
| Add signal action | Open searchable signal picker dialog |
| View options | Show/hide table columns such as message, unit, description |
| Right chart | Overlay or stacked signal rendering |
| Chart toolbar | Zoom mode, cursor mode, reset, shortcuts/help |
After parsing, Graph builds a decoded signal catalog from the mapped DBC files and the current log.
You can:
For each plotted signal, Graph can surface:
Signals also preserve channel context, so the same signal name on different channels remains distinct.
Plotted signals are not forced to stay visible all the time. For each signal you can:
The context menu is designed so you can refine the chart without rebuilding the plotted set from scratch.
Graph supports lightweight signal grouping to keep large sessions readable.
You can:
overlaystackedGrouping is useful for:
Graph supports two viewing strategies:
Overlay is better for direct comparison. Stacked is better when units and ranges differ heavily.
Graph has two cursor concepts:
This makes it possible to inspect:
Graph is designed for inspection, not just display.
Available interactions include:
The visible time window and Y ranges are persisted into project files.
The chart uses a custom renderer instead of a generic chart preset so it can support:
This is especially useful for mixed datasets where some signals are continuous values and others are discrete state signals.
Graph includes a shortcuts/help entry from the toolbar. The shortcuts are aimed at high-frequency workflows such as:
Graph is the best view for:
Trace is the raw frame inspection view. It keeps the original CAN frames visible while layering on search, filtering, decoded message names, and row-level signal decode.

Use Trace when you want to:
| Area | Purpose |
|---|---|
| Summary bar | Shown frame count, total frame count, time span |
| Copy actions | Copy selected row ID, data bytes, or a tab-separated row |
| Filter controls | Narrow by ID, bytes, channel, type, time window |
| Search controls | Search ID / data and jump through matches |
| Frame table | Raw frame rows with names, channel, type, DLC, payload |
| Detail panel | Selected row metadata, decoded signals, bit activity |
The main table includes:
Trace keeps rows even when no DBC matches, so you can still inspect unidentified traffic.
Trace supports a filter model tuned for CAN log work:
CANCAN FDERRFilter state is applied on top of the raw extracted frame list.
Search is separate from filtering.
You can:
This makes Trace useful for spot checks without losing the larger filtered view.
Trace can toggle time ordering and keeps one selected row active.
Selecting a row updates:
The selected-frame detail panel is where Trace becomes decode-aware.
It shows:
If a row resolves to a DBC message, each decoded signal value is displayed beside the raw row information.
Trace includes direct copy buttons for:
This is useful for:
Trace builds per-message sparklines / compact activity summaries so repeated traffic is easier to scan visually.
These are especially useful when the table contains many repeated cyclic messages.
For the currently selected message ID, Trace can compute a per-bit activity summary from repeated frames.
The heatmap helps answer questions like:
Requirements:
Trace is the best view for:
DBC is the database inspection view. It lets you browse message definitions, signal properties, nodes, network metadata, value tables, and attributes even before parsing a log.

Use DBC when you want to:
| Area | Purpose |
|---|---|
| File selector | Switch between loaded DBC files |
| Scope selector | Messages, Nodes, Network |
| Search field | Filter by name, ID, unit, comment, description |
| Message list | DBC message overview |
| Signal table | Signals in the selected message |
| Bit matrix | Bit/byte layout visualization |
| Detail side panel | Selected signal details, value table, attributes |
The default DBC mode is Messages.
It shows:
Selecting a message updates:
For the active message, the signal table exposes:
This is the fastest view for verifying whether a payload definition looks correct.
The bit matrix is a visual representation of the selected message layout.
It is useful for:
It follows a Vector/CANdb++-style bit orientation so CAN engineers can read it quickly.
When you click a signal, the side panel shows a fuller property sheet:
The Nodes tab provides a node-centric view of the database:
This is useful when you want to understand the DBC by ECU / network participant rather than by message.
The Network tab exposes global DBC metadata such as:
Search is scope-aware:
Messages, it checks message names, IDs, transmitter names, descriptions, and signal contentNodes, it checks node names and descriptionsNetwork, it mainly helps narrow the currently loaded catalog contextDBC is the best view for:
pnpmpnpm install
cp .env.example .env.development
pnpm dev
Then open the local Vite URL shown in the terminal.
pnpm build
pnpm preview
VITE_BASE_PATH=/your-repo-name/ pnpm build:pages
Output is written to .output/public.
| Variable | Purpose |
|---|---|
VITE_APP_URL |
Public app URL |
VITE_APP_NAME |
App title / branding |
VITE_APP_DESCRIPTION |
App description |
VITE_COMMERCIAL_URL |
Optional link to hosted SaaS / Pro edition |
VITE_BASE_PATH |
Router / asset base path for subpath deployments |
| Format | Extension | Notes |
|---|---|---|
| Vector BLF | .blf |
CAN / CAN FD log containers |
| Vector ASC | .asc, .log |
CANalyzer/CANoe-style ASCII |
| CSV | .csv |
python-can export or Time/ID/Data style tables |
| ASAM MDF4 | .mf4 |
CAN bus logging groups |
| DBC | .dbc |
Signal decode / DBC inspection |
Parsers live under src/lib/can/ and are original browser-side implementations.
Workspace state can be exported as .blfproject.json.
It stores:
It does not embed the original log or DBC file contents.
To restore a project:
Community edition parsing stays on your machine. No server upload is required for decode or charting.
Static deployment via GitHub Pages or any CDN still serves a browser-side app. If you later add a commercial link, VITE_COMMERCIAL_URL only controls the UI link target and does not change the local parsing model.