Open source · MIT license

Measure the tide,
not the footprints.

Tidemark is privacy-first web analytics that installs on ordinary PHP hosting. Upload a zip, open /install, and read your traffic on one calm page. No cookies, no stored IP addresses.

Latest: v0.11.1 · PHP 8.3+ · SQLite, MySQL, MariaDB or PostgreSQL · no Node, Docker or SSH

example.com 12 current visitors Filter Last 28 days
4003002001000
Sep 23Sep 26Sep 29Oct 2Oct 5Oct 8Oct 11Oct 14Oct 17Oct 20
Unique visitorsSample data

Sources

ChannelVisitors
Organic Social1,079
Organic Search1,075
Direct831
Paid Search503
Email454
Referral358

Pages

Top pageVisitors
/1,739
/pricing1,244
/blog/privacy-first-analytics1,078
/blog1,037
/docs1,024
/docs/install960

Keep the line, not the footprints.

A tidemark is the line a tide leaves on a harbor wall: a record of how high the water reached, kept without keeping the water. Tidemark does that for your website.

Clear

Visitors, visits, pageviews, bounce rate and visit duration on one page, with sources, pages, locations, devices and goals underneath. You reach the bottom of your data in one screen.

Private

No cookies and no stored IP addresses. Visitor ids are a salted hash that changes every day, so nobody can be followed from one day to the next. Nothing to disclose, because nothing is kept.

Portable

Run it on a $3 shared host today, with your data in a database you control. A hosted version is on the way for people who would rather not run anything.

Four steps. No terminal.

  1. Upload the release zip to your host and unzip it. Point the domain at the public/ folder, or leave it: a bundled .htaccess forwards requests and blocks internals.
  2. Open /install. Tidemark checks your server, connects a database, runs the migrations and creates your admin account.
  3. Add the snippet to your site’s <head>. The dashboard waits for the first pageview, then opens by itself.
  4. Add a cron job in cPanel, only if you want queued ingestion and data retention.
Full install guide

Paste this into your site

<script defer data-domain="example.com"
  src="https://stats.example.com/js/script.js"></script>
The script is about 2 KB gzipped, loads deferred, and sends a pageview on load and on every history change, so single-page apps work without extra code.

Everything you check weekly. Nothing you don’t.

One-page dashboard

Six headline metrics, period comparison, and a graph with hour, day, week or month intervals. Every chart has a table view.

Filters on anything

Click any row to filter. Use is, is not, contains, wildcards like /blog/*, and several values per filter.

Goals and events

Custom events, properties, outbound links, file downloads and form submissions, picked by script file name.

Locations and devices

Countries, regions, cities, browsers, operating systems and device types, without profiling anyone.

Sharing

Make a dashboard public, or create private links with an optional password.

Stats API and CSV

A Plausible-style Stats API with API keys, CSV export, roles per site and two-factor sign-in.

See all features · Switch period with D W M Y, compare with X, filter with F.

The one that installs on the hosting you already have.

Most privacy-friendly analytics tools lead with a hosted service, or ask you to run a container stack. Tidemark’s opening is the host you already pay for.

Hosted-first tools

Plausible and Fathom are polished hosted services with a monthly bill that grows with traffic.

Self-hosted stacks

Umami needs Node.js. Plausible’s self-hosted edition needs Docker, Postgres and ClickHouse.

Tidemark

Upload a zip to any PHP host. Add a hosted plan later, if you want one, from the same code.

Compare in detail

Hosted by us

Tidemark Cloud

Prefer not to run a server? Tidemark Cloud is the same dashboard, hosted for you. Start on the free plan (1 site, 10,000 events a month), or go Pro for $7 a month: 250,000 events, unlimited sites and five years of history.

Questions, answered plainly.

Does Tidemark really run on shared hosting?

Yes. It is a PHP application with a bundled set of dependencies. You upload a zip, open /install and follow the steps. It needs PHP 8.3 or newer and a handful of common extensions, and it works with SQLite, MySQL, MariaDB or PostgreSQL. No Node, Docker or SSH is required.

Do I need a cookie banner?

Tidemark sets no cookies and stores no IP addresses or other personal data about visitors. Whether you need a consent banner depends on your jurisdiction and the rest of your site, so check with someone qualified. We do not make legal promises on your behalf.

How does it count visitors without cookies?

A visitor is a salted hash of site, IP address and user agent. The salt changes every day, and the IP address and user agent are never written to the database. Nobody can be followed from one day to the next.

Can I switch from Plausible?

The tracking script and the Events API follow Plausible’s conventions: data-domain, window.plausible(…) and script variants such as script.outbound-links.js. In most setups you change the script URL and nothing else. Historical data is not imported yet.

What does it cost?

The self-hosted version is free and open source under the MIT license. Tidemark Cloud, the hosted version, has a free plan (1 site, 10,000 events a month) and Pro at $7 a month or $70 a year (250,000 events, unlimited sites, 5 years of history).

How do updates work?

Sign in as an administrator and open Account settings → Updates. Tidemark checks GitHub for a newer release, and one click downloads it, verifies its checksum, backs up the current code, replaces the application files (never your .env, storage or database) and runs migrations. You can also upload a release zip yourself, or replace the files over FTP. Tidemark looks for new releases every few hours and shows a dot by your profile when one is out; it asks GitHub only for the latest version number, and one setting turns that off.

Tidemark mark

Clear water. Honest numbers.

Download Tidemark, upload it, and see your first visitor in about ten minutes.