Profiling

The data profiler shows what is in a dataset and what is wrong with it, before anyone builds a report on it. Drop in a CSV, TSV, JSON or Excel file, or hand it records: every column gets its type and role, the values that do not fit, distinct and unique counts, the most common values, statistics, a histogram and box plot with its outliers, dates by year to hour, patterns, stray spaces, the same value spelt different ways, and what the text is - emails, phone numbers, postcodes, payment cards and IBANs, checked.

An overview scores the whole file and ranks every problem; correlations and missing values have their own views. Rules - never missing, unique, in a range, matching a pattern - are suggested from the data, edited in a form, saved as JSON and checked with the failing rows shown, and a baseline file shows what has drifted since. Everything runs in the page; the same engine runs in Node, to fail a pipeline on a bad extract.

A month of orders

1,500 fictional orders with the faults real extracts have: missing emails, a city typed three ways, stray spaces, impossible quantities, dates next year, repeated rows. Open the alerts, then compare with last month to see what has drifted, or let it suggest rules.

Compare with last month Suggest rules from the data
Get the code
<script src="/assets/bmx-components.min.js"></script>

<bmx-data-profiler id="pf-orders" name="Orders, September 2026" style="inline-size: 100%; --bmx-data-profiler-height: 46rem"></bmx-data-profiler>

<script>
  const dataProfiler = document.getElementById('pf-orders');
  dataProfiler.data = [ /* your data */ ];
</script>

A contact list, as exported

A semicolon-separated export with day-first dates, read as it comes: the separator, the header and the date order are worked out from the file. It opens on the postcode column, where some postcodes are in lower case and some are not postcodes at all; the Rules view runs a rules file against it.