unsubbed.co

TimeTagger

Self-hosted time tracking tool that provides time-tracker based on an interactive timeline and powerful reporting.

Open-source time tracking, honestly reviewed. No marketing fluff, just what you get when you run it on your own server.

TL;DR

  • What it is: Open-source (GPL-3.0) web-based time tracker built around an interactive timeline and a tag-first workflow instead of rigid project structures [README][1].
  • Who it’s for: Freelancers and solo remote workers who bill hourly, need cross-device sync, and don’t want to hand their work data to a SaaS vendor [1][3][4].
  • Cost savings: The managed cloud plan is €3/month. Self-hosted is free. Toggl Track’s paid tier starts at $9/user/month; Harvest runs $12/user/month. The math is obvious.
  • Key strength: The tag-based timeline model removes the setup overhead that kills adoption on most time trackers. Multiple reviewers report they started logging more accurately simply because the barrier was lower [1][3][4].
  • Key weakness: This is a solo-developer project with 1,691 GitHub stars. Multi-user support exists but is basic — no teams dashboard, no manager view, no enterprise governance. If you need anything beyond individual tracking, you’ll hit the ceiling fast [README].

What is TimeTagger

TimeTagger is a web-based time tracker built around one core idea: you shouldn’t have to set up clients, projects, and task hierarchies before you can start a timer. Instead, you type what you’re doing and add tags — #writing, #client-a, #deep-work — and the tool builds structure from those tags over time [3][4].

The interface is a vertical interactive timeline. You drag to select a time block, describe the work, attach tags, and you’re done. The right side shows a running summary of the day. You can edit entries, stretch blocks to fill gaps, and scroll back through previous days [1][4].

Under the hood it’s an async Python server (uvicorn + asgineer) storing everything in SQLite via a library called itemdb. The client is Python compiled to JavaScript via a tool called PScript — an unusual choice the author describes as “fun and bloody fast” [README]. That stack keeps the deployment footprint small: no PostgreSQL cluster required, no Redis, no microservices. One container, one SQLite file.

The project is built and maintained by Almar Klein, a scientific computing developer based in the Netherlands, working as a solo operator. He’s been running the managed cloud at https://timetagger.app for paying subscribers while keeping the self-hosted version fully open source under GPL-3.0 [about page]. As of this review the GitHub repo sits at 1,691 stars with a CLI companion tool and a third-party VS Code extension.


Why people choose it

Every review of TimeTagger follows the same arc: someone fed up with either the cost of SaaS time trackers or the complexity of free alternatives discovers TimeTagger and finds it unusually frictionless to actually use.

The setup friction problem. Most time trackers force you to model your work before you can measure it. You create a client, create a project under the client, create a task under the project, then start a timer. For a freelancer whose days don’t run in neat blocks — where a single article involves research, writing, editing, and client calls that overlap and interrupt each other — that structure is a lie before the day even starts. TimeTagger skips all of it. One reviewer from MakeUseOf wrote: “Most time-tracking tools ask you to set up clients, projects, and tasks before you can even start a timer. That setup works for large teams or strict billing workflows, but for solo work like mine, it often feels heavy and limiting.” [4] The tag approach means you log first and analyze later — which is how actual work happens.

The data privacy angle. Several reviewers specifically chose TimeTagger because they didn’t want their client work, billing data, and daily schedules passing through a third-party cloud. The XDA Developers review [1] frames this as the primary appeal: the data lives on your hardware, syncs between your devices, and Toggl/Harvest/Harvest’s acquirer never sees it. The MakeUseOf review [3] makes the same point: “The self-hosted Docker version gave me total control over my data. I enjoyed multi-device sync and advanced reporting without paying a dime.”

The timeline model. Unlike list-based trackers where you see rows of start/stop times, TimeTagger’s vertical day view shows the texture of your work in a way that’s harder to ignore. One MakeUseOf reviewer noted: “I started observing how even a short context switch can fragment longer tasks. In isolation, just a few minutes here and there don’t feel disruptive. However, looking at how these interruptions stack up on my timeline, it’s alarming to see how much time they take.” [3] This is the difference between data and insight — you don’t need a report to see that your “focused morning” was actually eleven separate tasks.

The pattern that emerges. Multiple reviewers report an accountability effect: once you’re looking at a timeline with visible gaps you can’t explain, you log more carefully and waste less time [1][3][4]. The XDA reviewer put it plainly: “A few days into it, and I can clearly see how it has made me a lot more accountable than I used to be.” [1]


Features

Based on the README and first-hand reviews:

Core tracking:

  • Interactive vertical timeline — drag to create entries, click to edit [1][4]
  • Tag-based system instead of project hierarchy [3][4]
  • Manual time entry for past work [1]
  • Real-time day summary with total hours [1]
  • Editable entries — stretch blocks, close gaps, fix overlaps [3]

Reporting:

  • PDF export for client billing [README][website]
  • CSV export for Excel/spreadsheet processing [README][website]
  • Tag-based search for cumulative time per project or client [1]
  • Daily, weekly, and monthly targets [README][website]

Productivity:

  • Integrated Pomodoro timer (described as experimental in the README) [README]
  • Target tracking with progress display [website]

Cross-device:

  • Responsive UI, works on mobile and desktop [README][website]
  • Offline mode with automatic sync when connection returns [website]

Developer tools:

  • Web API for programmatic access [website][5]
  • CLI tool for terminal-based time logging (separate repository) [README]
  • Third-party VS Code extension [README]
  • Reverse proxy authentication support (Authelia compatible) [README]

Self-hosting:

  • Docker image via GitHub Container Registry [README][4]
  • Docker Compose configurations including a non-root variant [README]
  • BCrypt credential system for multi-user setups [README]
  • Proxy auth header support for SSO-lite setups via reverse proxy [README]

What it doesn’t have:

  • Team dashboards or manager views
  • Invoice generation (that’s Kimai’s territory)
  • Native integrations with project management tools
  • Automatic time capture or screenshot recording

Pricing: SaaS vs self-hosted math

TimeTagger Cloud:

  • Self-hosted: €0 (GPL-3.0, run it yourself) [website]
  • Basic plan: €3/month (billed annually; €4/month for monthly billing) [website]
  • Lifetime plan: €144 one-time payment — same features as Basic, forever [website]
  • 14-day free trial on both paid plans, no card required [website]

The lifetime plan is the interesting one. For a freelancer who’s going to use this for years, €144 once beats €36/year only if you run it for more than four years. But it also beats explaining an annual recurring charge to your accountant, and the author pledges 10% of profits to the open-source dependencies the project runs on [about page].

Comparison with SaaS alternatives:

Toggl Track’s paid tier (which unlocks billing rates and more reporting) runs $9/user/month — $108/year. Harvest is $12/user/month — $144/year. Clockify has a generous free tier but charges $9.99/user/month for features like time rounding and approval workflows.

For a solo freelancer:

  • Harvest: $144/year
  • Toggl Track paid: $108/year
  • TimeTagger Basic: €36/year (~$39/year at current rates)
  • TimeTagger Lifetime: €144 once
  • TimeTagger self-hosted: the cost of a VPS you probably already have, or a spare Raspberry Pi

If you’re already running a home server or a small VPS, self-hosting TimeTagger adds essentially zero marginal cost. One reviewer ran it on a home server alongside other self-hosted apps — the overhead is minimal [3].


Deployment reality check

The setup process is straightforward enough that multiple reviewers completed it without major complaints. The MakeTechEasier review [4] walks through the full Docker Compose setup in a few commands: create a folder, write a docker-compose.yml, generate a BCrypt hash for your password (there’s a generator on the TimeTagger website), and run docker compose up -d. Access it at http://localhost:8080.

What you actually need:

  • Docker and Docker Compose (that’s it — no external database required)
  • A BCrypt hash for your credentials (the website provides a generator)
  • A reverse proxy (Caddy or nginx) if you want HTTPS and a proper domain
  • Optionally: Authelia or another proxy-based auth layer for multi-user setups

What the README doesn’t make obvious:

  • Multi-user support requires passing credentials as environment variables — there’s no admin UI for user management [README]
  • For more than one or two users, you’ll want to understand the proxy auth configuration; it works, but it’s manual [README]
  • The non-root Docker variant exists for security-conscious setups — worth using if you care about container privilege escalation

The self-hosting experience in practice. The MakeUseOf reviewer noted it was “less complicated to maintain backups because the backend of my server was less abstracted” — SQLite means your backup strategy is literally “copy the file” [3]. The MakeTechEasier reviewer described it as “easier than expected” [4]. Neither flagged significant install friction.

Realistic time estimates:

  • Technical user with Docker experience: 15–30 minutes to a working instance
  • Non-technical user following a guide: 1–2 hours including domain and HTTPS setup
  • If you’ve never touched Docker: budget an afternoon and use the Docker Compose file from the repository verbatim

Pros and cons

Pros

  • Lightweight deployment. SQLite backend means no PostgreSQL, no Redis, no connection pooling. One container, one file. Backups are trivial [README][3].
  • Tag-first model removes setup friction. You log now, analyze later. Multiple reviewers credit this with actually using the tool consistently, versus heavier alternatives that got abandoned [3][4].
  • Timeline view reveals patterns that list-based time tracking hides — context-switching, dead time, scheduling gaps [1][3].
  • Free self-hosted tier is complete. Not a crippled demo — full features, unlimited entries, sync, reporting, offline mode [README][website].
  • Privacy-first by default. No tracking, no cookie banners, no third-party services on the website. Your data stays where you put it [website][4].
  • Managed cloud is honest pricing. €3/month for a solo subscription is among the lowest in the category, with a lifetime option for people who hate recurring bills [website].
  • Active enough for a solo project. CI pipeline, PyPI releases, Docker images, ReadTheDocs — this isn’t an abandoned repo [README].
  • CLI tool and web API. Developers can log time from terminal or pipe data elsewhere [README][5].

Cons

  • Solo developer project. Almar Klein builds and maintains this alone. 1,691 stars is respectable but nowhere near the sustainability signal you get from a company-backed project. If he stops, you’re on your own with a GPL codebase [GitHub].
  • No team features. No manager dashboard, no approval workflows, no shared project views, no invoice generation. The multi-user setup is functional but manual [README].
  • Credential management is primitive. Adding users means editing environment variables and restarting the container. There’s no UI for user management [README].
  • Pomodoro is experimental. The README flags it as such. If Pomodoro integration is a primary requirement, look elsewhere or expect rough edges [README].
  • PScript is idiosyncratic. The frontend compiled from Python to JS is a deliberate architectural choice that works, but it’s unusual enough to give pause if you ever need to contribute or fork [README]. The author acknowledges this himself.
  • Small ecosystem. No native integrations with Jira, Linear, Asana, or billing tools. You’re piping data out via CSV or building against the web API yourself [README].
  • GPL-3.0 has restrictions. Unlike MIT, GPL-3.0 means you can’t embed TimeTagger in a proprietary product or resell it without making your changes open source. Fine for personal self-hosting; constraining if you’re building a commercial product [README].

Who should use this / who shouldn’t

Use TimeTagger if:

  • You’re a freelancer who bills hourly across multiple clients and wants a clean daily record without project-setup overhead.
  • You work from home and need accountability — the timeline view is more psychologically effective than a spreadsheet row [1][3].
  • You’re already running a home server or a VPS and adding one more Docker container costs you nothing extra.
  • Privacy is a genuine concern — you don’t want your client list and billing hours on Toggl’s servers.
  • You want the €144 lifetime deal: pay once, own your time-tracking setup forever.

Skip it if:

  • You manage a team and need a shared dashboard, approval workflows, or manager visibility.
  • You need invoice generation, not just CSV/PDF exports.
  • You want automatic time capture (idle detection, screenshot-based tracking) — TimeTagger requires manual logging.
  • You need native integrations with project management tools. TimeTagger is standalone.
  • You’re not comfortable with Docker — the setup is easy for someone with Docker experience, but there’s no GUI installer or one-click deployment.

Alternatives worth considering

  • Kimai — the strongest open-source alternative if you need team features. Supports multiple users, invoice generation, customer and project management. More complex to self-host (PHP/MySQL), but far more capable for freelancers managing multiple clients actively. GPL-3.0.
  • Clockify — free SaaS tier is genuinely generous. No self-hosting option. If you’re fine trusting your data to their servers and don’t need self-hosting, it’s a reasonable choice.
  • Toggl Track — polished SaaS, integrates with dozens of tools, desktop and mobile apps. Free tier is functional. Costs $9/user/month on the paid tier. Closed source.
  • ActivityWatch — open-source, local-only, automatic time capture based on active window/browser tab. Different use case: passive tracking rather than intentional logging. No self-hosted sync. AGL license.
  • Traggo — tag-based like TimeTagger, also self-hosted, MIT license. Smaller community, less polished UI, but similar philosophy.
  • Harvest — the incumbent for freelancer billing. Deep integrations, invoice generation, expense tracking. $12/user/month. The bill that TimeTagger replaces.

For a solo freelancer choosing between these: TimeTagger vs Kimai is the real comparison. TimeTagger wins on simplicity and deployment ease. Kimai wins if you need invoicing, team support, or project-level reporting.


Bottom line

TimeTagger is a rare thing in the self-hosted space: a single-developer project that’s actually pleasant to use. The tag-based timeline model is genuinely better for freelancers than the client-project-task hierarchy that most time trackers impose, and several independent reviewers confirm that it changes behavior — people log more consistently because the tool doesn’t punish them with setup friction first. The self-hosted version is complete, the managed cloud is priced honestly, and the lifetime option is a reasonable deal for anyone who plans to track time for more than four years.

The ceiling is real though. If you’re managing a team, need invoicing, or want automatic time capture, you’ll hit it quickly. This is a tool built for one person’s workday, and it does that job cleanly. Nothing more, nothing less.

If you want TimeTagger running on your own server without spending an afternoon figuring out Docker and reverse proxies, that’s exactly the kind of one-time setup upready.dev handles for founders.


Sources

  1. Sumukh Rao, XDA Developers“I self-hosted a time tracker to master my work-from-home schedule, and it did wonders” (Jun 8, 2025). https://www.xda-developers.com/i-self-hosted-a-time-tracker-to-master-work-from-home-schedule/
  2. AllRemote“Top OfficeClip Timesheet Alternatives” — includes TimeTagger feature and pricing summary. https://allremote.jobs/remote-tools/timesheet/alternatives
  3. Afam Onyimadu, MakeUseOf“I tracked every minute of my day with this open-source tool” (Jan 12, 2026). https://www.makeuseof.com/i-tracked-every-minute-of-my-day-with-this-open-source-tool/
  4. MakeTechEasier“How I Used TimeTagger to Improve My Productivity”. https://www.maketecheasier.com/timetagger-time-tracker-improves-productivity/
  5. MEDevel“20 Free Open-source Time Tracking Solutions For Windows, Linux, and macOS”. https://medevel.com/20-os-time-tracker-solutions-boost-productivity/

Primary sources: