FreeDataStore Tools¶
Browser-based data tools powered by DuckDB-WASM. Your data never leaves your machine.
Available Tools¶
| Tool | Status | Description | Link |
|---|---|---|---|
| Data Profiler | Live | Drop a file, get instant stats, distributions, data quality | Open |
| Data Cleaner | Live | Remove duplicates, fix nulls, trim, cast, rename | — |
| Schema Validator | Live | Define rules, validate any dataset | — |
| Format Converter | Live | CSV ↔ JSON ↔ Parquet ↔ SQL | — |
| Dataset Explorer | Live | SQL-powered visual exploration | — |
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.