Free, privacy-first online CSV viewer — open and explore CSV files instantly in your browser.
CSV Viewer is a lightweight, browser-based tool for opening, browsing, and inspecting CSV files — no install, no account, no upload to a server.
Drop a .csv file on csvviewer.net, and it is parsed entirely in your browser. Your data never leaves your device.
- Drag & drop upload — drop a CSV file or click to browse
- Instant table view — headers, row numbers, and horizontal scroll for wide files
- Pagination — browse large files page by page without freezing the tab
- Privacy by design — parsing runs locally with Papa Parse; nothing is sent to our servers
- No installation — works on desktop and mobile browsers
- i18n ready — English and Chinese UI
Open https://csvviewer.net and upload any .csv file.
https://csvviewer.net
| Layer | Stack |
|---|---|
| Framework | Next.js (App Router) |
| UI | React, TypeScript, Tailwind CSS, shadcn/ui |
| CSV parsing | Papa Parse (client-side) |
| Deploy | Cloudflare Workers (OpenNext) |
- Node.js 20+
- pnpm (recommended)
# clone
git clone https://github.com/CoderLim/csv-viewer.git
cd csv-viewer
# install dependencies
pnpm install
# configure environment
cp .env.example .env.development
# start dev server
pnpm devOpen http://localhost:3000.
Key variables (see .env.example):
| Variable | Description |
|---|---|
NEXT_PUBLIC_APP_URL |
Public site URL (production: https://csvviewer.net) |
NEXT_PUBLIC_APP_NAME |
App display name |
AUTH_SECRET |
Auth secret (openssl rand -base64 32) |
DATABASE_PROVIDER / DATABASE_URL |
Database connection |
Production is configured for csvviewer.net.
pnpm dev # local development (Turbopack)
pnpm build # production build
pnpm start # start production server
pnpm lint # ESLint
pnpm cf:deploy # build & deploy to Cloudflaresrc/
├── app/ # Next.js App Router pages
├── shared/blocks/csv-viewer/ # CSV upload, parse, table UI
├── config/ # locale, DB schema, app config
├── core/ # auth, db, theme
└── themes/ # landing page blocks
Core CSV logic lives in src/shared/blocks/csv-viewer/:
parse-csv.ts— client-side CSV parsingcsv-upload-zone.tsx— drag & drop zonecsv-table-view.tsx— paginated tablecsv-hero-workspace.tsx— upload → view workspace
CSV Viewer is built around a simple rule:
Your files stay in your browser.
Files are read and parsed on the client. They are not uploaded to csvviewer.net servers for viewing.
Contributions are welcome.
- Fork the repo
- Create a branch (
git checkout -b feature/your-feature) - Commit your changes
- Open a Pull Request
Ideas that fit well:
- Column sort / filter / search
- Export filtered results (CSV / JSON)
- Better handling of large files
- Accessibility and mobile UX improvements
| Website | https://csvviewer.net |
| Support | support@csvviewer.net |
| Repository | github.com/CoderLim/csv-viewer |
See LICENSE for details.
Open a CSV in seconds → csvviewer.net