Skip to content
IndieMakerList

Analytics · updated 2026-11-03

Can you vibe code a Hotjar clone?

Hard: Only a slice Click heatmaps and a feedback widget are doable; reliable session replay at any real traffic is hard and storage-heavy.

8 h–2 days
MVP build time
$0–$60/mo
Your running cost
$39/mo
Hotjar Growth (Contentsquare, includes Hotjar)
up to $468
Saved per year

The honest verdict

Hotjar's cheaper features are approachable: recording click coordinates for a heatmap or showing a one-question survey takes a day. Session replay is a different class of problem. You have to capture DOM snapshots and mutations, mask private data, compress and store large payloads, and replay them faithfully across browsers. Open source libraries such as rrweb help, but storage costs and privacy risk grow with traffic. Build the slice you need for your own site, or use an existing tool.

Hotjar is heatmaps, session recordings and on-site surveys, now part of Contentsquare. This page is about building your own version for personal or internal use, or to learn how this kind of product works, not about copying Hotjar to compete with it. How we grade.

What's easy and what's hard

Easy with AI
  • Click and scroll-depth tracking for heatmaps
  • One-question feedback or NPS widget
  • Dashboard overlaying clicks on a screenshot
  • Sampling to record only a few sessions
Hard (where AI won't save you)
  • Session replay: capturing DOM mutations and replaying them faithfully
  • Masking passwords, card numbers and personal data before it leaves the browser
  • Storage and bandwidth for recordings
  • Performance impact on the site being recorded
  • Consent requirements for recording users in the EU

Hotjar feature checklist

Difficulty is for a solo builder using an AI coding tool. Skip means not worth building yourself.

FeatureDifficultyWhy
Click heatmapEasyStore element selector and relative coordinates; render as an overlay.
Scroll depthEasyRecord the max scroll percentage per pageview.
Feedback widget and NPS surveyEasyA small embedded form posting to your API.
Session recordingHardUse rrweb rather than writing your own; still expect work on storage and playback.
Input and PII maskingHardMask all inputs by default; a single leak records passwords or card numbers.
Recording storageMediumCompress and store in object storage such as Cloudflare R2 with a retention limit.
Rage click and error detectionMediumHeuristics on click frequency and console errors.
Funnels and cross-session analyticsSkipUse a product analytics tool instead.

Build time and running costs

Your own version vs Hotjar, at personal or small-team scale.

Build time
Working MVP for yourself
8 h–2 days
Polished, relied on daily
10–20 days
MVP time at $50/h equals
15 months of Hotjar
Hotjar price (checked 2026-11-03)

Growth (Contentsquare, includes Hotjar): $39/mo billed annually

Hotjar pricing now lives on Contentsquare's pricing page: free up to 200k sessions with 1 month of data; Growth is $39/month billed yearly or $49 monthly.

Source: contentsquare.com/pricing. Prices change; check before deciding.

Running costPer monthNotes
Hosting and API$0–$20Serverless functions to accept events and recordings.
Object storage for recordings$0–$15Cloudflare R2 or S3; grows with traffic and retention.
Database$0–$25Clicks, sessions and survey answers.
Total$0–$60/moSaves up to $468 a year vs Hotjar Growth (Contentsquare, includes Hotjar); at the top of the range it costs $252 a year more.

Recommended vibe coding tools

Vibe coding hub →

Claude Code

Best for integrating rrweb, masking rules and the upload pipeline.

Cursor

Helpful for debugging replay glitches inside an existing codebase.

v0

Quick dashboard and heatmap overlay UI.

Starter prompt

Paste it into your tool, then ask for a plan before any code. Edit the specifics to match what you need.

prompt.txt
Build a lightweight heatmap and feedback tool for my own website (internal use only).
Stack: Next.js, Supabase Postgres, Cloudflare R2 for recordings, rrweb for session capture.
Data model: pages (id, url_pattern, screenshot_url), clicks (page_id, selector, x_pct, y_pct, viewport_w, ts), sessions (id, started_at, duration, storage_key, sampled), feedback (page_id, score, comment, ts).
Features:
1. Embed script that records clicks and max scroll depth on every pageview.
2. Optional session recording with rrweb for a 5% sample, uploaded in compressed chunks to R2.
3. A one-question feedback widget with an optional comment.
4. Private dashboard with click heatmap overlay per page, scroll depth chart, session list and replay player.
Privacy and security: mask all input fields and any element with a data-private attribute by default; never record password, card or email fields; only start recording after the visitor accepts the consent banner; delete recordings after 30 days; signed upload URLs scoped to one session; rate-limit and validate all incoming data; dashboard behind login with row level security.

Security pitfalls to check

AI tools often get these wrong by default. Check each one before anyone else uses the app.

  1. 01Recording unmasked inputs captures passwords, card numbers and messages; mask everything by default.
  2. 02Recording EU visitors without consent breaks GDPR and ePrivacy rules.
  3. 03Public, guessable storage URLs make recordings readable by anyone; use private buckets and signed URLs.
  4. 04Large recording uploads are an easy abuse vector; cap chunk size and rate-limit per session.
  5. 05Replay players that inject recorded HTML can execute scripts if not sandboxed in an iframe.

Indie makers who built a real analytics business

They went far past the prototype: support, payments, reliability and years of iteration. Their profiles show what that took.

Or just use these indie-made tools instead

If you need Hotjar's job done rather than a project, these are built and supported by independent makers.

All indie alternatives →
Refiner logo

Refiner

refiner.io

In-app microsurvey and customer feedback tool for SaaS teams (NPS, CSAT, onboarding surveys).

by Moritz Dausinger
Page Pulse logo

Page Pulse

getpagepulse.io

Simple site analytics with conversions, heatmaps and AI page insights.

by Sean

What building it teaches you

You learn how session replay works under the hood (DOM snapshots and mutation streams) and why privacy masking is a hard engineering problem.

Can you vibe code these too?

All 50 →

Vibe coding Hotjar: FAQ

Can you vibe code a Hotjar clone?

Hard. Click heatmaps and a feedback widget are doable; reliable session replay at any real traffic is hard and storage-heavy.

How long does it take to vibe code a Hotjar clone?

A working personal or internal MVP takes about 8 h–2 days with a tool like Claude Code. A polished version you would rely on every day takes about 10–20 days, mostly spent on session replay: capturing dom mutations and replaying them faithfully.

How much does it cost to run your own Hotjar alternative?

Expect $0–$60/mo at personal or small-team scale (hosting and api, object storage for recordings, database). Hotjar Growth (Contentsquare, includes Hotjar) costs $39/mo (checked 2026-11-03), so the most you would save is $468 a year, before counting your time.

Can I build my own Hotjar?

You can build click heatmaps and a feedback widget in a day. Session replay is much harder; use an open source library like rrweb and expect real work on masking and storage.

How much does Hotjar cost now?

Hotjar is now sold through Contentsquare. As of November 2026 there is a free plan up to 200k sessions, and the Growth plan costs $39 a month billed yearly or $49 monthly.

Is session recording legal under GDPR?

It can be, but you generally need consent, a privacy notice and strict masking of personal data. Many teams record only after the visitor accepts a consent banner.

Is it legal to build your own Hotjar clone?

Building your own tool that solves the same problem is common and generally fine. Copying Hotjar's code, design assets, brand name or content is not. Use your own name and design, respect their terms of service, and get proper advice if you plan to sell it. This page is not legal advice.