43-byte transparent GIF · no JS · works in <img> tags

Free pixel tracker.
Count views, not just clicks.

Embed a 1×1 image anywhere a browser will render it — blog post, README, docs page, internal report. Every load records geo, device, and OS. Get a live counter badge you can show readers, like Views: 2,451.

Free forever · 10 pixels · no credit card · self-hosted alternatives are 10x more code

Pixel embed example
<img src="https://gettrack.link/p/blog-post/badge.svg?label=views&color=brightgreen" alt="views" />
views2,451

Customize colors on both sides · 11 presets + native color picker · live count on every load

What we've tracked so far

Real numbers from 70,579 hits

70,579

tracked hits across links + pixels

96

countries detected

43 B

size of the tracking GIF

2,500

free hits / month

How it works

Three steps. No JavaScript on the embed side.

1. Create a pixel

Name + slug. We mint a URL like /p/your-slug. No destination needed — pixels just record, they don't redirect.

2. Paste the snippet

HTML, Markdown, or AMP. Copy from the dashboard — every paste-target gets the right format. Pixels render as a <img> tag, badges as a styled SVG.

3. Get analytics

Hits show up live on the pixel detail page and in the analytics dashboard. Geo, device, browser, OS, referrer, fingerprinted uniqueness — same pipeline as tracked links.

Where it works best

Pixels work everywhere <img> renders. These are the surfaces with the cleanest analytics signal.

Blog posts & docs

Self-hosted blogs, Notion pages, Confluence. Full geo + device data, no proxies in the way.

GitHub READMEs

Counter badge alternative to shields.io / hits.seeyoufarm. Caveat: GitHub Camo proxies all images, so geo data is Camo's, not viewers'. Counts still accurate. See full guide →

Internal HTML reports

Track who opens that monthly status email, that PDF rendering, that runbook. Per-recipient slugs give you per-person attribution.

Email opens (with caveats)

Apple Mail Privacy preloads images (false opens). Gmail proxies via googleusercontent. We filter known proxies but treat email opens as a trend, not truth.

Counter badge

Visible view counters, not just hidden tracking

Every pixel comes with a SVG badge endpoint. Embed it on a public page to show off your view count. Customize both halves of the badge — label and value — with preset colors or a native color picker. Live count updates on every page load.

  • 11 named color presets + custom hex picker
  • Toggle total views vs unique-only views
  • Compact mode (1.2k vs 1,234) for large numbers
  • Counts regardless of plan — even on FREE
views2,451stars892downloads12.3kpageviews5.7kunique1,034
![views](https://gettrack.link/p/<slug>/badge.svg?color=brightgreen)

Markdown-ready. Drop into any README, blog, or docs page.

Track Link pixel vs other counters

Honest comparison. Each tool optimizes different things.

FeatureTrack Linkshields.iohits.seeyoufarmPlausible
Free 1×1 tracking pixelYesNoNoPlan-locked
Counter badge (live count)YesStats only (GitHub stars etc.)YesNo
Geo / device / browser dataYes (off-GitHub)NoNoYes
Customizable label + colorsBoth sidesLimitedLimited
Custom domainYes (Cloudflare)NoNoSelf-host only
Full analytics dashboardYesNoNoYes
Free tierYes (10 pixels, 2.5k hits)YesYes30-day trial

Honest limits

  • GitHub READMEs hit through Camo: counts work, geo/device data is Camo's. Same as every other counter badge.
  • Apple Mail Privacy preloads images on receive. Email opens are a trend, not truth.
  • Adblockers may block the embed if our domain ends up on a tracker list. Custom domains route around this.
  • Everywhere else (blogs, docs, internal pages, custom domains): full geo, device, browser, OS, referrer, uniqueness fingerprinting.

FAQ

Everything you might wonder about pixel tracking.

What is a tracking pixel?

A 1×1 transparent image embedded in a page or email. Every time the page loads, the browser fetches the image — and that fetch hits our tracking endpoint, recording a click with geo, device, browser, OS, referrer, and a fingerprint. The visitor sees nothing; you see analytics. Track Link's pixel is 43 bytes (a base64-encoded GIF), served with no-store cache headers so refreshes count.

How is this different from a tracked link?

A tracked link (e.g. /r/abc) only fires when someone clicks. A tracked pixel fires when someone *views*. If you want to know how many people viewed your blog post, your release notes, your README — you need a pixel. Same Click table, same geo and device pipeline; just no destination URL. Pixels work as <img> tags; tracked links work as <a> tags.

Can I show the count to readers like a 'view counter' badge?

Yes. Every pixel comes with a /badge.svg endpoint that renders a shields.io-style colored badge with the live count: "views: 1,234". Customize label text, label-side color, and value-side color (11 named presets + free-form hex). Toggle between total views and unique-only views. Compact mode shows '1.2k' instead of '1,234' for big numbers.

Does the pixel work on GitHub READMEs?

Yes — with one important caveat. GitHub proxies every README image through their Camo service for privacy. So the geo / IP / browser data on every hit is GitHub's Camo datacenter (US, github-camo UA), not the actual viewer. You still get a hit count per Camo cache-miss, which is directionally useful for popularity, but the analytics fields are useless for GitHub-embedded badges. This isn't specific to Track Link — shields.io, hits.seeyoufarm, and every other counter badge has the same limit.

Will email opens be tracked accurately?

No, and we'll tell you why. Apple Mail Privacy Protection (default on iOS 15+) preloads every image in an email when it arrives — counted as an 'open' before the recipient even sees it. Gmail proxies images through googleusercontent.com (geo = US datacenter, real IP/UA lost). Track Link filters known proxies (GoogleImageProxy, ggpht.com, YahooMailProxy) so they don't inflate counts, but Apple's prefetch is indistinguishable from a real open. Email opens are useful as a *trend* signal, not as truth. For accurate engagement use a tracked link inside the email.

Where does the pixel work without those caveats?

Anywhere you control the rendering and the request reaches your viewer's browser directly: blog posts (Medium, Substack — yes; WordPress, Ghost, your own static site — best), documentation pages (Notion, Confluence — yes), landing pages, internal HTML reports, presentations exported to HTML, and email signatures (subject to email-client caveats). On these surfaces you get full geo, browser, OS, referrer, and uniqueness fingerprinting.

Does my plan affect what gets counted?

No. Pixel hits always increment, regardless of FREE / PRO / BUSINESS. The plan affects how far back you can query analytics (FREE = 7 days, PRO = 1 year, BUSINESS = unlimited) and how many tracked links you can have (10 / 100 / unlimited). The badge endpoint and the lifetime hit count keep working forever. We made this an explicit design choice — a counter badge stuck at zero because the user is on free tier would be a bad look on a public README.

Can I use the pixel on a custom domain?

Yes. Verified custom domains route /p/<slug> and /p/<slug>/badge.svg the same way they route redirect links. Tenant isolation guards the pixel — only pixels owned by the domain's verified user fire when reached through that domain.

Is it really free?

Yes. The free plan gives you 10 pixels (shared with tracked links), 2,500 hits per month, and 7 days of analytics retention. The badge endpoint and lifetime counter stay live indefinitely. PRO ($9.99/mo) raises the limits to 100 pixels, 25k hits/month, 1 year retention, and unlimited custom domains.

Stop guessing how many people read your stuff

Free tier covers 10 pixels and 2,500 hits per month. Counter badges always live. Two minutes from signup to first embedded pixel.