Open-source error tracking that speaks the Sentry protocol, so existing Sentry SDKs point at it unchanged — deliberately lighter to run than Sentry itself.
Build me error tracking that replaces a hosted GlitchTip: my applications report exceptions, they group sensibly, and I hear about the ones that matter. Read this first: GlitchTip is open source and self-hosting it is free — the fee buys a hosted instance with backups and upgrades. Build this when you want error tracking that is exactly as heavy as you need, and note the trick that makes it cheap: speak the Sentry protocol, and every existing SDK points at you unchanged. STACK - Node 20+ with Fastify - SQLite through better-sqlite3, WAL mode - A worker for ingestion, so a burst of errors never slows the endpoint - Caddy in front THE DATA MODEL - projects: id, slug, name, platform, public_key, is_active, retention_days - issues: id, project_id, fingerprint, title, culprit, level, status, first_seen_at, last_seen_at, event_count, user_count, assignee, resolved_in_release, snooze_until - events: id, issue_id, event_id, timestamp, release, environment, level, message, exception_json, stacktrace_json, breadcrumbs_json, request_json, tags_json, user_hash, sdk, received_at - releases: id, project_id, version, created_at, deployed_at, commits_json - artifacts: id, release_id, name, path, sha256 — source maps - comments, activity: the history of an issue, append-only - alert_rules: id, project_id, condition_json, channels_json, throttle_minutes - Events are the bulk of the data and the thing that must expire. Keep the issue forever and the events for a stated window THE INGEST ENDPOINT - Speak the Sentry store and envelope protocol. This single decision means every official SDK, in every language, works without writing a client - Authenticate with the public key from the DSN, per project - Answer in a couple of milliseconds: validate, enqueue, return. Parsing and grouping happen in the worker - Rate limits per project with a burst allowance, and a clear response when shedding — an error tracker that falls over during an incident is useless exactly when it is needed - A payload size cap, and gzip and deflate accepted - Idempotency by event id, so an SDK's retry does not double-count GROUPING, WHICH IS THE ENTIRE VALUE - A fingerprint from the exception type plus the stack frames that belong to your own code, ignoring library frames — that is what makes the same bug from twenty places one issue - Normalise the variable parts out of the message: numbers, identifiers, addresses, paths. 'User 4821 not found' and 'User 9932 not found' are one issue - Respect an explicit fingerprint from the SDK when the caller sets one - Merging two issues by hand, and splitting one, both recorded - Get this wrong and you have either one issue containing everything or ten thousand issues containing one event each. Both are unusable, and this is where the time should go WHAT AN EVENT CARRIES - The full stack trace with source context around each frame, the local variables where the SDK sends them, and your own frames marked - Breadcrumbs: the recent log lines, requests and clicks that preceded it, which is usually what actually explains the error - The request: method, path, headers with authorisation and cookies redacted, and the body only if the project opts in - Tags for release, environment, server, browser and anything the SDK adds, all filterable - A user identifier hashed with a salt, so 'how many people hit this' is answerable without storing who they are SOURCE MAPS - Uploaded per release from CI with a token - Applied at read time rather than at ingest, so a map uploaded after an event still fixes it - A clear message when a map is missing or does not match, because a minified stack trace is no stack trace at all ALERTING WITHOUT NOISE - Rules: a new issue, a regression of a resolved one, a rate above a threshold, an issue affecting more than N users - Throttled per rule so one bad deploy sends one alert rather than nine hundred - Channels: email, webhook, chat - Resolve, ignore, and snooze until a condition — snoozing until it happens again in a new release is the setting people actually want - A regression reopens the issue and says which release it came back in RETENTION - Events expire on a stated schedule and the sweeper actually deletes them - Issue-level counts survive expiry, so history is not lost with the payloads - Disk watchdog that sheds ingest rather than filling the volume OPERATIONS - .env: DATABASE_PATH, BASE_URL, SESSION_SECRET, HASH_SALT, SMTP_URL - Migrations on boot, each once - Nightly backup of the database; events are expendable, issues are not - Health endpoint reporting queue depth and ingest lag WHAT MATTERS MOST Grouping and the fast ingest. Build the fingerprint algorithm against a few thousand real errors and tune it until the issue list is something you would actually read every morning. Then make sure the endpoint stays up under a flood, because the day it matters is the day everything is on fire. Give me the repository, migrations, .env.example, a seed of real-shaped events, and a README with deploy steps behind Caddy and the DSN to point an SDK at.
What you lose
- A hosted instance with backups and upgrades, which is the entire difference from the free version
- Uptime monitoring bundled alongside error tracking
- Somebody keeping protocol compatibility as the SDKs move
If you would rather not build
- Your log platform, if you only need the stack trace
What it costs
read from their page 15 Aug 2026
| Plan | Billed monthly | Billed yearly | Last read |
|---|---|---|---|
| — | $15/mo | — | 15 Aug 2026 |
Their pricing page is where these came from. Seeing a different price? Tell us.
The escape hatch
open source · no votes, no paid placement
GlitchTip
$0The product itself, self-hostable and Sentry-protocol compatible.
GlitchTip/glitchtipfree · open source
Sentry
$0The original, self-hostable if you have the infrastructure for it.
getsentry/sentryfree · open source
Why this verdict
our own opinion · changed only by a person
83/100
Verdict yes at 83. Because it speaks the Sentry protocol, leaving the hosted plan is a DSN change plus a Compose file — one of the cleanest migrations on this site.
History
tracked since 10 Aug 2026 · nothing is ever overwritten
Questions about GlitchTip
answered from the record above
Is GlitchTip free?
No — the plan we track is $15 a month. From around $15/month billed monthly on the hosted plan; the software is free to self-host.
Can you replace GlitchTip by building your own?
YES. Replaceable in one session with an AI coding agent. Replacement score 83 out of 100, build time one session. Read what you lose before you decide.
How much does GlitchTip cost?
$15 a month on Small — $180 a year. Recorded 10 Aug 2026.
What do you lose by replacing GlitchTip?
A hosted instance with backups and upgrades, which is the entire difference from the free version; Uptime monitoring bundled alongside error tracking; Somebody keeping protocol compatibility as the SDKs move. If any of those carry weight for you, keep paying.
Is there an open-source alternative to GlitchTip?
Yes: GlitchTip, Sentry. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

