chart your data and export it, without leaving the page
Drop a file or paste a table, switch the canvas to chart, and draw it. Bar, line, area or point, with an aggregate when you want one - and the picture is a view of the same pipeline everything else here runs on, so filtering by dragging leaves a step behind rather than a hidden selection.
how to use it
- Drop a file anywhere on the page, or paste a table straight from Excel, Sheets, or a SQL client. Nothing uploads - there is nowhere to upload it to.
- Switch the canvas from grid to chart, then pick a mark, a column for x, and what the values are - a count of rows, or a sum or average of another column.
- Drag across the chart to narrow it. That writes a real keep rows step into the pipeline, so the range survives export, a saved recipe, and a share link.
- Export the picture as svg or png, or copy the Vega-Lite spec that drew it - the same spec renders in the Vega editor, Observable, Altair or R.
- Or press edit spec and change it in place: the spec that drew the chart, editable, with a run button that redraws from what you typed. reset to controls puts the dropdowns back in charge.
what it does
- Four marks, honestly labelled: bar, line, area and point, coloured by any column, following whichever theme you have on.
- It tells you what it summed: the canvas holds the first 1,000 rows, so an aggregate over a bigger file says so and offers to recompute over every row in the engine rather than quietly charting a sample.
- Pivot underneath: the engine's pivot step spreads one column's values across the top, so a wide table and a chart of it are two clicks apart - and it generates the SQL.
- The spec is the export, and now also the input: what you copy is what drew the picture, and
edit spec lets you change it and press run. The spec carries no data - your rows are handed to the dataset it names, so what you edit is a method you could paste anywhere, and editing one does not copy your data into it. While an edited spec is drawing, the dropdowns are disabled rather than silently rebuilding over your work.
- Zero server, 100% in your browser: the chart engine loads on demand and your rows never leave the tab.
every tool in the box
- data workbench - profile, clean, transform, and export CSV, JSON, and SQLite - the full suite
- JSON flattener - nested JSON or NDJSON to flat columns, arrays and objects unrolled
- CSV PII scrubber - find emails, phones, SSNs, and card numbers - mask, hash, or drop them
- JSON to CSV - convert JSON or NDJSON to CSV with full column control
- CSV to JSON - convert CSV to JSON or NDJSON, streamed at any size
- Excel to CSV - read .xlsx workbooks and export CSV, sheets and all
- CSV to Excel - write a real .xlsx where leading zeros and dates survive
- SQL on CSV - real SQL over your files: joins, GROUP BY, a read-only console
- CSV to SQLite - drop several files, get one .sqlite database with discovered foreign keys
- CSV to SQL - CREATE TABLE and INSERT statements for Postgres, MySQL, SQL Server, SQLite
- JSON to TypeScript - TypeScript interfaces and JSON Schema derived from your real data
- large CSV viewer - open files past Excel's 1,048,576-row limit without loading them into RAM
- regex painter - highlight example matches, get a verified regular expression back
- encoding fixer - detect windows-1252/UTF-16 and repair garbled text (José → José)
- log parser - read log files as events: layouts detected, stack traces kept whole, timestamps normalized, and a volume-over-time strip drawn in SQL across every row
- visualize - chart any table you have open - bar, line, area or point - drag across it to filter, export svg, png, or the vega-lite spec that drew it, or edit that spec in place and run it (this page)
- theme builder - design, test, and export custom color themes with live previews, palette derivation, and contrast diagnostics
Like every unfckr tool, this runs 100% in your browser: no upload, no servers, no signup, no analytics. A Content-Security-Policy header blocks every programmatic network channel, so not even malicious code could phone home - and you can watch it happen: the privacy page runs six live escape attempts and shows the browser refusing each one.
↑ back to the tool