OpenSource-Hub
T

TimeTagger

1.7k stars·Office Productivity·SHA-256 checksum verified

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)

Troubleshooting
How 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).

GitHub Issue #549
Troubleshooting
How 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.

GitHub Issue #570

Tags

time-trackingself-hostedproductivitypythonweb-app

Getting Started

1

Download installer

Click the button above to download the installer for your system

2

Install the software

Double-click the downloaded installer and follow the prompts

3

Step 1: Run pip install -U timetagger

4

Step 2: Run python -m timetagger

5

Step 3: Open http://localhost:8080 in your browser

Install Guide
  1. Step 1: Run pip install -U timetagger
  2. Step 2: Run python -m timetagger
  3. Step 3: Open http://localhost:8080 in your browser
File Integrity

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 Source
Environment Guide

Uninstall 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.

Project Info
LicenseGPL-3.0
Last Updated2026-06-26 14:35:23
GitHub RepositoryOfficial Website

Having issues? Check the FAQ below

2 FAQs

Similar Projects