Progressive table enrichment

Grid-Sight

Make the HTML tables you already have explorable — without rebuilding them.

Grid-Sight attaches to an ordinary <table> on page load and layers in interactive analysis — sliders and interpolation, heatmaps and outliers, sort/filter/find, derived columns and cell notes — entirely in the browser. Your markup, server, and data pipeline stay exactly as they are; turn Grid-Sight off and the original table returns, byte-for-byte.

Six live tables, one per face — drag to rotate, scroll to zoom, pick a face. Open full screen →

Built on five principles

Plain rules that hold for every feature on this page.

Offline & air-gapped

Runs from a file:// load with no network, no fetched fonts or icons, and no telemetry. Safe for secured environments.

Zero runtime dependencies

A single self-contained script. Nothing to install, bundle, or keep patched alongside your app.

Progressive enhancement

A plain <script> include. Tables work without it; with it, they gain affordances — and a table can opt out entirely.

Accessible by default

Keyboard-operable controls with correct ARIA state. Visual layout never reorders what a screen reader or keyboard sees.

Read-only, byte-identical teardown

Grid-Sight never edits your data. Disable it and every injected node is removed, restoring the exact original markup.

Sliders & interpolation

Read between the rows

Attach continuous sliders to a table's numeric axes and Grid-Sight interpolates a value at any point between the printed cells — linear on one axis, bilinear across two — with a live four-cell highlight and an optional formula readout. Ideal for lookup grids and calibration tables.

The row & column sliders are attached on load — drag them to read between the cells. Formula: √sl − √R/100 + 2

1020304050
1000 4.86.27.28.08.8
6000 4.45.76.77.58.3
110004.15.46.47.38.0
160003.95.26.27.17.8
210003.75.06.06.97.6

Visual analysis

See the shape of your numbers

Shade a row, column, or whole table as a heatmap; flag values beyond a click-cycled σ threshold as outliers; open a statistics popup (min, max, mean, quartiles, missing %) for any axis; and append a summary row of per-column aggregates over the visible rows.

A table-wide heatmap is shading the cells on load. Click ! to flag outliers, # for a stats popup, or H to toggle the heatmap off.

SiteJanFebMarApr
North118122131140
South9610199410
East142138151149
West88919497
Central205211198220

Navigation & search

Find your way through long tables

Sort and filter any column from its header, find text with next/previous stepping, and freeze the header row and key column so they stay put while you scroll. Sorting and filtering are a view over your rows — the underlying order is never rewritten.

This demo starts with nothing applied — switch a feature on yourself: click a column header's sort/filter lozenges to reorder or narrow rows, or the corner find lozenge to search. The header row and key column stay frozen as you scroll.

NameDepartmentRegionTenure
Alex MorganEngineeringNorth4
Priya ShahEngineeringEast7
Jordan LeeOperationsWest2
Sam CarterSalesSouth9
Robin DiazOperationsNorth5
Casey WuSalesEast3

Derived data & notes

Add columns and context, not spreadsheets

Append virtual columns on the right edge — a running-total Σ, an inline trend sparkline, and a pairwise Δ compare — all computed live from the existing data. Attach a note to any cell; annotations persist per-document and follow their cell across sort and filter.

A sparkline column is appended on load. Click the corner Σ / Δ lozenges to add more derived columns; hover a cell and click its pin to attach a note.

QuarterProduct AProduct BProduct C
Q11209060
Q213510472
Q312811881
Q415612195

One switch, non-destructive

Grid-Sight is an overlay, not a transform. The control below turns it on and off for the whole page without reloading: switch it off and every table returns to its raw HTML — no GS corner button, no lozenges, no injected columns; switch it back on and each table is re-enriched and returned to its authored start-state.

Toggle off to see the original tables. Toggling does not reload the page.

Starts active revealed on load

Configured startActive: true — its enrichment lozenges are revealed the moment the page loads (click any to apply it). Click GS to hide them in place.

TeamQ1Q2Q3
Alpha424851
Bravo373561
Cobalt555958

Starts inactive hidden until clicked

The default (startActive: false) — the GS button is present but its lozenges stay hidden. Click GS to reveal the same set.

TeamQ1Q2Q3
Alpha424851
Bravo373561
Cobalt555958

And opt-out is absolute: a table marked data-gs-ignore stays raw no matter what, even if a per-table selector would otherwise match it. opted out

TeamQ1Q2Q3
Alpha424851
Bravo373561

Every demo

Each feature has a focused page with richer data and explanation.