Hotjar cost vs self-hosted PostHog and OpenReplay

Self-hosted PostHog and OpenReplay remove per-session fees but move replay storage, server sizing, masking and support onto your team or partner. This page shows how to price both sides with your own numbers.

On this page

Product cost of Hotjar versus self-hosted PostHog and OpenReplay: the short answer

Hotjar now sits inside Contentsquare and new Hotjar accounts can no longer be created, so a renewal forces a cost decision on the existing contract. Self-hosting removes the vendor subscription but adds infrastructure, implementation, masking and support work that you pay for in other forms. Your own servers, storage for replay data, engineering time to install the tracker and configure masking rules, and ongoing upgrades all become line items. Hotjar and Contentsquare pricing is quoted or plan-based, so the starting point is your own contract: note the plan, the session or page volume it covers, the seats, and the end date, then ask Contentsquare what happens to those terms as Hotjar moves into its product line.

The open-source options price differently. PostHog's free tier covers the first 1 million analytics events every month on PostHog Cloud, and its README says open-source deployments should scale to about 100k events per month before moving to PostHog Cloud. OpenReplay's README says a single VM with 2 vCPUs, 8 GB of RAM and 50 GB of storage is enough to start self-hosting, while OpenReplay Dedicated, a fully managed instance, starts at $199 per month on AWS, GCP or Azure according to its pricing page. Compare these against your monthly session volume, not against the headline number. Also note that PostHog's self-hosted edition carries no support from PostHog, so any incident response, upgrade testing and infrastructure work falls to your team or to a partner you engage under a written scope.

Before you compare totals, confirm three things: how many sessions and events you record per month at peak, how long you must keep recordings for your own policy and your regulators, and who owns the masking configuration for personal data. Those answers set the server size, the storage bill and the work needed to avoid recording sensitive fields. A quote from a vendor or implementation partner should break these costs out separately: hosting, storage growth, initial setup and masking, ongoing support, and upgrades, with each marked one-time or recurring.

Which cost components change when you leave Hotjar

This table compares each cost component of a Hotjar or Contentsquare plan with the equivalent in PostHog Cloud, self-hosted PostHog, and OpenReplay Dedicated, Enterprise or self-hosted. Read the cells as the questions to put to each vendor and to your own team, since most self-hosted costs depend on your infrastructure and staffing rather than a published price.

Cost componentCommercial side (Contentsquare, Hotjar, PostHog Cloud, OpenReplay Dedicated or Enterprise)Self-hosted side (PostHog hobby or production, OpenReplay single VM or Kubernetes)One-time or recurring
Subscription or licenseContentsquare plan quoted per product; OpenReplay Dedicated starts at $199 per month on AWS, GCP or Azure; OpenReplay Enterprise is custom on multi-year contractsOpen-source editions carry no license fee; PostHog's ee directory and OpenReplay's ee directory need a commercial license for premium featuresRecurring
Session or event feesContentsquare sessions or events priced by plan; PostHog Cloud gives the first 1 million analytics events free each month, then usage pricingNo per-event vendor fee; cost shifts to storage, compute and bandwidth you pay your cloud providerRecurring
Server and storageIncluded in managed plans; confirm replay retention and any overage terms in writingPostHog recommends about 4 vCPU, 16 GB RAM and more than 30 GB storage; OpenReplay's README says 2 vCPUs, 8 GB RAM and 50 GB storage is enough to startRecurring
ImplementationVendor onboarding and tag swap, typically scoped with the vendorInstalling the stack, configuring the tracker and hosting; ask for a fixed-scope quote covering both platforms if you run bothOne-time
Masking and consent configurationMasking settings within the vendor console; confirm how CNIL-aligned consent handling is configuredCapture-time masking by CSS selector, input redaction and OpenReplay's private mode must be set and tested by you; ask an assessor to review the rulesOne-time, with recurring review
MigrationHistorical Hotjar recordings and heatmaps do not carry over; budget for rebuilding funnels and surveysRebuilding dashboards, events and survey logic; PostHog managed imports cover at most one year per job and require a paid planOne-time
SupportIncluded by tier; OpenReplay Enterprise adds a custom SLA and dedicated supportPostHog does not provide customer support for self-hosted instances; OpenReplay's open-source edition relies on community support, so price in a retainer if you need itRecurring
Upgrades and patchingHandled by the vendor for managed tiersYour team or a partner applies releases; OpenReplay's latest release is v1.28, published September 25, 2025, so plan a release cycleRecurring
Internal skillsLower operational load; admin time for licensing and seatsStaff time for Kubernetes or Docker operations, database care, backups and monitoring; ask who owns this after handoverRecurring
Retention storageRetention set by plan, such as 1-year or 7-year options on PostHog Cloud; confirm Contentsquare retention termsRetention chosen by you and limited by your disks and the consent rules you apply, so storage growth needs a written policyRecurring

What moves the comparison most

Hotjar's replacement cost depends less on the sticker price than on how many sessions and events you record, how long you keep them, and what your team must build and run. The cards below cover the variables that shift a self-hosted PostHog or OpenReplay estimate most, and what to confirm before you ask for a quote.

Session and event volume

Volume is the first variable to pin down, because both PostHog Cloud and self-hosted storage scale with what you capture. PostHog's README says open-source deployments should scale to approximately 100k events per month and recommends PostHog Cloud above that, while its pricing page includes the first 1 million analytics events free each month. Count recorded sessions and events separately, sampling included, before comparing.

Replay retention you choose

Retention sets how much storage grows over time. PostHog's Free plan includes 1-year data retention, and the Pay-as-you-go plan raises this to 7-year data retention, so a longer history is a plan decision on Cloud. On OpenReplay self-hosting, retention is self-managed, so the cost is the disk and backup capacity you choose to keep. Decide the retention period in writing before sizing either option.

Server sizing and storage

Self-hosted cost is mostly the server, storage and the time to keep them patched. PostHog's self-host documentation recommends a server equivalent to 4 vCPU, 16 GB of RAM and more than 30 GB of storage, while OpenReplay's README says a single VM with 2 vCPUs, 8 GB of RAM and 50 GB of storage is enough to start. Replay storage grows with traffic, so the starting size is not the long-term figure. Ask the vendor or your engineers to model growth against your session volume.

Edition and license scope

Edition choice changes both license cost and what features you can run without paying. PostHog's ee directory needs a PostHog license for premium features on self-hosted instances, and the posthog-foss repository is the fully free option. OpenReplay's ee directory is under a commercial license, and its Enterprise edition adds SSO, SCIM, audit trail and a custom SLA on custom pricing. List the features you need, such as SSO or audit logs, and check which edition contains them before you budget.

Availability and on-call needs

Self-hosting moves uptime responsibility to your team. PostHog states that self-hosted deployments are officially unsupported and that it does not offer customer support for product, infrastructure or other questions on self-hosted instances. OpenReplay's community edition offers community support, and paid support sits in the Enterprise tier or a managed Dedicated instance. Define how much downtime is acceptable for the tracker and replay ingestion, then price the on-call and support path that meets it.

Internal platform skills

The staff hours needed to deploy, back up, upgrade and secure the stack often outweigh infrastructure costs. PostHog's hobby deployment uses a deploy-hobby script on Docker Compose, while larger installs need container orchestration and database operations skills. Note that PostHog no longer supports new Kubernetes deployments of its paid self-hosted product. Confirm whether your platform team can carry this work, or whether implementation and ongoing support will be bought in under a fixed-scope agreement.

How replay storage and server sizing set the infrastructure bill

On self-hosted PostHog or OpenReplay, the infrastructure bill grows with session volume, capture settings and the retention period you choose, and you set that retention yourself. Replay storage is the cost line most likely to surprise a team, because every recorded session adds data to object storage and to the database that indexes it. Before comparing against Contentsquare's session-based plans, estimate your monthly sessions, the share of those sessions you will record, the average recording length, and how many days or months you need to keep them. Ask each vendor or your implementation partner how capture settings such as sampling, DOM snapshot frequency and console or network capture change the size of a recording.

The two platforms document their starting points differently. PostHog's self-host documentation recommends a server equivalent to 4 vCPU, 16 GB of RAM and more than 30 GB of storage for its free Docker Compose hobby deployment, and its README says open-source deployments should scale to approximately 100k events per month before PostHog Cloud becomes the recommended path. OpenReplay's README says a single VM with 2 vCPUs, 8 GB of RAM and 50 GB of storage is enough to start self-hosting. These are starting points, not capacity plans, and neither figure tells you how large your object store must be after a year of recordings.

Treat these as different products when you size them. PostHog bundles product analytics, feature flags and surveys with replay, so its database and services carry more than recordings. OpenReplay concentrates on session replay, DevTools, product analytics with funnels and heatmaps, and cobrowsing, so its sizing is driven mainly by replay volume. Measure your own session volume and object storage growth for a pilot period, then size the VM, database and storage from that data and confirm the vendor's current requirements in the OpenReplay deployment documentation and the PostHog self-host guide before you request a quote.

How the cost picture differs by platform choice

PostHog's free self-hosted path is a Docker Compose (hobby) deployment under the MIT license, installed with a deploy-hobby script. PostHog recommends a server equivalent to 4 vCPU, 16 GB of RAM and more than 30 GB of storage, and says open-source deployments should scale to approximately 100k events per month before moving to PostHog Cloud. The license is free, but the work is not.

  • Recurring: The server or cloud instance, backups, storage growth for events and replays, patching, and the engineer time to keep the stack running.
  • One-time: Initial installation, hardening, configuring masking rules, and integrating the tracking snippet into your sites and apps.
  • Production scale: Teams above the hobby ceiling should plan for a larger, separately engineered deployment. PostHog's self-host docs state that new Kubernetes deployments of its paid self-hosted product are no longer supported, so confirm the supported topology before you commit.
  • Premium features: Anything in the ee directory needs a PostHog license. The posthog-foss repository avoids this but has no ee features.
  • Support: PostHog states self-hosted deployments are officially unsupported and that it does not provide customer support for product, infrastructure or other questions on self-hosted instances.

Confirm with your own platform team who will carry the on-call and upgrade work, since no vendor support contract covers it on this path.

How to build the comparison with your own numbers

This sequence turns the Hotjar and Contentsquare renewal into a three- and five-year cost model built from your own invoices, your own traffic, a test environment and written quotes, so the comparison reflects your organization rather than generic estimates.

  1. Export your current Hotjar or Contentsquare plan terms

    Start with the contract, order form or invoice history for your Hotjar plan or your Contentsquare package. Record the plan name, the session or page-view allowance, the number of seats, add-ons such as surveys, the billing currency, the renewal date and any overage charges. Ask Contentsquare in writing which features your plan includes after the merger, because features may change at its discretion. This step is done when every recurring line item is on one sheet, each tied to a dated invoice or order form.

  2. Measure sessions, events and replay retention

    Pull monthly session counts for the last twelve months from Hotjar or Contentsquare, and separate sessions that you record from those you only use for heatmaps or surveys. Estimate growth from your own trend, and note how many days of recordings your team actually opens. Decide how long recordings must be kept for your business and privacy obligations, since retention drives storage. This step is done when you have a monthly volume series and one agreed retention figure that a second person has reviewed.

  3. Size a test environment against the documented guidance

    Deploy a non-production instance of OpenReplay and of PostHog Docker Compose, following the vendor documentation. OpenReplay's README describes a single VM with 2 vCPUs, 8 GB of RAM and 50 GB of storage as enough to start, and PostHog's self-host documentation recommends a server equivalent to 4 vCPU, 16 GB of RAM and more than 30 GB of storage. Replay your own traffic sample against the instance and record CPU, memory, storage growth per thousand sessions and ingestion lag. This step is done when you have measured growth figures per session, which become the basis for the storage and server lines.

  4. Price cloud and VM hours from your provider

    Convert the measured sizing into the instance types, block storage, backup storage and outbound network you would buy from your cloud provider or data center. Ask your finance or cloud team for current list rates and any committed-use discounts, and add the cost of a standby or second environment if your recovery targets require one. Keep these figures separate as recurring costs. This step is done when each infrastructure line has a unit rate from your own provider invoice or price sheet, with the source noted.

  5. Add implementation and masking hours from a written scope

    Ask implementation partners, including DeployOpen, for a written scope covering tracker installation, masking rules for sensitive fields, private mode settings, surveys or heatmap rebuilds, SSO if needed and documentation. Compare each partner's hours and deliverables against the same list, since scopes that differ make totals incomparable. Treat implementation as one-time cost and note which items you can do in-house. This step is done when every candidate quote maps to the same deliverables and each line is a one-time cost.

  6. Add support, upgrade and staffing costs

    Self-hosted PostHog is officially unsupported and PostHog does not provide customer support for infrastructure questions on self-hosted instances, so budget for internal engineers or a retainer. OpenReplay's community edition offers community support, while paid Enterprise terms add a custom SLA and dedicated support, quoted on request. Estimate the recurring hours for patching, version upgrades, backups, monitoring and on-call, and name the person responsible for each. This step is done when the operations line is a recurring figure tied to named roles or a written retainer quote.

  7. Model the migration and overlap period

    Plan the period when Hotjar or Contentsquare and the replacement run side by side, and include the extra tracking, duplicate licensing and staff time it creates. Note that historical Hotjar recordings and heatmaps do not carry over, so decide whether you need an archive and what it costs to keep. If you plan to import product analytics history into PostHog, check the import limits in PostHog's documentation before counting that work. This step is done when the overlap cost and the archive decision appear as one-time lines in the model.

  8. Compare three- and five-year totals

    Build the model with one row per cost component: subscription or cloud fees, infrastructure, implementation, support and staffing, migration and overlap, and any archive. Show one-time and recurring costs separately, apply the same growth assumption to both options, and calculate three-year and five-year totals in one currency. Test the result by changing the session growth and retention inputs, and identify which input moves the total most. This step is done when a decision-maker can trace every total back to an invoice, a load test or a written quote.

Costs teams forget on each side

The subscription or server bill is only part of the comparison. The items below are the work and decisions that tend to surface after go-live, on both the Contentsquare side and the self-hosted side, and they shape the real total cost of each path.

Masking and consent setup for replay

Session replay captures what users see, so masking is a cost you configure, not a default you inherit. OpenReplay sanitizes data at capture time, with masking by CSS selector, input redaction and a private mode that masks all text and inputs by default. PostHog offers its own masking rules for recordings. Budget time for reviewing forms, account pages and checkout flows with your privacy team, and confirm how each tool behaves on the pages you actually run.

Rebuilding surveys and heatmaps

Hotjar's surveys, heatmaps and recordings do not move with a data export, so each one has to be rebuilt in the new tool. Plan for re-creating survey questions, targeting rules, heatmap pages and funnel definitions, then re-validating them against live traffic. OpenReplay covers heatmaps and funnels but its README does not list on-site surveys, so that gap needs a separate tool or a planned workaround.

No carry-over of historical Hotjar data

Past Hotjar recordings and heatmaps do not migrate into either self-hosted option. Decide with stakeholders which history matters for the next research cycle, and archive exports or summaries before the Contentsquare transition changes access. Tell the business that the cost of starting a new data baseline is real, because trend comparisons begin again from the cutover date.

Imported event data cannot be selectively deleted

If you bring historical events into PostHog through its managed migrations, PostHog's documentation states there is no way to selectively delete event data once imported, and direct imports are not deduplicated. Treat each import as a one-way decision. Confirm the scope of data to import, test the job on a small sample first, and agree the deletion and retention approach with your data protection owner before running it.

Checking the ee license before premium features

PostHog's main repository is MIT licensed, but the ee directory needs a PostHog license for premium features on self-hosted instances. OpenReplay's ee directory falls under a commercial license as well. Before you enable a premium feature such as SSO, audit logs or roles, check which directory it lives in and whether your license terms allow it. For a strictly free deployment, PostHog points teams to its posthog-foss repository, which removes proprietary features.

Staff time for upgrades, on-call and kubernetes limits

Self-hosted analytics recur as internal labor: patching, upgrades, backups, storage growth and on-call coverage for session ingestion. PostHog states that self-hosted deployments are officially unsupported and that it does not offer support for infrastructure questions, and new Kubernetes deployments of its paid self-hosted product are no longer supported. Settle the deployment target early, and ask who answers when replay ingestion stops at 2 a.m.

What retention you set yourself is worth in money and risk

Self-hosting lets you decide how long session replays, heatmap data and event records are kept and when they are deleted. That choice moves two things at once: the storage and database bill you carry, and the compliance exposure you hold for data you no longer need. On Contentsquare's session-based plans, retention is set by the vendor's plan terms. On OpenReplay's open-source edition, retention is self-managed, and PostHog's cloud plans list 1-year and 7-year retention tiers on its pricing page. On your own servers, the retention schedule is a setting your team owns, so it should be decided before the first recording is stored.

CNIL's guidance on analytics is the reference point for European teams. Its sheet 16 lists conditions under which analytics trackers can be exempt from consent, and one of them is a tracker lifetime of at most 13 months. CNIL's analytics guidance also says that most large audience measurement offerings fall outside that exemption whatever the configuration, and points to open-source software that the publisher can configure itself, such as Matomo. For a replay tool, this means the data retention and the scope of collection are part of the compliance case, not only a storage figure. Ask your DPO or counsel which of your flows, if any, can rely on the exemption and which need consent, and whether the replay tool's data falls under the same analysis as your web analytics.

Before you size storage, write the retention rule into your configuration: how long recordings and event data are kept, whether a shorter period applies to pages with forms or account data, and who approves a change. Confirm with your DPO or counsel whether a replay tool needs its own retention basis and whether consent is required on the pages where it runs. Then check that the masking settings in your OpenReplay or PostHog setup apply the same rule at capture time. A shorter retention period lowers storage cost and limits the data you must answer for, but only if deletion actually runs. Test it by confirming that old sessions disappear from storage on the schedule you set, and record the result as evidence.

Questions buyers ask before comparing Hotjar with self-hosting

Is self-hosting PostHog or OpenReplay cheaper than paying Hotjar?

It depends on whether the cost you compare is software or total ownership. Both PostHog's free Docker Compose hobby deployment and OpenReplay's open-source edition carry no license fee, so the recurring cost is the server, storage, backups, monitoring and the people who run them. PostHog's self-host documentation recommends a server equivalent to 4 vCPU, 16 GB of RAM and more than 30 GB of storage, and OpenReplay's README says a single VM with 2 vCPUs, 8 GB of RAM and 50 GB of storage is enough to start. Replay volume is what pushes storage and sizing up. Ask Contentsquare for your Hotjar plan's session allowance and renewal terms, then price the infrastructure and your internal or partner hours side by side in a written scope.

How long does a Hotjar to self-hosted migration take?

The duration depends on the number of sites and apps, how many masking rules you must rebuild, how many surveys and heatmaps you run, and whether you need an overlap period with Hotjar. Historical Hotjar recordings and heatmaps do not carry over, so the work is mostly rebuilding tracking, masking and reporting. Agree on the duration in a fixed scope document rather than relying on a general estimate. Ask any provider to break the timeline into installation, masking review, tracker rollout, validation and cutover.

Can a small team run PostHog or OpenReplay on its own?

A small team can deploy either tool, but it needs to own the operations afterward. PostHog states that self-hosted deployments are officially unsupported and that it does not provide customer support for product, infrastructure or other questions on self-hosted instances. OpenReplay's open-source edition relies on community support, while its paid Enterprise edition adds a custom SLA and dedicated support. Before you commit, confirm who patches the stack, who restores backups and who responds at night. If nobody on the team has time for that, a managed option or a retainer may suit you better.

What does the internal team need to provide during implementation?

Your team supplies the decisions and access that an implementer cannot make for you. You need people who own the hosting account or data center, can approve the server and network design, and can grant access to your sites and apps. You also need product owners who can define which pages and inputs must be masked, and a privacy or legal contact who can confirm consent treatment under the rules that apply to you. Ask for a written list of these roles and hours in the scope before work starts, so that delays do not come from waiting on approvals.

Does PostHog's open-source edition cover the features I need?

The MIT-licensed PostHog repository covers the core code, but premium features in the ee directory need a PostHog license on a self-hosted instance. PostHog points teams that need fully free software to its posthog-foss repository, which is purged of all proprietary code and features. Check your target list against that repository before you design around it. Features such as SSO, audit logs, custom roles and project permissions are sold as platform packages on PostHog Cloud, so confirm each one with PostHog directly. Also note that PostHog's README suggests moving to PostHog Cloud above approximately 100k events per month.

What does the ee license mean for total cost?

The ee directory is a separate license layer, so any premium feature you need on a self-hosted PostHog or OpenReplay instance can add a license fee on top of infrastructure and labor. For PostHog, premium ee features require a PostHog license. For OpenReplay, the ee directory is under a commercial license defined in ee/LICENSE, and its Enterprise edition is priced on custom multi-year contracts. Before comparing against Hotjar, list every feature your team uses, mark which sit in ee code, and request written license pricing for those items. Core replay and heatmap use can stay on the open-source edition, depending on your needs.

When is a managed or Cloud option the cheaper path?

A managed or Cloud option is often cheaper when your team cannot staff the operations, or when session volume is small enough that usage pricing stays low. PostHog's pricing page says the first 1 million analytics events are free each month, and its Free plan includes 1 project and 1-year data retention. OpenReplay Dedicated, a fully managed instance, starts at $199 per month on AWS, GCP or Azure with a 7-day trial, according to OpenReplay's pricing page. Compare these with your self-hosted run cost and the hours your team would spend on upgrades and backups. Request a written quote that includes data residency, retention and support terms for each option.

How DeployOpen scopes a fixed-price implementation and what it hands over

DeployOpen plans, implements, hardens, documents and supports self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For a Hotjar replacement, we start from the written scope of which recordings, heatmaps and surveys matter, then build the self-hosted stack and hand it over with the evidence your team needs.

How we scope

  • Engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts.
  • The written scope lists which sites, pages and events need replay, heatmaps or funnels in PostHog or OpenReplay.
  • Scope records masking rules, retention periods and the regions where session data may be stored.
  • Ask for a quote built from this written scope, including which costs are yours to pay directly to vendors.

How we build

  • We size the server or Kubernetes target against the event and replay volumes your scope defines.
  • We install the tracker, configure capture-time masking and private mode, and test that sensitive fields are not recorded.
  • We run security testing on the deployed tracker and admin interfaces before go-live, as agreed in scope.
  • We confirm that first-party tracking from your domain works in your target browsers and consent setup.

How we hand over

  • You receive documentation of the deployed architecture, configuration, masking rules and backup procedures.
  • Compliance readiness material covers the controls and evidence your own auditors or consent reviewers may request.
  • Your team gets a runbook for upgrades, retention settings and access reviews.
  • Independent auditors and certification bodies, not DeployOpen, issue any audit reports or attestations.

How we support

  • Ongoing support, upgrades and continuous testing are available as retainers after handover.
  • Retainers cover version upgrades, backup checks and periodic security testing of the analytics stack.
  • Ask whether a retainer is needed, since PostHog and OpenReplay self-hosting support differs from vendor support.
  • Confirm response expectations and service terms in writing before you sign the retainer.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.