Umami Problems & Issues
Real user-reported problems, complaints, and limitations for Umami. Based on analysis of 14 signals.
Overall score: 73/100
Issues by Category
Umami database migrations fail on large databases
Upgrades run Prisma migrations at build time, and on databases with millions of events these can deadlock, time out or eat all disk space. One user's 09_update_hostname_region migration deadlocked (P3018) on a 1M-row RDS instance and took over 24 hours to finish manually in batches; another's Postgres volume filled to 97% during a v2 to v3 upgrade.
Umami not tracking visitors after installing the script
The most common setup complaint: the dashboard stays empty. Typical causes reported on forums and blogs are a data-domains list that doesn't match the exact hostname (www vs bare domain), a consent banner that never loads the script, CORS or redirect loops when Umami sits behind Cloudflare and Nginx, and the user's own ad blocker.
Umami v3 dropped MySQL support
Umami v3.0.0 (November 2025) supports PostgreSQL only. Self-hosters on MySQL must first upgrade to v2.19.0, then dump or CSV-export their data into PostgreSQL before moving to v3. Large databases need the slower CSV route.
Ad blockers block Umami unless you rename or proxy the script
Filter lists block umami.is and the default script.js and /api/send paths, so a share of visits never reaches the dashboard. Umami's own docs say renaming with TRACKER_SCRIPT_NAME and COLLECT_API_ENDPOINT or proxying through your domain helps, but some lists block anything that looks like analytics regardless.
Umami shows wrong country or 'Unknown' location
Self-hosted Umami takes location from proxy headers or the visitor IP. Behind Cloudflare, a load balancer or Nginx that doesn't forward the real IP, every visit can show as one country or Unknown. The official fix is enabling Cloudflare's visitor location headers and forwarding them, or SKIP_LOCATION_HEADERS.
Umami stops recording events when you hit your spending budget
On monthly Pro and Business plans you can set a spending budget. If the estimated bill passes it, Umami stops recording events until the next billing period or until you raise the budget, so a traffic spike can leave a gap in your stats. You get an email when it happens.
Umami visit duration shows 0 seconds and bounce rate looks too high
A bounce is a visit with only one event, and time is only measured between events, so a reader who spends five minutes on one article and leaves counts as a 0-second bounce. Users call the visit timer close to useless for blogs; a GitHub request for heartbeat tracking has had no fix.
Umami dashboard not loading with uBlock Origin enabled
Self-hosters report dashboard errors such as 'TypeError: e.datasets[n] is undefined' or empty realtime views after updates. In at least one case the cause was uBlock Origin blocking dashboard API URLs on the Umami instance itself; disabling it for that domain fixed it.
Umami Cloud event counting and overage charges
Every pageview, custom event and each stored event property counts as an event. Pro includes 1M events then charges $0.00003 per extra event; Business includes 10M then $0.00002. Event-heavy setups with many properties burn through the quota faster than pageview-based tools suggest.
Umami Cloud free plan limited to one site and 6 months of data
Hobby is free for up to 100K events per month but only one website, no team members, 6 months of retention, and no API, email reports, data import or email support. The next step is Pro at $20/month, a big jump for hobbyists with two or three small sites.
Why is Umami so slow on large websites?
Self-hosted Umami on PostgreSQL computes charts from raw events on demand. One user with about 12M pageviews saw 30-day and longer ranges fail with 'Something went wrong' and the container killed after passing 2 GB of RAM. The maintainer's answer was mainly bigger database hardware; ClickHouse support was added for high-volume setups.
Outbound link and custom event tracking needs manual markup
Events require a data-umami-event attribute on each element or a umami.track() call, values are stored as strings, and names are capped at 50 characters. One developer abandoned Umami because tracking outbound links meant tagging every external link or writing a custom click handler, and page-view metadata required disabling auto-tracking.
Umami Docker can't connect to the database
A recurring self-hosting error: the check-db step reports DATABASE_URL is defined, then 'Unable to connect to the database' and exits. Causes reported include a wrong hostname in DATABASE_URL, Postgres not ready yet, and container networking. Since v3.5.0 a missing APP_SECRET also stops Compose from starting.
Umami GitHub issues go stale without answers
Self-hosters rely on GitHub and community forums. Several bug reports (for example a dashboard error in v2.11 and the visit-duration request) were auto-closed as stale or moved to discussions without a fix. Email support only starts on the paid Pro cloud plan.
Regret Patterns
Common reasons users regret choosing Umami.
Upgraded to v3 without checking the database
Self-hosters on MySQL discovered v3 is PostgreSQL only and had to roll back and run a full data migration.
Migration ran out of disk or deadlocked
Large event tables made Prisma migrations deadlock or fill the disk, leaving the instance down until the migration was fixed by hand.
Realised a chunk of visitors was missing
Developer and tech audiences run ad blockers, so stats undercounted until the script and endpoint were renamed or proxied.
Dashboard became unusable at scale
As traffic grew, long date ranges on PostgreSQL timed out, pushing users to bigger servers, ClickHouse or Cloud.
Trusted the engagement numbers
Bounce rate and visit duration looked terrible for a blog because single-page reads count as 0-second bounces.
Outgrew the free Hobby plan's single site
Adding a second small site meant jumping to $20/month Pro or moving to self-hosting.
When Umami Breaks Down
Specific scenarios where Umami fails or underperforms.
Developer or privacy-savvy audience
Ad blockers and Brave block the default script and endpoint, so visits go uncounted without renaming or proxying.
Self-hosted on MySQL
No upgrade path to v3 until the data is migrated to PostgreSQL.
Tens of millions of events on PostgreSQL
30-day and all-time views can fail or run out of memory; migrations take hours or days.
Behind Cloudflare, a load balancer or Nginx
Missing forwarded IP or location headers produce Unknown or wrong countries, and bad CORS/redirect setup can stop tracking entirely.
Long-form content sites
Readers who stay on one page record 0 seconds and inflate bounce rate.
Site with a cookie consent banner
Banners that gate the script behind a consent group stop Umami from loading unless the group is configured correctly.