Frequently Asked Questions
Everything you need to know about self-hosting diy-analytics, from setup to data ownership.
What is diy-analytics?
diy-analytics is a free, open-source, self-hosted web analytics platform — a privacy-first, cookie-free alternative to Google Analytics that you deploy to your own infrastructure and fully own.
How quickly can I deploy my own instance?
Under 5 minutes. Deploy to Vercel, connect a PostgreSQL database (14+), and you're collecting data.
What database does diy-analytics use?
PostgreSQL, accessed via Drizzle ORM and the postgres-js driver. Any standard Postgres 14+ works, including Vercel Postgres, Neon, Supabase, or Railway — there's no vendor-specific SDK, just a DATABASE_URL connection string.
Is diy-analytics GDPR and CCPA compliant?
Yes. It's cookie-free, collects no personally identifiable information, and is privacy-first by design. Because you self-host it, your visitors' data never leaves servers you control.
How is this different from Google Analytics?
Google Analytics sends your visitors' data to a third party and relies on cookies for tracking. diy-analytics is self-hosted, cookie-free, and open source — your data stays on your own database and is never shared or sold.
Do I need technical expertise to set it up?
No. Setup is three steps: deploy the app, connect a PostgreSQL database, and paste the tracking snippet into your site. No DevOps background is required.
How big is the tracking script?
Under 2 KB, and it loads with async/defer so it never blocks page rendering or hurts Core Web Vitals.
Can I track custom events?
Yes. diy-analytics supports custom events and reports Core Web Vitals (LCP, CLS, INP) out of the box, alongside standard pageview and session tracking.
Is diy-analytics free?
Yes, it's free and open source under the MIT license. You only pay for your own hosting and database, which can be free-tier on platforms like Vercel and Neon.
Where can I get help if something isn't working?
Start with the troubleshooting guide, which covers the most common setup issues. If you're still stuck, open an issue on the GitHub repository.