Data Explorer

Search, filter and analyse structured data files. Supports NDJSON, JSON, JSON Lines, CSV and TSV.

📄 Drop a file here or click to browse
Help

Getting Started

Drag and drop a file onto the dropzone area, or click the dropzone / Upload button to browse. Supports NDJSON (.ndjson, .jsonl), JSON (.json), CSV (.csv) and TSV (.tsv) files. JSON files can be an array of objects, a single object, or an object containing an array of objects — the viewer will find the data automatically. Large files (multi-GB) are streamed in chunks so they won’t crash the browser. You can also drop a file anywhere on the page.

Columns

The first 12 columns are shown by default. Expand the Select Columns panel to open the column selector. Use the search box to find columns by name (tick .* for regex, e.g. address\..* to match all address sub-columns), then Show Matched / Hide Matched to toggle them in bulk. Checked columns are retained when you change the search query, so you can build up a selection across multiple searches.

Click Copy Columns to copy the list of currently visible column names to the clipboard (comma-separated).

Column Order & Resizing

Drag column headers left or right to reorder columns in the table. Alternatively, expand the Column Order panel to see the current column sequence and drag items to rearrange. The column order is reflected in filters, exports and saved filter sets. Newly shown columns are added at the end of the current order.

Resize columns by dragging the right edge of any column header. The table switches to a fixed layout, and columns wider than the viewport can be scrolled horizontally.

Nested Object Depth

Use the Depth selector to flatten nested JSON objects. At depth 1 (default), only top-level keys are shown. At depth 2, plain objects are expanded one level using dot notation (e.g. address.city). Up to depth 5. Arrays are never flattened.

Inline Filters

Filter inputs appear directly below each column header. Type to search — filtering is debounced so the table updates after you pause typing, and your cursor position is preserved. Searches are case-insensitive substring matches by default.

Click the button next to any filter input to open a column context menu with:

  • Regex mode — toggle regex matching for that column. When enabled, a Regex presets dropdown appears with common patterns: Not containing, Not containing any of, Exact match, Not exact match, Starts with, Ends with and One of. Select a preset to insert its template (e.g. ^(?!.*TERM)), then edit the placeholder text.
  • Blanks — filter by Any / Blank / Not Blank. Combines with the text search (all filters must match). A filter input with an active blank filter shows an amber border; regex mode shows a dashed border.
  • Wrap text — toggle word-wrapping for that column’s cells (instead of the default single-line truncation). Saved with filter sets.
  • Sort — set the column to ascending, descending or no sort. When multiple columns are sorted, a Level dropdown lets you move this column to a different sort priority (e.g. make it the primary sort), shuffling other columns accordingly.
  • Run Report — open the column analysis modal.

Multi-value fields (arrays like ["clickAndCollect","inStoreOnly"]) are searched as a comma-separated string, so searching for any individual value will match.

Sorting

Click any column header to sort ascending. Click again for descending, and a third time to remove the sort. Click additional columns to add secondary, tertiary sorts etc. Sort levels are shown as numbered badges with ↑/↓ arrows. You can also control sorting from each column’s context menu, including changing the sort priority level. Sorts are preserved across filter changes and saved with filter sets.

Column Analysis

Click Run Report in any column’s context menu (or the button if shown) to open a statistical analysis with charts: blanks, data types, value distribution, string lengths, case patterns, word counts and more. Numeric and length distributions include mean, median and mode with a bar-chart histogram (up to 10 bars). Use Save as PDF to export the analysis.

Distinct Mode

Click Show Distinct to group rows by unique combinations of the visible columns, with a count of matching rows. Sorted by count descending.

Pagination

Results are paginated (default 500 per page). Use « ‹ › » to navigate between pages, or change the page size with the Per page dropdown. All exports include the full filtered dataset, not just the current page.

Row Selection

Use the checkboxes to select specific rows. Selections persist across filter changes, so you can filter, check rows, change the filter, and check more rows to build up a selection. The header checkbox toggles all filtered rows (not just the current page).

Click the button in the filter row’s checkbox column to open the selection context menu:

  • Clear all checked (N) — deselects all rows, showing the current count.
  • Show all / Show checked only / Show unchecked only — filter the table view to show only selected rows, only unselected rows, or all rows. This view mode is saved with filter sets.

When rows are selected, all exports and reports will include only the selected rows. If nothing is selected, exports include all filtered rows.

Export

Use Export CSV, TSV, JSON or NDJSON to download the currently filtered (and optionally selected) visible data. Export Excel opens options to include a data sheet and/or per-column statistics sheets (overview, data types, distributions, top values and more). An overall summary sheet is always included. When exporting a subset, statistics note how many rows were included out of the total.

PDF Report

Click PDF Report to generate a multi-attribute report across all visible columns. An options dialog lets you choose whether to include per-attribute detail sections (charts and full statistical breakdowns). The report includes:

  • Title page with file name, date, row counts.
  • Overall statistics: completeness score, attribute summary table, attribute classification (identifiers, categorical, free text, numeric, boolean, sparse), and blank co-occurrence analysis.
  • Optionally, a detailed analysis page for each visible column (same content as the single-column analysis modal).

Filter Sets

Save named combinations of visible columns (including their order), search filters, blank filters, regex flags, sort columns, distinct mode, column search state, wrap settings, and selection view mode. Type a name and click Save to store the current view. Use the dropdown to Load or Delete saved sets. Saving with an existing name overwrites it.

Export All downloads all saved filter sets as a JSON file. Import (Merge) adds sets from a file, overwriting any with the same name. Import (Replace) replaces all saved sets with the imported file. Filter sets persist in localStorage across sessions. When loading a set, columns that don’t exist in the current dataset are silently skipped.

Export Filename Template

Customise exported filenames using the Export name field in the Filter Sets panel. Choose a common format from the Presets dropdown or type a custom template. The template supports these macros:

$filterset — current filter set name as-is (empty if none loaded)
$filterdash — filter set name with non-alphanumeric characters replaced by dashes (leading/trailing dashes removed, repeated dashes collapsed)
$file — input filename without extension
$yyyy — 4-digit year, $yy — 2-digit year
$MM — month (01–12), $dd — day (01–31)
$hh — hours (00–23), $mm — minutes (00–59), $ss — seconds (00–59)
$ext — original file extension
$remove:text — post-processing: removes all occurrences of text from the resolved filename (extends to the next $ or end of template). Useful for cleaning up empty macros, e.g. $file-$filterdash-export$remove:-- avoids a double-dash when no filter set is loaded.

Default template: $file-$yyyy-$MM-$dd--$hh-$mm-$ss. A live preview is shown next to the input. The file extension (e.g. .csv) is appended automatically. The export name template is saved as part of each filter set.