impactite

Analytics
that land.

Self-hosted web analytics in one binary. Drop-in for Plausible and GoatCounter.

1,5007500
Sep 18 Oct 1 Oct 15
  • Google 0
  • Direct / None 0
  • Hacker News 0
  • Twitter 0
  • Reddit 0
  • / 0
  • /pricing 0
  • /blog/crater 0
  • /docs 0
  • /docs/install 0

Benchmarks

1M pageviews each, one machine.

pageviews per second
  • impactite 159,799 /s
  • plausible 7,753 /s
  • goatcounter 9,738 /s
top pages query
  • impactite 0.34 ms
  • plausible 56.50 ms
  • goatcounter 1.34 ms
cpu for 1M pageviews
  • impactite 21.5 s
  • plausible 1,248.2 s
  • goatcounter 137.9 s
idle memory
  • impactite 18 MiB
  • plausible 942 MiB
  • goatcounter 37 MiB
idle cpu
  • impactite 0.00 %
  • plausible 2.69 %
  • goatcounter 0.02 %
memory after 1M
  • impactite 124 MiB
  • plausible 2,217 MiB
  • goatcounter 482 MiB
image size
  • impactite 19 MiB
  • plausible 987 MiB
  • goatcounter 36 MiB
tracker gzipped
  • impactite 930 B
  • plausible 1,324 B
  • goatcounter 3,259 B

Plausible CE 3.2.1, GoatCounter 2.7.0, Ryzen 5 7600X. Source

Do you really need Kubernetes?

Set your monthly pageviews to see the load on one server.

cpu a day
7.2 s
of one core
<0.01%
headroom at peak
4,142x

No. One small server is enough.

Migrating from Plausible or GoatCounter?

Just change the host in your script. Your old snippets, custom events and API calls keep working.

plausible
<script defer data-domain="example.com" src="https://plausible.io/js/script.js"></script>
goatcounter
<script data-goatcounter="https://example.goatcounter.com/count" async src="//gc.zgo.at/count.js"></script>
goals and custom events
funnels
revenue tracking
google search keywords
shareable dashboards
email and slack reports
traffic alerts
all sites in one view
import from ga4 and umami
full data export
daily exports to s3
bot and ip filtering
no cookies
passkeys and two factor
single sign-on
teams and guest access

One binary. Done.

Pick how you run it and copy the result.

run as
https
mail
docker run -d --name impactite --restart unless-stopped -p 443:8000 -p 80:80 -v impactite:/data ghcr.io/z1xus/impactite serve --url https://stats.example.com --acme
then on your site
<script defer data-domain="example.com" src="https://stats.example.com/js/script.js"></script>