Open Source Alternatives to Sentry Error Tracking 2026
TL;DR
Sentry is the dominant error tracking platform — but at $26–$80+/month for teams with significant error volume, the cost adds up. GlitchTip is the best drop-in open source alternative: MIT license, Django-based, fully Sentry SDK compatible. Highlight.io adds session replay and logs alongside errors. Self-hosted Sentry is technically possible but requires 8–16GB RAM and significant ops overhead. For most self-hosted deployments: GlitchTip is the answer.
Key Takeaways
- GlitchTip: MIT, ~1.9K stars, Django + Postgres — drop-in Sentry compatible API
- Highlight.io: Apache 2.0, ~7K stars — error tracking + session replay + logs
- Self-hosted Sentry: Massive resource requirements (8–16GB RAM, 20+ Docker services)
- Sentry SDK compatible: GlitchTip accepts unmodified Sentry SDK code — change one DSN URL
- Cost: Sentry Team $26–80+/month vs GlitchTip ~$6/month self-hosted
- When to stay on Sentry: Need advanced features (codeowners, AI grouping, Insights, GitHub PR comments)
Sentry vs GlitchTip vs Highlight vs Self-hosted Sentry
| Feature | GlitchTip | Highlight.io | Sentry (SaaS) | Sentry (self-hosted) |
|---|---|---|---|---|
| License | MIT | Apache 2.0 | Proprietary | FSL 1.1 (source-available) |
| Error tracking | ✅ | ✅ | ✅ | ✅ |
| Session replay | ❌ | ✅ | ✅ (paid) | ✅ |
| Performance/APM | Limited | ✅ | ✅ | ✅ |
| Log ingestion | ❌ | ✅ | ✅ (beta) | ✅ |
| Sentry SDK compatible | ✅ (drop-in) | Partial | ✅ | ✅ |
| RAM required | ~512MB | ~1GB | N/A | 8–16GB |
| Min cost | ~$6/mo VPS | ~$10/mo VPS | $26/mo (5 users) | ~$40–80/mo VPS |
| GitHub Stars | ~1.9K | ~7K | — | — |
Option 1: GlitchTip — Drop-in Sentry Replacement
GlitchTip is the simplest Sentry alternative. It speaks the Sentry ingestion protocol — change only the DSN URL in your SDK, everything else stays the same.
Docker Compose Setup
# docker-compose.yml
version: '3.8'
x-environment: &default-environment
DATABASE_URL: postgresql://glitchtip:${POSTGRES_PASSWORD}@postgres:5432/glitchtip
SECRET_KEY: "${SECRET_KEY}"
PORT: 8000
EMAIL_URL: "smtp://user:password@smtp.yourdomain.com:587"
GLITCHTIP_DOMAIN: https://errors.yourdomain.com
DEFAULT_FROM_EMAIL: errors@yourdomain.com
CELERY_WORKER_AUTOSCALE: "1,3"
services:
postgres:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: glitchtip
POSTGRES_USER: glitchtip
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
volumes:
- pg_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U glitchtip"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
restart: unless-stopped
web:
image: glitchtip/glitchtip:latest
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
ports:
- "8000:8000"
environment:
<<: *default-environment
REDIS_URL: redis://redis:6379
worker:
image: glitchtip/glitchtip:latest
restart: unless-stopped
command: ./bin/run-celery-with-beat.sh
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
environment:
<<: *default-environment
REDIS_URL: redis://redis:6379
migrate:
image: glitchtip/glitchtip:latest
depends_on:
postgres:
condition: service_healthy
command: ./manage.py migrate
environment:
<<: *default-environment
volumes:
pg_data:
# .env
POSTGRES_PASSWORD=strong-database-password
SECRET_KEY=$(openssl rand -hex 32)
# Run migrations:
docker compose run --rm migrate
# Start services:
docker compose up -d
Visit http://your-server:8000 → create admin account → create an organization → create a project.
HTTPS with Caddy
errors.yourdomain.com {
reverse_proxy localhost:8000
}
SDK Integration (Identical to Sentry)
npm install @sentry/node
// Change ONLY the dsn URL — all other Sentry code is unchanged:
import * as Sentry from "@sentry/node";
Sentry.init({
// GlitchTip DSN format: https://PUBLIC_KEY@errors.yourdomain.com/PROJECT_ID
dsn: "https://abc123def456@errors.yourdomain.com/1",
environment: process.env.NODE_ENV,
release: process.env.APP_VERSION,
});
Python:
import sentry_sdk
sentry_sdk.init(
dsn="https://abc123def456@errors.yourdomain.com/1",
environment="production",
traces_sample_rate=0.1,
)
Browser (React):
import * as Sentry from "@sentry/react";
Sentry.init({
dsn: "https://abc123def456@errors.yourdomain.com/1",
integrations: [Sentry.browserTracingIntegration()],
tracesSampleRate: 0.1,
});
Option 2: Highlight.io — Error Tracking + Session Replay + Logs
Highlight.io is a more ambitious alternative — error tracking, session replay (watch user sessions when errors occurred), and log ingestion. Apache 2.0, ~7K stars.
Docker Compose Setup
# Clone and deploy:
git clone https://github.com/highlight/highlight.git
cd highlight/docker
# Configure:
cp .env.example .env
# Edit .env with your domain and settings
# Start (uses ~1GB RAM):
docker compose up -d
The docker-compose.yml includes: backend API, frontend app, clickhouse (analytics), Kafka (event streaming), Redis, Postgres.
SDK Integration
npm install @highlight-run/node
import { H } from '@highlight-run/node';
H.init({
projectID: 'your-project-id',
backendUrl: 'https://highlight.yourdomain.com',
});
// Catch errors:
process.on('unhandledRejection', (reason) => {
H.consumeError(reason instanceof Error ? reason : new Error(String(reason)));
});
Session replay (browser):
import { H } from 'highlight.run';
H.init('your-project-id', {
backendUrl: 'https://highlight.yourdomain.com',
enableSessionRecording: true,
reportConsoleErrors: true,
enableStrictPrivacy: true, // Mask all text (GDPR friendly)
});
When to Choose Highlight over GlitchTip
- You need session replay to understand user context when errors occur
- You want distributed tracing and performance monitoring
- You're running a SaaS and want to track user sessions alongside errors
- You're okay with higher resource requirements (~1GB RAM vs ~512MB for GlitchTip)
Option 3: Self-Hosted Sentry (Approach with Caution)
Self-hosted Sentry is available but requires significant resources:
Minimum requirements:
- 8GB RAM (16GB recommended)
- 2 CPU cores
- 20GB disk for events
Services involved: Sentry web, worker, cron, snuba, relay, clickhouse, kafka, redis, postgres, nginx — 20+ Docker containers.
# Official install:
git clone https://github.com/getsentry/self-hosted.git
cd self-hosted
./install.sh
docker compose up -d
Use self-hosted Sentry only if:
- You need features GlitchTip/Highlight don't have (Sentry Insights, AI grouping, GitHub PR integration)
- You have a dedicated server with 16GB+ RAM
- You have team capacity to maintain a complex Docker stack
Feature Comparison by Use Case
Small SaaS (< 10K errors/day)
GlitchTip — perfect fit. Sentry SDK compatible, 512MB RAM, minimal maintenance.
Team needing session replay
Highlight.io — adds session replay that GlitchTip lacks. Worth the extra RAM.
Enterprise with compliance requirements
Self-hosted Sentry — full Sentry features on your infrastructure. Or Sentry SaaS with data residency.
Mobile apps (iOS/Android)
Sentry SaaS — Sentry's mobile SDKs (crash reporting, ANR detection) are more mature than GlitchTip's mobile support.
Alert Configuration (GlitchTip)
Project → Alerts → Create Alert
Alert conditions:
- Error first seen
- Error frequency exceeds threshold
- Issue resolved / regression detected
Notification channels:
- Slack webhook
- PagerDuty
- Custom webhook (point to ntfy, n8n, etc.)
Example: Alert when any new error is seen:
Condition: Issue first seen
Action: Slack → #backend-alerts
Email → dev-team@company.com
Throttle: Once per hour per issue
Cost Comparison
| Option | Monthly Cost | Error Volume |
|---|---|---|
| Sentry Developer | Free | 5K errors |
| Sentry Team | $26/month | 50K errors |
| Sentry Business | $80+/month | 100K+ errors |
| GlitchTip self-hosted | ~$6/month | Unlimited |
| Highlight.io self-hosted | ~$10/month | Unlimited |
| Self-hosted Sentry | ~$40–80/month | Unlimited |
At 100K errors/month: GlitchTip saves $74+/month vs Sentry Team. At 1M+ errors (large app): savings become substantial.
See all open source monitoring and error tracking tools at OSSAlt.com/categories/monitoring.