GitHours

Now with AI-powered session detection

Bill the hours your git history already proves.

GitHours turns commit timestamps into work sessions and a client-ready report — with every hour traceable to the commits behind it.

Get started free. No credit card required.

1  Your commitsgit log · 02 Mar

  1. 09:14featcheckout session model
  2. 10:02featprice rounding for EUR
  3. 11:27fixnull cart on refresh
  4. 12:40testcover refund edge cases
  5. 13:02featwebhook signature check
  6. 6.6 h without a commit
  7. 19:40refsplit payment service
  8. 21:15fixretry on 502 from PSP
  9. 23:11featreceipt email template

2  Work sessionsgap threshold 2 h

excluded · 6.6 h

3.8 h3.5 h
08:0012:0016:0020:0024:00
02 Mar · 2 sessions7.3 h

3  Your report lineMarch

Development — acme/checkout-api

24 sessions · 312 commits · 2 developers

127.5h

View-only share link, expiring

Reads repositories fromGitHubGitLabBitbucketSelf-hosted .git URLs.bundle offline

A number your client can check.

Invoices get questioned when the hours can't be explained. GitHours makes the explanation part of what you send.

  1. 01Every hour points at commitsTime is the interval between consecutive commits inside a session. Open any session to see the exact commits it was built from.
  2. 02What's excluded is shown, not hiddenBreaks longer than your gap threshold close a session and appear on the report as excluded time — so nobody wonders what you left out.
  3. 03The method travels with the reportThresholds, date range and merge handling are printed on every PDF and share link, not buried in a settings screen.

The report does the arguing for you.

Send it as a PDF with the invoice, or as a view-only link that expires. Your client needs no account.

Development time report · 01 – 31 Mar · sample data

acme/checkout-api

View only · expires in 30 days

Billable

127.5h

Excluded

14.0h

Sessions

24

12
01 Mar08 Mar15 Mar22 Mar31 Mar

By developer

R. Okonjo81.6 h
M. Lindqvist45.9 h
3

How this was calculated

Sum of intervals between consecutive commits within a session. Gaps over 2 h close the session and are excluded.

  1. 1Excluded gaps, flagged. The overnight break is visible, not quietly dropped.
  2. 2Every session, open to inspection. Its commits, authors and times are one click away.
  3. 3The method, in plain words. Printed on the report your client actually reads.

Everything around the number.

Clone or upload

GitHub, GitLab, Bitbucket, or any other host whose clone URL ends in .git — with a token in the URL for private repositories. Or upload a git bundle for code that never leaves your network.

Rules you can defend

Gap threshold, date range, contributors and merge handling. Change one and the timeline redraws.

Split by developer

Hours attributed per author, for agencies that bill by person rather than by project.

Work by phase

Conventional commits sorted into feature, fix, refactor, docs, test and chore — or your own categories.

PDF and CSV

A client-ready PDF to send with the invoice, a CSV for your own spreadsheet.

Metadata only

Reports use timestamps, authors and messages. No file content reaches a report, a share link or an export.

Not another timer to forget to start.

Manual trackers

  • No setup requiredNo
  • Works with existing historyNo
  • Objective proof of workNo
  • No activity monitoringvaries
  • Client-ready reportssome
  • No browser/IDE pluginN/A

IDE plugins

  • No setup requiredNo
  • Works with existing historyNo
  • Objective proof of workpartial
  • No activity monitoringNo
  • Client-ready reportsNo
  • No browser/IDE pluginNo

GitHours

  • No setup requiredYes
  • Works with existing historyYes
  • Objective proof of workYes
  • No activity monitoringYes
  • Client-ready reportsYes
  • No browser/IDE pluginYes

Head to head: vs git-hours · vs GitInvoiced · vs BillMyCommits · vs Git Invoice

Questions, answered.

Something else? Read the docs.

How accurate is git-based time calculation?

GitHours calculates time by analyzing intervals between consecutive commits. It uses configurable gap thresholds (default: 2 hours) to handle breaks. While not perfect for every work style, it provides objective data that's far more accurate than memory-based estimates.

Does GitHours access my code?

GitHours reports only on commit metadata — timestamps, authors and messages. To read that history it clones the repository into a temporary directory on its own server, file contents included; no file content is read into a report, a share link, or an export.

What if I don't commit frequently?

GitHours works best with regular commit patterns. For infrequent committers, you can adjust gap thresholds or use the AI-powered session detection (Pro feature) to improve accuracy.

Can clients see my reports?

Only if you share them. Generate a view-only link with an expiration date, or export a PDF to attach to your invoice.

Does it work with private repositories?

Yes. Include a personal access token in the repository URL, or upload a git bundle for fully offline analysis. Connecting a GitHub or GitLab account by OAuth is not available yet.

How is this different from WakaTime or Clockify?

Those tools track time in real-time via plugins or manual entry. GitHours analyzes your existing git history — no setup, no forgetting to start timers, no privacy concerns from always-on monitoring.

Point it at a repository. Read the proof.

Bill from the commit history you already have.

Private repository? Put a token in the URL, or upload a git bundle. No credit card required.