A 100% client-side web application for securely loading, parsing, and visualizing HTTP Archive (HAR) files for network debugging.
- π 100% Client-Side Processing - Your sensitive HAR data never leaves your browser
- π Drag & Drop Upload - Easy file loading with visual dropzone
- π Request Statistics - View total requests, transferred size, load times, and more
- π Advanced Filtering - Filter by resource type, URL search, and error status
- β±οΈ Waterfall Chart - Color-coded timeline visualization of request phases
- π Detailed Request View - Inspect headers, response, timings, query params, and POST data
- π¨ JSON Formatting - Auto-formatted, collapsible JSON response viewer
- π Raw HAR Inspector - Browse the complete HAR structure
Chrome/Edge:
- Open DevTools (F12 or Cmd+Option+I)
- Go to the Network tab
- Perform the actions you want to record
- Right-click in the Network tab β "Save all as HAR with content"
Firefox:
- Open DevTools (F12 or Cmd+Option+I)
- Go to the Network tab
- Click the gear icon β "Save All As HAR"
Safari:
- Enable Developer menu (Preferences β Advanced β Show Develop menu)
- Open Web Inspector (Cmd+Option+I)
- Go to Network tab
- Click Export button
- Open the HAR Viewer application
- Drag and drop your .har file onto the dropzone (or click to browse)
- The file will be parsed and displayed immediately
- Use filters to narrow down requests
- Click any request to view detailed information
- Use the tabs to explore headers, response, timings, etc.
- Cookies and session tokens
- Authentication credentials
- API keys
- Personal information (PII)
- Request/response payloads
This tool is designed with privacy in mind:
- β All processing happens in your browser
- β No server upload or transmission
- β No data storage or tracking
- β Web Worker for non-blocking parsing
Never share HAR files publicly or with untrusted parties.
- React 19 with TypeScript
- Zustand for state management
- react-dropzone for file handling
- @uiw/react-json-view for JSON visualization
- shadcn/ui for UI components
- Tailwind CSS for styling
- Vite for build tooling
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Run tests
npm run test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Run linter
npm run lintThis project maintains 90%+ code coverage with comprehensive unit and integration tests.
-
Unit Tests - Test individual utilities, components, and store logic
src/utils/__tests__/- Filter, statistics, and timing utilitiessrc/components/__tests__/- Component rendering and interactionssrc/store/__tests__/- State management logicsrc/pages/__tests__/- Page components
-
Integration Tests - Test complete workflows
src/__tests__/integration.test.ts- End-to-end user flows
# Run all tests once
npm run test
# Run tests in watch mode (auto-rerun on changes)
npm run test:watch
# Generate coverage report (HTML report in ./coverage)
npm run test:coverageThe project enforces minimum coverage thresholds:
- Lines: 90%
- Functions: 90%
- Branches: 90%
- Statements: 90%
This project uses GitHub Actions for continuous integration and deployment:
-
Build & Test (runs on all pushes and PRs)
- Install dependencies
- Run ESLint
- Run test suite with coverage
- Upload coverage reports to Codecov
- Build production bundle
- Upload build artifacts
-
Deploy (runs only on main branch)
- Download build artifacts
- Configure GitHub Pages
- Deploy to GitHub Pages
To enable automatic deployment:
- Go to repository Settings β Pages
- Set Source to "GitHub Actions"
- Push to main branch to trigger deployment
The site will be available at: https://[username].github.io/[repo-name]/
- Zustand store manages global state (HAR data, filters, selection)
- Web Worker handles HAR file parsing off the main thread
- Computed filters efficiently update the request list
FileUploadDropzone- File upload interface with security warningHarViewerPage- Main viewer layoutRequestListTable- Filterable request table with waterfallDetailPane- Tabbed detail view for selected requestsFilterControls- Resource type, search, and error filters
filterUtils.ts- Request filtering logicstatisticsUtils.ts- Summary statistics calculationtimingUtils.ts- Waterfall timing computations (handles SSL/connect overlap)har-parser.worker.ts- Web Worker for async parsing
This viewer implements the HAR 1.2 specification with full support for:
- Log metadata (creator, browser, pages)
- Request/response entries
- Timing phases (blocked, DNS, connect, SSL, send, wait, receive)
- Headers, cookies, query strings
- POST data and parameters
- Content and MIME types
- Chrome/Edge (latest)
- Firefox (latest)
- Safari (latest)
Requires modern browser with ES2020+ support and Web Workers.
MIT License - see LICENSE file for details
Contributions and improvements are welcome!