The problem I was solving
I kept running into the same situation: someone shares a CSV, I need a quick visual, but opening Excel or Google Sheets just to make one chart felt like overkill.
I wanted something like:
Drop file → see chart → share link. Done.
That's SheetViz.
What it does
- Upload CSV or XLSX — or just paste raw data
- Auto field detection — figures out which columns are strings, numbers, or dates
- Chart recommendations — suggests bar, line, pie, or scatter based on your data shape
- PNG export — one click
- Shareable static links — no account, no login wall
Try it: sheetviz.shop
Tech stack
| Layer | Choice | Why |
|---|---|---|
| Framework | Next.js 14 (App Router) | Fast SSR + static export |
| Styling | Tailwind CSS | No-brainer for quick UI |
| Charts | ECharts | Powerful, flexible, good defaults |
| CSV parsing | PapaParse | Battle-tested, handles edge cases |
| Excel parsing | SheetJS | Industry standard for XLSX |
| Hosting | Cloudflare Pages | Free, fast, auto-deploy from GitHub |
The chart recommendation logic
This was the most interesting part to build. The heuristic:
- Count columns by type (numeric vs. categorical vs. date)
- Count unique values in categorical columns
- Apply rules:
- Date column + numeric column → line chart
- One categorical (≤ 6 unique) + one numeric → pie chart
- One categorical + one numeric → bar chart
- Two numeric columns → scatter plot
- Default → bar chart
It's simple but covers 80% of real-world cases. PRs welcome for edge cases.
Lessons learned
What went well:
- ECharts' responsive config made mobile support almost free
- PapaParse's
dynamicTyping: truehandles number detection cleanly - Cloudflare Pages + GitHub = zero-config CI/CD
What I'd do differently:
- Add a data preview step before rendering the chart
- Support multi-series charts earlier (currently single-series only)
- Add column selection UI instead of auto-picking
What's next
- [ ] Multi-series support
- [ ] More chart types (area, histogram, heatmap)
- [ ] Shareable embed codes
- [ ] Data transformation (filter, sort, group by)
Try it / feedback welcome
Would love feedback on:
- The chart recommendation logic — what rules would you add?
- What chart types matter most to you?
- Any data formats I'm missing?
Built with Next.js, ECharts, and too much coffee.
Top comments (0)