diff --git a/bin/count_commits b/bin/count_commits
new file mode 100755
index 0000000..6e47184
--- /dev/null
+++ b/bin/count_commits
@@ -0,0 +1,124 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Mojo::File qw'path';
+use feature 'say';
+use DateTime;
+use Getopt::Long;
+
+GetOptions (
+  "help|h" => sub {
+    say "--quarter (Defaults to month)";
+    say "--current (Default to last)";
+    exit(0);
+  },
+  "quarter|q" => \(my $quarter),
+  "current|c" => \(my $current),
+  "user|u=s"  => \(my $user)
+);
+
+# Get the relevant timeslice
+my $dt = DateTime->now;
+if (!$current && !$quarter) {
+  $dt->subtract(months => 1);
+}
+elsif ($quarter) {
+  if ($dt->month <= 3) {
+    $dt->set_month(1);
+  }
+  elsif ($dt->month <= 6) {
+    $dt->set_month(4);
+  }
+  elsif ($dt->month <= 9) {
+    $dt->set_month(7);
+  }
+  else {
+    $dt->set_month(10);
+  };
+
+  if (!$current) {
+    $dt->subtract(months => 3);
+  };
+};
+
+my $year = $dt->year;
+my $from = $dt->month_abbr;
+
+if ($quarter) {
+  $dt->add(months => 2);
+};
+
+my $to = $dt->month_abbr;
+
+my $cmd = "git shortlog -sne " .
+  "--since='01 $from $year' " .
+  "--before='31 $to $year' " .
+  "--max-parents=1";
+
+my $sum = 0;
+my @components = ();
+
+my $file = path(path(__FILE__)->dirname, 'count_commits.conf');
+my @lines = split "\n", $file->slurp;
+
+if ($lines[0] =~ /^\[([^\]]+?)\]$/) {
+  $user ||= $1;
+  shift @lines;
+};
+
+unless ($user) {
+  die 'No user defined';
+};
+
+say "\nCommits from 01 $from $year - 31 $to $year by $user";
+say "------";
+
+foreach (@lines) {
+  chomp $_;
+  my $dir = path($_);
+  my $dir_str = $dir->to_string;
+  if (-d $dir_str) {
+    chdir $dir_str;
+    my $out = `$cmd`;
+    if ($out =~ /\s+(\d+)\s+$user/) {
+      $sum += $1;
+      say $dir->basename, ": $1";
+      push @components, [ $dir->basename => $1 ];
+    };
+  } else {
+    warn "$dir does not exist\n";
+  }
+};
+
+say '------';
+say "Commits: $sum";
+say "In: " . join(', ', map { $_->[0] } sort { $b->[1] <=> $a->[1] } @components),"\n";
+
+exit(0);
+
+=pod
+
+This script will count and sum up all commits
+in all repositories listed in the configured repositories
+for a certain user in the current branches.
+
+The configuration file is expected in the same folder as the script
+and named C<count_commits.conf>.
+
+It has the following structure:
+
+  [Username]
+  /path/to/my/repo1
+  /path/to/my/repo2
+  ...
+
+Two different time ranges are supported:
+
+Per default the last finished month
+is listed. With the parameter C<--quarter>, the last quarter are listed.
+
+With the parameter C<--current> the current month or quarter is taken into account.
+
+The username can be overwritten with the C<--user> parameter.
+
+=cut
