Skip to content
New v0.2.1 Monotonic 64-bit & live streaming Release notes
mysqlbinlog, but visual. zero-cgo pure go

See what's really happening inside your binlogs.

A local, read-only visual forensic explorer for MySQL and MariaDB binlogs. Inspect transactions, row diffs, and replication anomalies.

$ brew install adrijshikhar/tap/binsight
binsight: http://localhost:8080
LIVE (fsnotify)
Binsight Events view: grouped MySQL binlog events with transaction bounds and anomaly highlights
⚡ GTID Grouping ⚠️ 6 Anomaly Detectors 📍 Byte-accurate Pos

Stop reading binlogs in raw text pagers.

Paging through gigabytes of raw decoder text in a terminal during a 2 AM production incident is slow, error-prone, and painful.

terminal (mysqlbinlog | less)
1.2 GB text stream
$ mysqlbinlog --base64-output=DECODE-ROWS -v -v mysql-bin.000142 | less
# at 4194304
#260913 14:35:10 server id 1 end_log_pos 4194381 CRC32 0x9f1a2c3d Table_map: `shop`.`orders` mapped to number 108
# at 4194381
#260913 14:35:10 server id 1 end_log_pos 4195120 CRC32 0x7c4e8b12 Update_rows: table id 108 flags: STMT_END_F
### UPDATE `shop`.`orders`
### WHERE
### @1=48382 /* INT(11) */
### @2='PENDING' /* VARCHAR(32) */
### @3=119.20 /* DECIMAL(10,2) */
### SET
### @1=48382 /* INT(11) */
### @2='COMPLETED' /* VARCHAR(32) */
### @3=119.20 /* DECIMAL(10,2) */
# at 4195120
#260913 14:35:11 server id 1 end_log_pos 4195151 CRC32 0x11ab44ef Xid = 918239
(END) - press q to exit, / to search regex
No transaction grouping No diff visualization Manual text scanning
binsight (visual console)
0.02s SQLite query
table: orders grouped by txn
Showing txn 918239
▾ txn 142 · 3 events · 1 row duration: 42ms
4194304 TABLE_MAP shop.orders
77 B
4194381 UPDATE_ROWS status: PENDING → COMPLETED
1 row 739 B
4195120 XID COMMIT
31 B
Click any event to open row-image diff & hex inspector Drawer →
✓ Visual transaction timeline ✓ Instant before/after diffs ✓ Anomaly detection
DUAL-ENGINE ORACLE

Decode with complete confidence.

MySQL's binary log format has evolved over 25 years: GTIDs, row formats, charset alterations, and partial JSON updates. How can you be sure a third-party parser decoded every byte faithfully?

Binsight introduces a Dual-Engine Diff View: it runs its ultra-fast pure-Go parser alongside the official mysqlbinlog utility as an independent oracle.

Per-field divergence highlighting: Any disagreement in decoded database, table, or column payload is visually flagged in red.
Zero external dependency: Runs pure Go by default; activates the mysqlbinlog oracle whenever the binary is present on your system.
Diff Drawer: go-mysql vs mysqlbinlog
1 disagreement detected
Binsight Diff view showing side-by-side go-mysql and mysqlbinlog event decoder comparison

Engineered for speed, not bloat.

Traditional binlog investigation relies on piping massive text output through pagers. Here is how Binsight stacks up against legacy pipelines and enterprise APM agents.

METRIC: 01 98.9% faster

2GB Binlog Triage

Time required to locate a rogue transaction by GTID or timestamp across 2 GB of binary logs.

Binsight 1.4s
mysqlbinlog | grep 128.4s
Indexed SQLite position index vs linear disk re-parse.
METRIC: 02 24x lighter

Memory Footprint

Resident set size (RSS) during active continuous replication stream consumption.

Binsight (Go) 26 MB
Java / APM Agent 640 MB+
Zero JVM runtime overhead. Single compiled static binary.
METRIC: 03 100% Air-gapped

Network Egress

Data volume dispatched to external servers or third-party cloud monitoring endpoints.

Binsight 0 KB
Cloud SaaS APM Continuous
Localhost only. No external telemetry or telemetry ping.
64-bit Monotonic Safe: Immune to MySQL 4 GiB binlog offset counter wrap bugs.
Inspect Source Architecture →

Engineered for database forensics.

Binsight turns inscrutable binary logs into a clean, queryable operational timeline.

Virtualised event table

Filterable Event Stream

Filter events by database, table, or event type. Group events logically by transaction boundary and jump directly to any byte position.

Before → after values

Row-Level Image Diffs

Inspect exact before and after row states on UPDATE statements and full row payloads on INSERT and DELETE operations directly in the drawer.

Catch runaway writes

Six Anomaly Detectors

Inline warnings for huge transaction byte size, runaway row counts, long durations, rollbacks, bulk row writes, and DDL schema churn.

Trace table mutations

Schema & DDL Timeline

All DDL statements organized chronologically with cascade-risk indicators to uncover what broke queries or replication.

Down to the bytes

Hex Forensics

Inspect raw byte buffers with event-header overlays and field offsets for deep low-level forensics and corruption triage.

Real-time SSE push

Live Tail & Remote Mirroring

Watch local binlogs append in real-time via fsnotify + SSE, or connect as a live replica to mirror remote server logs into a local spool.

SECURITY & PRIVACY

Your database stays your database.

Local by design. Read-only by default. Zero telemetry.

127

Loopback Bound

Binds strictly to 127.0.0.1 by default. Built-in network guard blocks external interface exposure unless explicitly requested.

RO

Strictly Read-Only

The parser only inspects offline files or connects via replication client privileges. It never executes write queries or modifies database state.

SQL

Zero CGO SQLite

Backed by a pure Go translation of SQLite (modernc.org/sqlite). All index metadata remains entirely in local storage.

0%

Zero Cloud Telemetry

No cloud backend, no tracking scripts, no third-party APIs, and no account requirements. Your sensitive customer records never leave your host.

Local-first, high-throughput streaming.

Decode never blocks the user interface. Everything the browser displays queries a fast, local SQLite index.

1. Sources
Binlog Files
or Live Replica (spool)
2. Parser
go-mysql Ingest
+ mysqlbinlog oracle
3. Storage
SQLite Index
WAL mode (zero CGO)
4. Server
Go HTTP + SSE
fsnotify live watcher
5. UI
React 19 Console
Virtualized list window
Stack: Go backend · React 19 UI · SQLite · Local-first
Read the 62% latency reduction engineering write-up →

Battle-tested conformance.

Binsight is continuously validated against authentic multi-version Docker fixture corpuses in CI.

MySQL
5.5 5.6 5.7 8.0 8.4 LTS
MariaDB
10.6 11.4
Architectures
macOS (arm64, amd64) Linux (amd64, arm64)
> 4 GiB Files
Monotonic 64-bit position accumulator immune to 32-bit wrap

Up and running in seconds.

Binsight ships as a single static binary with zero external runtime dependencies.

1 Install Binsight
Official Homebrew tap for macOS and Linux.
$ brew install adrijshikhar/tap/binsight
2 Point it at your binlog directory
$ binsight serve /path/to/binlogs
TECHNICAL ARCHITECTURE

Frequently Inspected.

Everything you need to know about Binsight's pure-Go engine, differential verification, and local security model.

Binsight runs a fast, pure-Go binlog decoder alongside the reference mysqlbinlog utility. When both decode the same binary log event, Binsight cross-verifies every decoded field (table map, column types, before/after values, GTID sets). Any mismatch is immediately flagged in the Diff Drawer with per-field highlighting, ensuring you can trust pure-Go decoding without sacrificing mysqlbinlog correctness.
MySQL binlog offsets are represented as 32-bit unsigned integers in older replication protocols and tooling. When a single binlog exceeds 4 GiB, offsets silently wrap back around to zero, causing downstream replicas or CDC tools to re-read or corrupt events. Binsight tracks 64-bit real byte offsets alongside header positions, flagging sequence inversions and offset wraps automatically.
Never. Binsight is 100% local, self-contained, and air-gapped. There are zero analytics SDKs, zero telemetry endpoints, and zero external network calls. All binlog parsing, transaction reconstruction, and web rendering happen entirely on your machine. Your proprietary schemas, customer data, and SQL statements never leave your local environment.
Yes. Binsight supports two modes: Offline File Mode (point it at raw mysql-bin.* files on disk) and Live Streaming Mode (connects as a read-only replication client over the standard MySQL protocol). In streaming mode, Binsight consumes the replication stream in memory with real-time SSE tailing, requiring zero write privileges on your master or replica.
ESC
Quick Commands
Navigation
navigate select