_id all open read-only; Change Tracking covers which results are writable. PHP serialized values, and binary past the hex cap, are read-only for everyone.
Display as formats
Right-click a column header and pick Display As. The submenu lists the formats that fit the column type, with a checkmark on the active one.
An override persists per column, scoped to the connection and table. A column with a format set copies in that format when you copy the single cell; a block of cells or a whole row always copies the stored value.
Id-like binary and character columns, integer columns whose names read as timestamps, and binary columns whose first rows all read as UTF-8 pick up their format on their own. Smart value detection in Settings > Data turns that off, and a manual choice always wins over it, Raw Value included. MongoDB binary columns never offer UUID, since the driver decodes them under its own Legacy UUID Encoding setting; see MongoDB.
Text decides per cell, not per column: an image or a hash sitting in a column set to Text still reads as
0x89504E…. The cell edits as hex either way.
JSON viewer
A JSON-typed column opens on the chevron; double-click orEnter edits it inline instead. A text column holding JSON needs Display As > JSON first.
The popover has two modes. Text is syntax-highlighted and pretty-printed, and editable when the cell is. Tree is collapsible, with a search field, and navigation only. Both keep your key order and exact number values, integers larger than JavaScript can represent included.


JSON editor popover with Text and Tree modes
Filtering a tree
The search field above the tree filters keys and values as you type. The PHP serialized tree works the same way.- Matching ignores case and accents, so
cafefindscafé. Full-width and half-width differ:ABCdoes not findABC. - A row matches on its whole value, not the shortened form shown, so a match deep inside a long string counts. A match under a collapsed parent opens its parents, and a key that matches keeps its contents and stays expandable.
- A filter that matches nothing says so, and says separately when the document was cut at 5,000 nodes, since the rows past the cut were never searched.
PHP serialized viewer
Set Display As > PHP Serialized on a text column, then double-click or pressEnter. The viewer is read-only: PHP serialized values round-trip through PHP itself.
Tree mode filters the same way as the JSON tree, with type badges on the nodes (str, int, arr, obj, ser, ref) and visibility badges on object members (protected, private (ClassName)). A custom-serialized class (the C: token) is one opaque leaf, and a reference (r:/R:) shows as → #N and is not followed. Raw mode shows the original string with text selection.
Blob and hex
A blob cell renders in the grid as compact hex (0x48656C…), unless its column reads as text. Click the chevron or double-click for the popover: a classic hex dump with offset, byte columns, and ASCII, plus an editable hex field under it on an editable table. That field takes spaced or continuous hex, with or without a 0x prefix, and invalid hex disables Save.
Bytes that read as an image open on the picture instead, with Hex the second segment. The image viewer covers that.
Image viewer
A cell whose content is an image opens on the drawing, with its stored form one segment away: Hex for a binary column, Source for SVG markup in a text column. The source stays editable wherever the cell is, and Save commits it through the same change tracking queue as any other edit. Detection reads the value, not the column, since the same PNG turns up inBLOB, BYTEA and VARBINARY, and SVG arrives as often in a text column as a binary one. PNG, JPEG, JPEG 2000, GIF, TIFF, BMP, ICO, WebP, HEIC, HEIF and AVIF are identified from their header; SVG from its root element, behind any byte order mark, XML declaration, comment or doctype. A PDF, a Photoshop file and a camera raw file are left as hex, since a database client that opened them as “the image in this cell” would be guessing. Display As > Raw Value on the column turns detection off.


One value, drawn in the popover and again in the row inspector
<image href="https://…">, an @import, an external entity and a <script> all draw as nothing. A document that cannot be drawn within three seconds is abandoned and the pane says so.
Limits
A value that refuses to open in one mode still opens in another.Row details inspector
View > Show Inspector (Cmd+Option+I), or the toolbar button at the trailing end, opens it. Each field carries its column name and type on one line, with the value on the line beneath, so the value gets the row’s full width however long the column name is. A field’s editor follows its content, with no Display As step, and the first match wins.


Row details inspector with per-field editors
Ctrl+Option+N and Ctrl+Option+D reach the first two from the keyboard. Copy Value is always there, and a read-only field keeps its text selectable.
With no row selected, the inspector describes the table the tab is bound to: data, index and total size, row count, average row size, engine, collation, and creation and update dates, as far as the database reports them. A tab with no table of its own, such as a query, leaves it empty. On a Structure tab it follows the structure grid and names the selected column.
Row as JSON
Right-click a row and choose Show Row as JSON, or open the inspector and switch it to JSON. The row prints as one JSON object, keys in the result’s own column order: numbers and booleans unquoted, NULL asnull, binary as hex. Like Fields beside it, it prints every column the result carries, including any hidden in the grid. A JSON column, and a text column holding a document, arrive as nested keys instead of as a string.


A Track row as JSON, with its AlbumId key opened onto the Album row
/^rental/. It matches keys and values, keeps the keys that lead to a match along with everything under a key that matches, and opens what was collapsed. Escape clears it. An invalid expression outlines the field in red and filters nothing.
Editing stays on Fields. Right-click a line for Copy Value and Copy Key; a foreign key line adds Open for the referenced table, filtered to that row.
Caps: a document over 100,000 characters prints as a string rather than as nested keys, the same cap the JSON tree has. A binary value shows its first 64 bytes followed by an ellipsis, the same cap the grid’s own Copy applies.
For whole-row JSON, switch the result to JSON mode with the switcher at the leading edge of the status bar, or from View > Result View. It shows what the grid shows, in the same order, minus hidden columns and rows marked for deletion, which the count line reports separately. Select rows in Data mode first to narrow it, then click Copy JSON.
