invisit
Compare

invisit vs PostHog

Choose PostHog for product analytics, session replay, feature flags, experiments and surveys on one event stream, free up to 1M events a month. Choose invisit for website analytics alone: no cookies by default, an 8.5 KB script instead of about 119 KB, and crawler reads and payment-provider revenue built in.

.mdllms.txt

Written by the invisit team. Facts about PostHog checked on , from their own pages.

Choose invisit if

  • You want web analytics with no cookies by default, without a cookieless mode to set in code and in project settings.
  • You want a tracker of about 8.5 KB gzipped instead of about 119 KB.
  • You want one flat monthly price per volume, where engagement pings, web vitals and crawler reads never count toward the bill.
  • You want crawler reads and revenue from Stripe, Paddle or Polar on your traffic dashboard, without forwarding logs or building warehouse queries.

Choose PostHog if

  • You want session replay, feature flags, A/B tests, surveys and error tracking on the same events as your analytics.
  • Your site stays under 1M events a month and you want to pay nothing. With two events per page view, that is about 500K page views.
  • You need to self-host under the MIT license, query raw events with SQL, or export them to your own warehouse.
  • You need person profiles and retention cohorts for signed-in users, scheduled email reports, or SDKs for mobile apps.
  • You want to import history from Mixpanel or Amplitude, or tie ad spend from Google and Meta to conversions.

What a month costs

Monthly billing, cheapest plan step that covers the volume. invisit bills events (page views and custom events); PostHog bills events, meaning any data point sent to PostHog: pageviews, page leaves, autocaptured clicks, web vitals and custom events. Prices for anonymous events. Events from identified users start at $0.000248 each past the first 1M. One project on the free plan, where ingestion stops at the limit; six on pay-as-you-go.

Monthly price, invisit and PostHog
A month ofinvisitPostHog
10KFreeFree
100K$14Free
1M$49Free
10M$199$324.4

Feature by feature

Features, invisit and PostHog
FeatureinvisitPostHog
Privacy and setup
No cookies, no consent banner neededDaily-rotating hashOpt-in cookieless_mode; a cookie and localStorage by default
Data stored in the EUFalkenstein, Germany (Hetzner)EU Cloud in Frankfurt, or US Cloud; chosen at signup
Lightweight script (under 10 KB)About 8.5 KB gzipped; extras load on demandAbout 119 KB gzipped; replay adds 43 KB, surveys 47 KB
Serve from your own domain@invisitdev/server proxyManaged reverse proxy, free on PostHog Cloud
Open sourceTracker and SDKs, MITMIT, self-hostable hobby deploy without support
Import history from another toolNoManaged from Mixpanel, Amplitude and S3; guides for GA and Plausible
Analytics
Realtime viewYesLive tab in alpha; live event feed in Activity
Custom events and goalsYesCustom events, autocapture and conversion goals
FunnelsYesYes
Per-visit timelinesEvery visit step by step: live in the dashboard, any age through the API and MCPThrough session replays and person profiles
Retention cohortsNoRetention insights and cohorts
HeatmapsClicks, rage and dead clicks, scroll depthClicks and scroll depth; 3 pages on the free plan
Session recordingsNo5,000 recordings a month free
Web vitalsNever billedLCP, INP, CLS and FCP; opt-in, billed as events
AI assistant referralsChatGPT, Claude, Perplexity, Gemini and moreAI channel type: ChatGPT, Claude, Gemini, Perplexity, Copilot
Crawler reads (search and AI bots)Recorded server-side, never billedBots tab in alpha; crawlers need server logs sent as billed events
RevenueRead from Stripe, Polar, Paddle, Dodo Payments, Creem and Lemon SqueezyBeta: Stripe or code events as properties; no revenue dashboard
Beyond the dashboard
Traffic alertsSpikes, drops and silence, to Slack, Discord, ntfy or a webhookThresholds or anomalies, to Slack, Discord, Teams or webhook; 5 free
Email reportsNoEmail and Slack subscriptions; 5 on the free plan
Public dashboardsYesPublic links and embeds; passwords on Boost and up
Short linksYesNo
On-page feedbackYesFeedback button surveys; 1,500 responses a month free
APIREST, with an OpenAPI documentQuery API with SQL, plus capture and REST APIs
MCP server for AI assistantsYesOfficial hosted server, free to call
Plans
Free plan20K events a month, nearly every feature1M events a month; ingestion stops at the limit
Free trial14 daysNo trial; the free tier has no time limit
Sites4 free, unlimited on paid plans1 project free, 6 on pay-as-you-go, unlimited with Boost
Team membersUnlimited, on every planUnlimited on every plan, no seat charges
Data keptForever, on every plan1 year free, 7 years on paid plans

Is PostHog web analytics or a product suite?

PostHog is a product suite with a web analytics dashboard inside it; invisit is website analytics only. As of November 2026, PostHog’s pricing lists product analytics, web analytics, session replay, feature flags and experiments, surveys, error tracking, a data warehouse, logs and AI observability, each with its own free allowance and meter.

PostHog’s web analytics runs on the same events as the rest of the suite: visitors, page views, sessions, bounce rate, paths, channels and a world map, with session replays one click from any number. That shared event stream is the reason to pick PostHog.

invisit covers where visitors came from, what they read, what converted and what it earned. It has no session recordings, retention cohorts, A/B tests, feature flags or mobile app SDKs.

How much does PostHog cost for website analytics?

PostHog is free up to 1M events a month and then charges per event, while invisit charges a flat price per volume step. For a website, the catch is that PostHog counts events rather than page views, and its JavaScript SDK sends more than one event per page view by default.

As of November 2026, PostHog’s pricing for anonymous events is free for the first 1M, then $0.00005 each up to 2M, $0.0000343 up to 15M and $0.0000295 up to 50M. Web analytics has no price of its own. Events from users you identify cost more: PostHog’s event comparison starts them at $0.000248 each.

What a page sends PostHog invisit
Page view Billed ($pageview) Billed
Page leave and engagement Billed ($pageleave, on by default) Engagement pings, never billed
Clicks on links, buttons and form fields Billed ($autocapture, on by default) Outbound link and download clicks sent and billed by default; others only with track()
Web vitals Billed, about 30% of page views by PostHog’s estimate Never billed
Crawler and AI bot reads Billed when forwarded from server logs Never billed

PostHog’s bounce rate needs $pageleave and $autocapture (dashboard docs), so two events per page view is the floor. The price table above compares events one for one; this one counts page views at that floor:

Page views a month PostHog events PostHog invisit
100K 200K Free $14
500K 1M Free $49
1M 2M $50 $49
3M 6M $187.20 $99
10M 20M $643.40 $199

A SaaS with 300K page views a month sends PostHog at least 600K events and pays nothing; invisit’s 1M step costs $49. That is a clear PostHog win. At 3M page views the floor is 6M events and $187.20 a month against $99 on invisit, before any identified events, which PostHog bills at the base rate plus a person profiles rate, $0.000248 an event in total from 1M to 2M.

On PostHog’s free plan, ingestion stops at the free allowance until the month resets. On pay-as-you-go you can set a billing limit per product; past it, events are dropped for good. invisit warns at 80%, records the first month over in full, and pauses new events only in a second month over in a row (billing).

PostHog has no seat charges. Its free plan includes one project, pay-as-you-go six, and the $250-a-month Boost package unlimited. invisit includes unlimited sites on every paid plan.

With its defaults, PostHog sets a cookie, and PostHog’s own GDPR guide says to use a cookie banner if you use PostHog with cookies for logged-out visitors. invisit sets no cookies and stores nothing on the device, so it needs no banner for analytics.

By default, PostHog’s persistence keeps state in localStorage and in a first-party cookie named ph_<project_token>_posthog that expires after 365 days.

The alternative is PostHog’s cookieless tracking. Set cookieless_mode: 'always' in posthog.init and turn on cookieless tracking in project settings, or PostHog discards the events. Visitors are then counted with a server-side hash of a daily salt, IP address, user agent and hostname. With 'on_reject', visitors who accept your banner get cookies and the rest are hashed.

PostHog’s cookieless tutorial lists the costs: session replay and surveys stay off without consent, a returning visitor counts as new each day, and the IP address is stripped before GeoIP runs, so the world map stays empty. posthog-js also ignores Do Not Track unless you set respect_dnt: true.

invisit’s hash also rotates daily, raw IP addresses are never stored, and Global Privacy Control and Do Not Track can be honoured with respectGpc and respectDnt. Sites that want consent anyway can turn on consent mode.

Where PostHog keeps your data: EU Cloud, US Cloud or your own server

PostHog Cloud has a US region and an EU region hosted in Frankfurt; invisit stores all analytics data in Falkenstein, Germany. On PostHog you pick the region at signup, and moving later is a migration between Cloud instances.

PostHog’s free managed reverse proxy, which serves its SDK from your own subdomain, routes traffic through Cloudflare. invisit also runs DNS and CDN through Cloudflare, a US company, and serves from your domain with @invisitdev/server. Both offer a DPA (invisit’s DPA).

PostHog can also run on your own server, and invisit cannot. The hobby deploy is MIT-licensed Docker Compose on one machine of about 4 vCPU and 16 GB RAM. PostHog’s disclaimer calls it unsupported, “unlikely to scale past a couple 100ks events” without significant effort, and without paid features such as subscriptions and data pipelines. If data must stay on infrastructure you run, PostHog meets that and invisit does not.

How big is the PostHog script?

PostHog’s default snippet loads array.js, which measured about 119 KB gzipped on November 3, 2026 (posthog-js 1.444.4, 369,516 bytes uncompressed). invisit’s core invisit.js is about 8.5 KB gzipped.

PostHog loads array.js asynchronously and fetches session replay (recorder.js, about 43 KB gzipped) and surveys (about 47 KB) only when those features are on. If you bundle posthog-js from npm, the slim bundle, which PostHog marks experimental, measured about 52 KB. invisit’s heatmap, feedback and interaction modules also load only when used.

Does PostHog track web vitals, AI referrals and crawlers?

PostHog covers web vitals and AI referrals in its web analytics dashboard, and crawlers only if you forward server logs. invisit covers all three and bills none of them.

  • Web vitals. PostHog captures LCP, INP, CLS and FCP once you enable web vitals autocapture, and bills each $web_vitals event (web vitals). invisit collects LCP, INP, CLS, FCP and TTFB by page, device, country and browser.
  • AI referrals. PostHog’s AI channel type matches referring domains such as chatgpt.com, claude.ai, perplexity.ai and gemini.google.com, and matching utm_source values. invisit recognises 19 assistants, DeepSeek, Le Chat and NotebookLM among them, in their own AI tab (AI assistant traffic).
  • Crawlers. posthog-js blocks known bots, and most crawlers never run JavaScript. To see GPTBot or ChatGPT-User, PostHog has you forward server or CDN logs as billed $http_log events, read in a Bots tab that is in alpha (managing bot traffic). invisit’s @invisitdev/server records crawler reads from search engines and AI crawlers.
  • Revenue. PostHog’s revenue analytics is in beta: it reads Stripe through its data warehouse, or revenue events you send, and exposes revenue as person and group properties for insights and SQL, since PostHog removed its dedicated revenue dashboard. invisit reads Stripe, Paddle, Polar, Lemon Squeezy, Creem or Dodo Payments with no code in the checkout (connect a provider).

When PostHog is the better choice

PostHog is the better choice when you need more than website analytics, or when its free tier covers your traffic.

  • One event stream for the whole product. Session replay, feature flags, experiments, surveys and error tracking share PostHog’s events, so a funnel drop-off opens the replays behind it.
  • A site that should cost nothing. Under 1M events a month, about 500K page views, PostHog is free and keeps a year of data. invisit’s free plan covers 20,000 events.
  • Signed-in users over months. Person profiles and retention cohorts follow one user across visits and devices, which a daily-rotating hash rules out by design.
  • Mobile apps. PostHog has SDKs for iOS, Android, React Native and Flutter.
  • Self-hosting and raw data. The MIT hobby deploy, SQL over your events, and batch exports to your own warehouse.
  • Paid acquisition. Marketing analytics, in beta, pulls cost and clicks from Google, Meta, LinkedIn, TikTok, Reddit and Bing ads next to your conversions.
  • History from another tool. PostHog runs managed migrations from Mixpanel and Amplitude. invisit cannot import history.
  • Scheduled reports. PostHog sends dashboard subscriptions by email or Slack, five on the free plan. invisit has no scheduled email reports.

Switching from PostHog to invisit

Run invisit next to PostHog for a few weeks, move your capture calls to track(), export your history, then remove posthog-js.

  1. Install invisit next to the PostHog snippet, or add @invisitdev/web to your bundle (frameworks).
  2. Replace each posthog.capture() with track(). invisit event names use letters, digits and _ . : -, so user signed up becomes user_signed_up. Each event takes up to 32 properties.
  3. Replace posthog.identify() with identify(user.id). invisit takes only the id and hashes it, so person properties such as email have no equivalent.
  4. Drop cookieless_mode, which invisit does not need, and replace revenue events by connecting your payment provider.
  5. Rebuild your funnels from the same pages and events (funnels), then compare both dashboards for two to four weeks before removing posthog-js.
src/analytics.ts
// Before: PostHog
import posthog from 'posthog-js'

posthog.init('<ph_project_token>', { api_host: 'https://eu.i.posthog.com', defaults: '2026-08-30' })
posthog.capture('signup', { plan: 'pro' })
posthog.identify(user.id, { email: user.email })

// After: invisit
import { identify, init, track } from '@invisitdev/web'

init({ site: '<site id>' })
track('signup', { plan: 'pro' })
identify(user.id)

invisit cannot import your PostHog history, so export it before you cancel. Batch exports send events, persons and sessions to S3, BigQuery, Snowflake, Postgres, Redshift, Databricks or Azure Blob Storage, and a backfill covers the time before the export existed. The first 1M exported rows each month are free, then $0.000015 a row up to 10M. For files, file download exports return Parquet or JSON Lines through the API, a week of data at a time.

Expect visitor counts to differ while both run. PostHog with cookies recognises a returning visitor across days; invisit’s hash rotates daily, so a visitor who returns on three days counts on each. Page views are the fairer number to compare.

Why teams pick invisit

invisit starts from a simple question: who actually came to your site, and what brought them there? So it leads with people, not only totals. Each visit keeps its pages and events in order, next to where it came from, including the AI assistants that now send real visitors.

It also covers the jobs that usually need a second tool. Revenue arrives straight from your payment provider, crawler reads show which search engines and AI bots read your pages, and heatmaps, web vitals, short links and feedback sit in the same dashboard. Every paid plan has every feature, so there is no tier to outgrow.

And it stays out of your visitors’ way: no cookies, no banner, nothing that follows anyone from one day to the next.

invisit or PostHog? Common questions

Is invisit cheaper than PostHog?

At 1M events a month invisit costs $49 a month, and PostHog is free. invisit bills page views and custom events; PostHog bills events, meaning any data point sent to PostHog: pageviews, page leaves, autocaptured clicks, web vitals and custom events. Prices checked against PostHog's pricing page on November 3, 2026.

Does PostHog have a free plan?

Yes, PostHog has a free plan: 1M events a month; ingestion stops at the limit. invisit is free up to 20K events a month with no time limit, and its free plan has nearly every feature.

What does invisit have that PostHog does not?

invisit includes lightweight script (under 10 KB), short links, and free trial; PostHog does not, as of November 3, 2026.

When should I choose PostHog over invisit?

PostHog suits you better than invisit when one of these is true. You want session replay, feature flags, A/B tests, surveys and error tracking on the same events as your analytics. Your site stays under 1M events a month and you want to pay nothing. With two events per page view, that is about 500K page views. You need to self-host under the MIT license, query raw events with SQL, or export them to your own warehouse. You need person profiles and retention cohorts for signed-in users, scheduled email reports, or SDKs for mobile apps. You want to import history from Mixpanel or Amplitude, or tie ad spend from Google and Meta to conversions.

When should I choose invisit over PostHog?

invisit suits you better than PostHog when one of these is true. You want web analytics with no cookies by default, without a cookieless mode to set in code and in project settings. You want a tracker of about 8.5 KB gzipped instead of about 119 KB. You want one flat monthly price per volume, where engagement pings, web vitals and crawler reads never count toward the bill. You want crawler reads and revenue from Stripe, Paddle or Polar on your traffic dashboard, without forwarding logs or building warehouse queries.

Does PostHog use cookies?

Yes, by default. As of November 2026, posthog-js keeps identity and session data in localStorage and in a first-party cookie named ph_<project_token>_posthog that expires after 365 days. Setting cookieless_mode to always, and turning on cookieless tracking in the project settings, stops all browser storage; PostHog then counts visitors with a daily-salted server-side hash, and session replay and surveys stay off for visitors without consent. invisit sets no cookies and stores nothing on the device by default.

How many PostHog events does one page view use?

At least two with PostHog's defaults: a $pageview, and a $pageleave when the visitor leaves. Autocapture adds an event for clicks on links, buttons and form fields, and web vitals, once enabled, add about 30% of your page view count, according to PostHog's docs. All of them count toward the 1M free events and the per-event price after it. invisit bills page views, custom events, conversions and short-link clicks; web vitals and crawler reads are never billed.

Does PostHog store data in the EU?

Yes, if you choose PostHog Cloud EU, which PostHog hosts in Frankfurt. PostHog Cloud also has a US region; you pick one when you sign up, and moving later is a migration between Cloud instances. As of November 2026, PostHog recommends the EU region for GDPR and new EU organizations discard client IP addresses by default. invisit stores all analytics data in Falkenstein, Germany (Hetzner), with Cloudflare in front for DNS and CDN.

Can I self-host PostHog?

Yes. As of November 2026, PostHog publishes an MIT-licensed hobby deployment: Docker Compose on one machine with about 4 vCPU and 16 GB RAM. PostHog calls it unsupported, says it is unlikely to scale past a few hundred thousand events without significant effort, and keeps paid features such as subscriptions, group analytics and data pipelines on PostHog Cloud. invisit has no self-hosted edition; only its tracker and SDKs are open source (MIT).

How big is the PostHog JavaScript snippet?

The HTML snippet is a small inline stub that loads array.js from PostHog's CDN. On November 3, 2026, array.js (posthog-js 1.444.4) measured 369,516 bytes, about 119 KB gzipped. Session replay (recorder.js, about 43 KB gzipped) and surveys (about 47 KB) load separately when they are turned on. invisit's core script, invisit.js, is about 8.5 KB gzipped, with heatmap, feedback and interaction modules loading only when used.

Does PostHog show traffic from ChatGPT and AI crawlers?

For referrals, yes. PostHog puts visits into an AI channel type when the referring domain or utm_source matches its list, such as chatgpt.com, claude.ai, perplexity.ai and gemini.google.com. AI crawlers such as GPTBot appear only if you forward server or CDN logs as $http_log events, which count as billed events, and its Bots tab is in alpha. invisit recognises 19 assistants in an AI tab and records crawler reads server-side with @invisitdev/server, never billed.

More comparisons