EEG · ERP · connectivity · sources · patch-clamp

Biosignal analysis, inside the browser. Your data never leave the computer.

Abstract

Hertz is a program for analyzing EEG recordings and cellular current traces. It opens like a web page but works on the user’s own computer: there is nothing to install, no file is sent to a server and, after the first visit, it works without a connection too. It covers the whole path, from opening the recording to the figures and the report for a publication, and its results are checked automatically against the reference programs of the field.

  • 0bytes of signal sent to a server
  • 12import formats, EEG and electrophysiology
  • 16/16automatic checks passed
  • MNE · EEGLAB · ERPLABthe reference programs Hertz is compared with
Main view of a 64-channel EEG (PhysioNet, S109, 160 Hz): active channel, overview, Session panel with Signal Cutter and Downsampling
Main view of a 64-channel EEG (PhysioNet, S109, 160 Hz): active channel, overview, Session panel with Signal Cutter and Downsampling

1Three design choices

Three choices that matter to whoever adopts it

1.1Local

The data never leave the laboratory

The computing happens on the computer of whoever uses Hertz, not on a server. No recording leaves the laboratory: this simplifies protecting participants’ data and lets the application be used on a closed network or with no connection at all.

1.2Hertz Core

A processing engine that uses the computer’s full power

An ordinary web page uses a small part of the processor. Hertz Core, the application’s processing engine, uses all of its units at once and keeps the interface separate, so it keeps responding while the computation proceeds. In practice: large files, with hundreds of channels and hours of recording, open and are analyzed on the laboratory laptop, without buying or installing anything else.

1.3Validation

Results are verified against the reference programs

Every function that also exists in MNE, EEGLAB, ERPLAB or scipy, the reference programs of the field, is run on test data whose right answer is known, in Hertz and in the reference program, and the two answers are compared. The comparison is an automated test that can fail, not a claim: the numbers are in section 6.

2Installation

What it costs to have the tool ready

Even before the first file is opened, a tool has a cost: what to download, what to install, who keeps it updated, which licenses are needed. Here is Hertz next to MNE (Python) and EEGLAB (MATLAB), the two most used tools in the field.

2.1Sizes and installation

Sizes measured on the disk of the test machine, not taken from the vendors’ sites.

ItemHertzMNE (Python)EEGLAB (MATLAB)
Download33 MB on the first visit, in the background; the first 3 MB are enough to start workingPython with numpy, scipy, matplotlib and MNE: 180 MB of packages, 0.5–1 GB with the environment (856 MB measured)MATLAB, several gigabytes with toolboxes; the MATLAB Runtime alone is 2.8 GB, plus EEGLAB 407 MB
Installation and set-upNone: an address in the browser and the licence in a fieldA Python environment, its packages, an editor; the work is done by writing scriptsMATLAB installation with account and licence; EEGLAB added to the path, plugins downloaded separately
UpdatesAutomatic, downloading only what has changed, applied on confirmationBy hand, from the command line, one environment at a timeBy hand, version by version
What is neededA recent browser (section 7)Python 3.10 or later and some ease with the command lineA MATLAB licence, with the Signal Processing Toolbox for many functions
Installation

3Speed

How long it takes to compute

The other half of speed is measured while the tool is working: how long one waits for a result. Same operations, same data, same computer, for Hertz and for the two reference tools.

3.1Computing

Same operations, same data, same computer (Apple M1, 8 cores). Median time over repeated runs, measured during the same comparisons as in section 6.

OperationHertzMNE / PythonEEGLAB / MATLAB
Welch PSD, 65,536 samples1.2 ms3.5 ms101 ms
Band-pass filter1.8 ms1.2 ms14 ms
STFT spectrogram2.9 ms1.9 ms16 ms
Wavelet scalogram324 ms212 ms252 ms
Hilbert spectrum102 ms205 ms207 ms
PAC comodulogram98 ms390 ms405 ms
Full feature battery, 32 channels × 32,768 samples58 ms22.8 s3.5 s
Processing times

How to read the table. In the first rows MNE is slightly faster: those operations are a single call into an already optimized library, and the difference, one millisecond, is not noticeable. In the rows at the bottom, where the analysis repeats the same step thousands of times, Hertz is tens to hundreds of times faster: 58 milliseconds against 23 seconds. The Hertz times in the table are measured on a single unit of the processor, because that is how the automatic bench runs; in the application the engine uses all of them.

3.2Why compiled

For those who want to know where the difference comes from: it can be skipped without missing anything.

Interpreted

Python and MATLAB translate as they go

Python and MATLAB translate each instruction at the moment they execute it, like an interpreter translating sentence by sentence. That is fine when the work is one large operation, handed to an already translated library. When instead the analysis repeats a step thousands of times, for every channel, for every window, each repetition is translated again, and on one unit of the processor at a time.

Compiled

Hertz Core is translated once

Hertz Core is translated once and for all, before it is distributed, into the language the processor executes directly. When a file is opened there is nothing left to translate, and the repetitions are shared among all the units of the processor. The effort is made by whoever writes the program, not by whoever uses it.

In practice

The time you feel

An analysis that in Python is a script to launch and wait for is, in Hertz, a panel that responds while you change a parameter. And before that: MATLAB starts in tens of seconds, a Python environment has to be activated; Hertz is a browser tab that is already open. Those are the times that matter in a day in the lab, not the milliseconds in the table.

3.3The browser as a platform

Why an application that works locally can live in a web page.

Compiled in the page

The engine runs on the processor, not in the browser’s interpreter

For some years now browsers have been able to run programs already translated for the processor (the WebAssembly standard), not just pages. Hertz Core ships that way: the page downloads it once and from then on every computation happens on the user’s own computer, in times of the same order as an installed program. The table in 3.1 puts them next to scipy, which is translated the same way.

In parallel

Every core, one memory, the graphics card

Modern browsers let a program work on all the units of the processor together, on the same data, without copying them: a file of millions of samples is read once and worked on by all the units at the same time, while the interface stays on a separate path and keeps responding. Where the browser makes the graphics card available (WebGPU), part of the computation runs there.

Everywhere

One program, the same on Windows, macOS and Linux

The browser is the layer that makes the systems equal: Hertz is a single program that opens from an address, with no installation and no separate versions for Windows, macOS or Linux, on the laboratory laptop as on the desktop workstation. It reads files directly from the disk, updates by downloading only what changed and, after the first visit, works without a network too, because the browser keeps the whole application on the computer.

4Features

The features, area by area

The lists below are for specialists: the line under each title says in one sentence what that area is for. Next to each entry a label says how widespread it is in the most used EEG tools (EEGLAB, MNE, Brainstorm, BrainVision Analyzer).

  • common all the main tools have it
  • rare in a few tools, often as an add-on
  • near-exclusive not known to us in any other EEG tool with a graphical interface

4.1Import and export

Reads the formats of clinical, research and cellular electrophysiology recording systems, preserves events and montages, and returns publication figures, exportable data and a session report.

  • EDF / EDF+with annotations; the most widespread clinical format common
  • Axon ABF 1 and 2pClamp, multichannel, units and sampling rate detected automatically rare
  • NeuroExplorer NEX, HDF5 (g.tec g.HIamp)continuous traces, events and intervals rare
  • CSV / TXT / DIF, int16 binary, WAV, I/Q, ThinkGearwith selection of the data column and of the event channel common
  • BIDS events and montageselectrodes.tsv, channels.tsv, coordsystem.json; 10-05, GSN-HydroCel 32–129, Biosemi and EasyCap layouts common
  • Full session as .hzz / .haesignal, sequence of steps, markers and montage in the same file rare
  • Export to EDF, ABF, WAV, CSV, HDF5 LabHDF5 organised by unit, condition and trial, with provenance rare
  • Scientific figuresPNG from each chart, paper presets, light or dark theme, metadata in the footer rare
  • Batch: the same sequence of steps over many filesapplied to a whole folder of EDF files rare
  • Research Reporta printable HTML report: statistics, spectrum, complexity, raw/processed comparison rare

4.2Preprocessing and cleaning

Filtering, re-referencing, channel repair and artifact removal (ocular, muscular, cardiac, mains) with ICA and subspace methods. Every step enters the History: it can be disabled, undone, re-run and exported, and carries a consistency check on its output.

  • Butterworth IIR filters (zero-phase) and windowed FIR filtershigh-pass, low-pass, band-pass, band-stop; notch and harmonics; CleanLine common
  • Referencing: CAR, robust CAR, median, mastoids, custom pool, REST (approximate)and spatial transforms: bipolar, Hjorth CSD, spherical spline CSD common
  • Bad channels: detection and repairvariance, flat, correlation; interpolation from neighbors common
  • EOG / ECG regression, SSP projectors common
  • ICA (FastICA) with component reviewsorting by kurtosis/variance, automatic markers, save/load common
  • Subspace Rescale (ASR-like)from a clean calibration segment it derives the principal components and their typical amplitude; then, window by window, it brings the components that exceed the threshold back down to it. It attenuates rather than reconstructing from the clean subspace as EEGLAB’s ASR does: more conservative, and it does not invent signal common
  • Single-channel cleaning: SSA, wavelet, Embedding ICAfor single-channel recordings, when a separation is still needed rare
  • Epoch rejection with EEGLAB conventionsamplitude, peak-to-peak, gradient, drift, flat, joint probability, kurtosis common
  • Sanity check after every stepthe History compares the output and the input of each step: energy in dB, lost or non-numeric signal, anomalous blow-ups or attenuations, residual DC component after a detrend; every row of the History carries a PASS / WARN / FAIL outcome rare
  • Downsampling with FIR anti-aliasingalso at import, for the largest files common

4.3Spectrum and time-frequency

Power spectra and time-frequency representations, from the Welch estimate to wavelets and synchrosqueezing; phase-amplitude coupling with a surrogate test; complexity measures over time.

  • FFT, Welch PSD (absolute and in %), band histogram common
  • Multitaper PSD (DPSS)for short segments with little leakage common
  • STFT spectrogram and wavelet scalogramdrawn separately, without blocking the interface; adjustable resolution common
  • Synchrosqueezing (SST)time-frequency with sharp ridges rare
  • Hilbert spectrum and HHTinstantaneous amplitude and frequency per band rare
  • Phase-amplitude comodulogram (PAC) with surrogatesthe surrogate significance test is built into the panel rare
  • Complexity over timeSample Entropy, Permutation Entropy, LZC, Higuchi, DFA, Hjorth rare
  • Sonification of decomposition layersa band or a layer can be listened to near-exclusive

4.4ERPs and per-trial statistics

Event-related potentials with the average and, next to it, the standardized measurement error, split-half reliability and the reliability/number-of-trials curve: how much the average is worth and how many trials are needed, estimated on the session data.

  • Peri-event ERP: mean ± SEM and signed trial heatmapbaseline, sorting, diverging palettes, context markers with median and IQR common
  • Standardized Measurement Error (SME)the error of the ERP measurement, analytic and bootstrap, verified against ERPLAB rare
  • Split-half reliability and reliability-versus-trials curvehow many trials are needed, estimated on the session’s own data near-exclusive
  • Event-Locked TF with statistical contrasttwo conditions, Welch’s t per pixel, FDR correction, five maps rare
  • Spectral Counterbalanceidentifies, in a data-driven way, the bands that rise and fall in compensation around an event, and quantifies them near-exclusive
  • Automatic pattern searchrecurring motifs, single-channel and multichannel rare

4.5Connectivity, topographies, sources

Functional connectivity between channels with measures robust to volume conduction and a permutation null distribution; 2D and 3D topographic maps; source localization with a declared research-only model.

  • Connectivity matrix: wPLI, dwPLI, PLI, imaginary coherence, ciPLV, coherence, PLVper band and window, with a permutation null distribution rare
  • GFP, RMS difference, pairwise PLV common
  • Neuro View: 3D head and 2D maps with playbackGaussian or IDW interpolation common
  • Map Inspector: three snapshots, before / now / after rare
  • sLORETA / eLORETA sourcesmodels for the most common montages, MNI152 slices, atlas; the head model is spherical and the feature is declared research-only rare

4.6Cellular electrophysiology

Patch-clamp analysis in the same application as the EEG: from current noise to single-channel properties (unitary current, number of channels, open probability), with an operating protocol for each analysis.

  • Gating Noisefrom voltage-clamp current noise to the channel’s time constant: stationarity, spectrum, Lorentzian fit with instrumental noise, control subtraction, unitary current near-exclusive
  • ML-NSFAmaximum-likelihood non-stationary fluctuation analysis on evoked currents: unitary current, number of channels, open probability at the peak near-exclusive
  • An operating protocol for eachwhat to record, which options to enable, how to read and report the result, including the case where the data do not support it rare

4.7Live

Real-time acquisition from a serial headset, with a live spectrogram and event marking: a secondary feature, for teaching and quick trials.

  • Serial acquisition from a ThinkGear headsetscrolling chart, live STFT, event marking from the keyboard, session saving common

5Screenshots

Screenshots

Figures 1–6: public PhysioNet EEG Motor Movement/Imagery recording (BCI2000), subject S109, 64 channels at 160 Hz. Figure 7: simulated current trace at 50 kHz with known parameters, the same one used on the validation bench.

Power spectral density
Welch PSD in the bottom tab: per-chart axes, CSV and PNG export from the icon.
STFT spectrogram
STFT spectrogram, drawn separately: the interface stays responsive.
Peri-event ERP with trial heatmap
Peri-event ERP: for each marker group, the mean above and the signed trial heatmap below; in the sidebar, artifact rejection and measurement quality (SME, reliability).
Event-Locked TF with contrast
Event-Locked TF: one time-frequency map per condition, baseline in dB, contrast with Welch’s t and FDR when enabled.
Connectivity matrix
wPLI connectivity matrix, 8–13 Hz, over 64 channels and 122 segments; permutation surrogates can be enabled.
Gating Noise panel
Gating Noise on a simulated current trace at 50 kHz with known f_c: log-log PSD, Lorentzian fit with instrumental noise, stationarity and variance–mean.

6Comparative tests

The same data, in Hertz and in the reference tools

For every function that also exists in a reference program, an automated bench generates test data whose right answer is known, has Hertz and the reference program analyze them, and compares the results. The results are archived together with the program, version by version; a comparison that was not run does not appear in the table. How to read the outcome: 100 means the same result as the reference; “identical” means equal to the last digit.

FunctionReferenceOutcome
Welch PSDEEGLAB (MATLAB Runtime), MNEIdentical to EEGLAB (correlation 1.000000, NRMSE 0); MNE 99.2/100 owing to window conventions
PAC comodulogram (Modulation Index)MNE, EEGLAB, tensorpacIdentical to MNE (correlation 1.000000); EEGLAB 0.998; surrogates: verdict in agreement with tensorpac on both the null and the coupled case
Hilbert spectrumMNE, EEGLAB99.9 / 97.3, correlation 1.000000 with MNE
STFT spectrogramMNE, EEGLAB98.8 / 99.0, correlation 1.000000 with EEGLAB
Wavelet scalogramMNE, EEGLAB98.0 / 98.2
IIR band-pass filterMNE, EEGLAB, scipy98.5 / 96.5; poles coincide with scipy to within 10⁻¹³
The application’s FIR kernelsscipy.firwin, MNE, EEGLABCoincide with scipy.firwin; cutoff within 0.005 Hz of the EEGLAB kernels; phase symmetric to within 10⁻¹¹
DPSS multitaperscipyIdentical tapers to within rounding
Multichannel featuresMNE, EEGLAB99.9 / 99.9
ERP SME (Luck 2021)ERPLAB sme_analytic, executedRelative deviation 2·10⁻⁸; bootstrap within 1.4%; split-half within 0.006
Connectivity (7 measures)mne-connectivityMaximum deviation 8·10⁻⁴ across six measures; “sensitive to volume conduction” classification in agreement
Epoch rejectionEEGLAB (jointprob, rejkurt, rejtrend, eegthresh), MNESame conventions, same outcomes; the EEGLAB functions are executed, not transcribed
Gating Noise — spectrum, fit, variance–meanscipy, MNE, EEGLAB (pwelch + fminsearch), analytic ground truth of a two-state processPSD within 10⁻⁵ of all three; corner frequency within 3% of the true value and within 1% of the other optimizers; on a recording with no measurable gating Hertz declines to fit, the generic optimizers do not
ICA (FastICA)MNE FastICA, EEGLAB runica, MNE extended InfomaxSource recovery identical to MNE (median correlation with the true sources 0.996, minimum 0.986; EEGLAB runica 0.979); with 16 sources in 16 channels every tool stops at 0.66
Bad channelspyprep (NoisyChannels)F1 0.71 versus 0.41 on a synthetic 64-channel montage (recall 0.83 versus 1.00, precision 0.63 versus 0.26)
Subspace Rescale (ASR-like)EEGLAB clean_rawdata (ASR)On synthetic 64-channel bursts: residual on the artifact 1.56 versus 2.66 (RMSE), clean stretch 0.0008 versus 0.029; a comparison on a single dataset, not a ranking
Overall outcome of the checks8 comparisons, 2 mandatory references16/16 checks passed, mean 99.3/100 against MNE and 97.8/100 against EEGLAB

Source localization (sLORETA/eLORETA) is verified against the published formulas and, by choice, not against MNE: the head model is simplified and the feature is declared research-only. All the results in this table were recomputed on 16 September 2026 with the Hertz Core version in use.

7Platform

Technical notes

Where it runsOn a Windows, macOS or Linux computer with an up-to-date browser, installing nothing: Chrome or Edge from version 91, Firefox from 114, Safari from 16.4 (chart at the end of the section).
EngineHertz Core, the application’s processing engine: uses all the units of the processor together and keeps the interface responsive even with large files.
DataStay on the computer: no file is uploaded to a server; sessions are saved to the local disk in the Hertz formats.
OfflineAfter the first visit the application works without a network; updates download only what has changed and are applied when the user confirms.
ReproducibilityEvery session remembers the steps performed; the sequence can be saved, repeated on other files and attached to a publication, so a result can be redone.
PrivacyOnly optional analytics cookies, with a consent banner; no advertising cookies, no profiling.
Intended useA research and teaching tool. It is not a medical device and must not be used for diagnosis.
Further informationFor a format not listed here, an unusual montage, or use on a specific protocol: hertz@wavehub.it. The people who wrote the application will answer.
Chrome
150current
91 – 149
up to 90
Edge
150current
91 – 149
up to 90
Firefox
155current
114 – 154
up to 113
Safari
26current
16.4 – 25
up to 16.3

Fully works Does not start

Versions according to caniuse.com and MDN as of 16 September 2026. On iPhone and iPad every browser uses Safari’s engine. Live acquisition from a serial port is available in Chrome, Edge and Firefox from 151.

The browser you are reading with

Hertz Core, the processing engine of Hertz, and the application’s graphics and user interface (UX/UI) are the intellectual property of Patrizio Anselmi and Isabella Zironi, since 2025. All rights reserved.