Skip to content
mysqlbinlog, but visual.

See what's really happening inside your binlogs.

Binsight is a local, read-only visual explorer for MySQL and MariaDB binlogs. Inspect transactions, understand row-level changes, catch anomalies, and follow schema mutations without manually decoding raw pager output.

$ brew install adrijshikhar/tap/binsight
binsight — http://localhost:8080
LIVE (fsnotify)
Binsight Events view — grouped MySQL binlog events with transaction bounds and anomaly highlights

Stop reading binlogs like this.

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 awk scripts
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

Capabilities

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.

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

Security & Privacy

Your database stays your database.

Local by design. Read-only by default.

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.

Under the Hood

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 →

Compatibility

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

Get Started

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
MIT Licensed · Free & Open Source

Built in the open for the community.

Binsight is 100% open source. Contributions, bug reports, feature requests, and sample binlog test cases are always welcome.

Your binlogs already have the answer.

Binsight helps you find it.

$ brew install adrijshikhar/tap/binsight