Skip to content

FreeDataStore Tools

Browser-based data tools — profiling, cleaning, training, inference. Your data never leaves your machine.

Data Tools

Tool Engine Description
Data Profiler DuckDB-WASM Drop a file, get instant stats, distributions, data quality
Data Cleaner DuckDB-WASM Remove duplicates, fix nulls, trim, cast, rename
Schema Validator DuckDB-WASM Define rules, validate any dataset
Format Converter DuckDB-WASM CSV ↔ JSON ↔ Parquet ↔ SQL
Dataset Explorer DuckDB-WASM SQL-powered visual exploration

ML Training Tools

Tool Engine Description
Neural Net Trainer TensorFlow.js Build layers, train on CSV, see live loss chart, export model
Image Classifier TensorFlow.js Drag images into classes, train via MobileNet transfer learning
Auto-ML Pyodide (sklearn) Upload CSV, pick target — auto-trains 5 models, picks best
Clustering Explorer Pyodide (sklearn) KMeans, DBSCAN, Agglomerative — 2D scatter + metrics
Time Series Forecaster TensorFlow.js Train LSTM on time series, forecast the future
Model Playground TF.js + ONNX Load any model, test with live input, batch predict

Technology

All tools share the @freedatastore/sdk which wraps:

  • DuckDB-WASM — Full SQL engine running in the browser via WebAssembly
  • Apache Arrow — Columnar in-memory format for zero-copy data handling
  • WebWorkers — Heavy processing off the main thread

SDK API

import { loadFile, profile, clean, validate, exportTable, query } from '@freedatastore/sdk';

// Load any file into DuckDB
const { table, rows, columns } = await loadFile(file);

// Profile — stats, distributions, nulls, duplicates
const report = await profile(table);

// Clean — apply rules
const results = await clean(table, [
  { type: 'drop_duplicates' },
  { type: 'trim_whitespace' },
  { type: 'drop_nulls', columns: ['email'] },
]);

// Validate — check against schema
const validation = await validate(table, {
  columns: [
    { name: 'email', required: true, pattern: '^[^@]+@[^@]+$' },
    { name: 'age', min: 0, max: 150 },
  ],
});

// Export
const blob = await exportTable(table, 'parquet');

// Raw SQL
const rows = await query('SELECT * FROM data WHERE age > 30 ORDER BY name');

Contributing a tool

See the Contributing Guide for how to build and publish a new data tool.