canmetry

User guide

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.

Workflow

Load log  →  Load DBC  →  Channel mapping (+ Start)  →  Graph / Trace / DBC

Typical session:

  1. File → Load CAN log… — load BLF, ASC, CSV, LOG, or MF4
  2. File → Load DBC… — add one or more .dbc files
  3. File → Channel mapping… — assign DBC files to CAN channels, then click Start parsing on the mapping card
  4. Switch between Graph, Trace, and DBC

You do not need a separate File → Parse signals step after mapping; Start parsing on the card begins decode.

Optional actions:

Graph

Graph is the decoded signal workspace. It combines a searchable signal list, per-signal properties, grouping, and an interactive chart for time-domain analysis.

Graph view — signal chart and table

What Graph is for

Use Graph when you want to:

Layout

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

Signal catalog and add flow

After parsing, Graph builds a decoded signal catalog from the mapped DBC files and the current log.

You can:

Signal properties shown in Graph

For each plotted signal, Graph can surface:

Signals also preserve channel context, so the same signal name on different channels remains distinct.

Visibility, color, and row actions

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.

Grouping

Graph supports lightweight signal grouping to keep large sessions readable.

You can:

Grouping is useful for:

Chart modes

Graph supports two viewing strategies:

Overlay is better for direct comparison. Stacked is better when units and ranges differ heavily.

Cursor system

Graph has two cursor concepts:

This makes it possible to inspect:

Zoom and navigation

Graph is designed for inspection, not just display.

Available interactions include:

The visible time window and Y ranges are persisted into project files.

Signal rendering details

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.

Keyboard shortcuts

Graph includes a shortcuts/help entry from the toolbar. The shortcuts are aimed at high-frequency workflows such as:

Best use cases

Graph is the best view for:

Trace

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.

Trace view — frame table and detail panel

What Trace is for

Use Trace when you want to:

Layout

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

Frame table

The main table includes:

Trace keeps rows even when no DBC matches, so you can still inspect unidentified traffic.

Filtering

Trace supports a filter model tuned for CAN log work:

Filter state is applied on top of the raw extracted frame list.

Search and match navigation

Search is separate from filtering.

You can:

This makes Trace useful for spot checks without losing the larger filtered view.

Sorting and row selection

Trace can toggle time ordering and keeps one selected row active.

Selecting a row updates:

Detail panel

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.

Copy helpers

Trace includes direct copy buttons for:

This is useful for:

Sparkline overview

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.

Bit activity heatmap

For the currently selected message ID, Trace can compute a per-bit activity summary from repeated frames.

The heatmap helps answer questions like:

Requirements:

Best use cases

Trace is the best view for:

DBC

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.

DBC view — messages, bit matrix, signal details

What DBC is for

Use DBC when you want to:

Layout

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

Message scope

The default DBC mode is Messages.

It shows:

Selecting a message updates:

Signal table

For the active message, the signal table exposes:

This is the fastest view for verifying whether a payload definition looks correct.

Bit matrix

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.

Signal detail panel

When you click a signal, the side panel shows a fuller property sheet:

Nodes scope

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.

Network scope

The Network tab exposes global DBC metadata such as:

Search behavior

Search is scope-aware:

Best use cases

DBC is the best view for:

Local deployment and development

Requirements

Start locally

pnpm install
cp .env.example .env.development
pnpm dev

Then open the local Vite URL shown in the terminal.

Local production-style preview

pnpm build
pnpm preview

GitHub Pages static build

VITE_BASE_PATH=/your-repo-name/ pnpm build:pages

Output is written to .output/public.

Environment variables

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

Supported formats

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.

Project files

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:

  1. import the project file
  2. reload the referenced log and DBC files
  3. open Channel Mapping and click Start parsing again (or File → Parse signals)

Privacy

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.

See also