TimeTagger
An open-source, web-based time tracker with an intuitive timeline UI, tag-based organization, reporting, and self-hosting support.
Smart Download
Visit Project Homepage
No installer available yet — head to the source repository
Self-hosted time tracker with tags, reports, and Pomodoro. Simple and fast.
Core Features
- Interactive timeline: drag & drop to log or adjust time blocks
- Tags instead of projects for lightweight categorization
- Reports in PDF/CSV with daily/weekly/monthly targets
- Built-in Pomodoro timer (experimental)
- Sync across devices, responsive design
What It Can't Do
- •For multi-user mode, passwords must be BCrypt hashed (use https://timetagger.app/cred). Reverse proxy auth requires configuring trusted IPs and user header – misconfiguration may bypass auth. The Pomodoro feature is experimental.
Use Cases
- Freelancers tracking time for multiple clients
- Individuals logging daily routines (study, fitness, chores)
- Small teams needing a lightweight shared time tracker (multi-user setup required)
Detailed Introduction
TimeTagger is a lightweight time-tracking tool designed for individuals and freelancers. It runs as a web app (locally or on a server) and features an interactive timeline for easy logging. Instead of complex projects, it uses simple tags for categorization. You can set daily/weekly/monthly targets, generate PDF/CSV reports, and even use an experimental Pomodoro mode. It syncs across devices and supports both single-user and multi-user setups with authentication via passwords or reverse proxy. Built with Python (asyncio) and compiled client-side code (PScript), it's fast and easy to deploy via pip or Docker.
Troubleshooting & FAQ (2)
TroubleshootingHow to remove the /timetagger URL prefix when self-hosting TimeTagger?
Use a reverse proxy like Caddy to redirect root requests to /timetagger/app and proxy to the TimeTagger container. Example Caddyfile: 'timetagger.example.com { redir / /timetagger/app/; reverse_proxy localhost:8081 }'. Alternatively, create a custom main script based on __main__.py to modify the path, or use the upcoming feature from PR #577 with arguments '--path_prefix=/ --app-redirect=true' (once merged).
TroubleshootingHow to fix 'Runtime error because there is no client scope' when using Timetagger behind a reverse proxy with Unix socket binding?
This error occurs when Timetagger is bound to a Unix socket (TIMETAGGER_BIND=unix:...) and proxy authentication is enabled, because the ASGI request.scope may not contain a 'client' key. As a workaround, copy /timetagger/__main__.py to a separate location, then comment out or modify the trust check block near line 157. For example, replace:
client = request.scope["client"][0]
if client not in TRUSTED_PROXIES:
return 403, {}, "forbidden: the proxy is not trusted"
with:
if "client" in request.scope:
client = request.scope["client"][0]
if client not in TRUSTED_PROXIES:
return 403, {}, "forbidden: the proxy is not trusted"
Then start Timetagger with the modified file as the entry point. This preserves some trust checking when a client IP is available. Alternatively, simply comment out the entire block if your environment is fully trusted. No official patch is yet available (as of Timetagger 25.06.1). Track the issue for updates.
Tags
Getting Started
Download installer
Click the button above to download the installer for your system
Install the software
Double-click the downloaded installer and follow the prompts
Step 1: Run pip install -U timetagger
Step 2: Run python -m timetagger
Step 3: Open http://localhost:8080 in your browser
- Step 1: Run pip install -U timetagger
- Step 2: Run python -m timetagger
- Step 3: Open http://localhost:8080 in your browser
Checksum not available
This project has not published a SHA-256 checksum on its GitHub Release page
SHA256 Checksum
No checksum available
Download directly from GitHub Releases and verify file integrity yourself
All SHA-256 checksums on this platform are extracted from the project's official GitHub Release page, without any modification. You can independently verify them on the GitHub Releases page.
Open Source Transparency
View GitHub SourceUninstall Info
Run pip uninstall timetagger. For Docker, remove the container and image, then clear data volumes if needed.
No Extra Dependencies
Ready to use after download. No additional runtime required.
Having issues? Check the FAQ below
2 FAQs
Similar Projects
AppFlowy
Open source alternative to Notion with AI-powered workspace, full data control, and cross-platform native experience.
super-productivity
An advanced todo list app with timeboxing & time tracking that integrates with Jira, GitHub, and more.
memos
Open-source, self-hosted note-taking tool for quick capture. Markdown-native, lightweight, and fully yours.