Money · Edition No. 32 · 26 Sep 2026

kimai/kimai

Self-hosted time tracking against customers and projects, with invoices generated from the same records.

← MoneyRead the whole edition →

4,959 stars · AGPL-3.0 · 2.67.0 (2026-09-13) · Track this in Scout

Self-hosted time tracking against customers and projects, with invoices generated from the same records.

▶Repo detailsthe review · specs · pros & cons · install

What it is

Kimai is a web application for recording time against customers, projects and activities, with reporting and invoice generation on top. It is a PHP application backed by MySQL or MariaDB.

What it is good for. Freelancers and small teams who bill by time and are currently doing it in a spreadsheet. The gain is not the timer — it is that the invoice comes out of the same data, with the same rates, without anybody retyping anything. It also handles several people, several rates and several currencies, which is where spreadsheets usually break.

Stars4,959
LicenceAGPL-3.0
Latest2.67.0 (2026-09-13)
Good
  • Invoices are generated from the recorded time using templates you can edit, in several formats. That removes the retyping step where the errors happen.
  • Rates can be set per customer, per project, per activity and per person, including different internal and billable rates.
  • It has been maintained for ten years, has a real plugin ecosystem, and there is a mobile app and a browser extension for starting the timer.
Watch for
  • PHP 8.2 or newer, a web server and a MySQL-compatible database. There is a container image, but this is still the heaviest kind of install in today's list.
  • The interface is dense. Customers, projects, activities, teams, rates and tags all exist, and the first hour is spent deciding which of them you actually need.
  • AGPL-3.0, and some plugins from the project's own shop are paid. Nothing essential is behind that line, but the invoice templates people want are often the paid ones.
Similar repositories
Install
docker run --rm -d --name kimai-mysql \
  -e MYSQL_DATABASE=kimai -e MYSQL_USER=kimai \
  -e MYSQL_PASSWORD=kimai -e MYSQL_ROOT_PASSWORD=kimai \
  mysql:8.4
docker run --rm -d --name kimai -p 8001:8001 \
  -e DATABASE_URL=mysql://kimai:kimai@host.docker.internal:3306/kimai \
  kimai/kimai2:apache
Screenshots
kimai/kimai: GitHub preview cardkimai/kimai: Screenshot 1

Get the next edition in your inbox

A dozen repositories, opened and checked. The licence read, the last release dated, and the ones that did not make it named with the reason. It is the half most lists leave out.

No tracking pixels. One click to leave. The archive stays free either way.

We use your address to send the edition and nothing else. Confirm by email, leave in one click. How we handle it.