π¨ Vibecoded - Built with passion and good vibes
A beautiful, privacy-focused dashboard to visualize your Chrome browsing history. Transform your Google Takeout data into insightful charts and analytics.
- π Comprehensive Analytics: View total visits, unique sites, pages, and date ranges
- π Interactive Charts:
- Most visited sites
- Category breakdown
- Hourly, monthly, and daily activity patterns
- Productivity vs Entertainment ratio
- Site loyalty tracking
- Top pages and search queries
- Category trends over time
- π Advanced Filtering:
- Search across sites and pages
- Filter by category
- Hide/show localhost URLs
- Sort by visits, name, or recency
- π¨ Beautiful UI: Modern dark theme with smooth animations
- π Privacy First: All data stays local, never uploaded to any server
- β‘ Fast Performance: Optimized SQLite backend with efficient queries
Main dashboard with statistics and key metrics
Most visited sites and category breakdown visualizations
Productivity ratio, site loyalty, top pages, and category trends
Browse all unique sites with search and filtering
View all visited pages with category filtering
- Node.js (v18 or higher) - Download
- Python (v3.12 or higher) - Download
- Google Takeout - Export your Chrome history as JSON
git clone <repository-url>
cd history-visualizernpm installcd backend
# Create virtual environment
python3 -m venv venv
# Activate virtual environment
# On macOS/Linux:
source venv/bin/activate
# On Windows:
# venv\Scripts\activate
# Install Python dependencies
pip install -r requirements.txtcd backend
source venv/bin/activate # On Windows: venv\Scripts\activate
python main.pyThe backend will start on http://localhost:8000
In a new terminal window:
npm run devThe frontend will start on http://localhost:5173
Open your browser and navigate to http://localhost:5173
- Go to takeout.google.com
- Select only "Chrome" β "BrowserHistory.json"
- Click "Next step" and choose your export format
- Click "Create export"
- Once ready, download and extract the ZIP file
- Upload the
BrowserHistory.jsonfile in the app
- Upload Your Data: Click "Upload New" or drag & drop your
BrowserHistory.jsonfile - Explore Dashboard: View your browsing statistics and charts
- Filter Data:
- Use the "Hide Localhost" toggle to exclude local development URLs
- Search for specific sites or pages
- Filter pages by category
- Navigate Pages:
- Click "View All" on stat cards to see detailed lists
- Click on any site to see its detailed analytics
- Use the category filter on the "All Pages" page
history-visualizer/
βββ backend/
β βββ main.py # FastAPI server
β βββ database.py # SQLite database operations
β βββ requirements.txt # Python dependencies
βββ src/
β βββ components/ # React components
β βββ utils/ # Utility functions
β βββ App.jsx # Main app component
β βββ main.jsx # Entry point
βββ data/
β βββ history.db # SQLite database (created automatically)
βββ package.json # Node.js dependencies
The backend provides the following REST API endpoints:
GET /api/health- Health checkGET /api/stats- Overall statisticsGET /api/top-sites- Top visited sitesGET /api/categories- Category breakdownGET /api/sites- List all sites (paginated)GET /api/pages- List all pages (paginated)GET /api/sites/{domain}- Site detailsGET /api/charts/hourly- Hourly activityGET /api/charts/monthly- Monthly activityGET /api/charts/daily- Day of week activityGET /api/search-queries- Top search queriesPOST /api/upload- Upload history fileDELETE /api/data- Clear all data
npm run buildThe built files will be in the dist/ directory.
The backend can be run in production using:
cd backend
source venv/bin/activate
uvicorn main:app --host 0.0.0.0 --port 8000- React - UI framework
- Vite - Build tool
- Tailwind CSS - Styling
- Recharts - Chart library
- React Router - Routing
- Lucide React - Icons
- FastAPI - Web framework
- SQLite - Database
- Uvicorn - ASGI server
π Your data never leaves your machine!
- All processing happens locally
- Database is stored on your computer
- No external API calls (except favicon fetching)
- No analytics or tracking
- Make sure Python 3.8+ is installed
- Verify virtual environment is activated
- Check if port 8000 is already in use
- Make sure Node.js 18+ is installed
- Run
npm installto ensure all dependencies are installed - Check if port 5173 is already in use
- Verify the backend is running on port 8000
- Check browser console for errors
- Ensure the uploaded JSON file is valid
- Delete
data/history.dband re-upload your file - Check file permissions on the
data/directory
Contributions are welcome! Please feel free to submit a Pull Request.
For issues or questions, please open an issue on the repository.
Built with β€οΈ using React, FastAPI & SQLite




