All Tools
Categories
Email Marketing Tools 36 Text Tools 12 Marketing Tools 3 Encoder Tools 1 Security Tools 1 Generator Tools 1
About Contact Privacy

Email Tracking Pixel Generator

Free email tracking pixel generator. Build a 1x1 transparent open-tracking pixel with campaign and recipient merge tags for Mailchimp, Klaviyo, SendGrid, HubSpot or a custom ESP. Copy the email HTML, download the pixel image, and get ready-to-run Node, PHP, Python and Nginx endpoint code. No sign-up.

Tracking Endpoint
Identifiers
Pass an opaque contact key or a hash — never the raw email address. It ends up in server logs, referrer headers, and any proxy in between.
Extra Parameters
Image Tag Options
Generated Pixel URL
Validation
Email HTML — paste before </body>

          
Outlook-safe variant

          

About Email Tracking Pixel Generator

Every open rate you have ever looked at came from a 1x1 image. Email Tracking Pixel Generator builds that image reference properly — a pixel URL on your own domain, carrying the campaign and recipient identifiers you need, wrapped in email HTML that survives real clients rather than only rendering in a browser preview.

The generator handles both halves of the job. On the front end it assembles the URL, resolves merge tags into the exact syntax your ESP expects, adds cache-busting, and emits an img tag with the attributes that stop clients from treating a 1x1 image as hidden junk. On the back end it writes the endpoint for you in Node/Express, PHP, Python/Flask, or pure Nginx, complete with an inline Base64 pixel, correct Content-Type, no-cache headers, and structured logging you can query.

A built-in checker flags the mistakes that silently kill tracking — plain HTTP, missing recipient ID, zero dimensions, unresolved merge tags — and a compliance panel lays out what GDPR, ePrivacy, and CAN-SPAM actually expect you to disclose. Everything runs client-side; nothing you type leaves your browser.

Features

  • ESP-aware merge tags: Pick Mailchimp, Klaviyo, SendGrid, HubSpot, Brevo, ActiveCampaign, or Custom, and the recipient and campaign placeholders are written in that platform's exact syntax.
  • Custom parameter builder: Add any number of extra query parameters — send ID, segment, variant, list ID — with live URL assembly.
  • Cache-busting options: Append a unique token, a timestamp, or nothing at all, so repeat opens still reach your server.
  • Email-safe HTML output: A 1x1 img tag with empty alt, explicit dimensions, display:block, and border zero, plus an Outlook-safe variant wrapped in a presentation table.
  • Endpoint code in four stacks: Copy-ready Node/Express, PHP, Python/Flask, and Nginx implementations that log the hit and return an inline Base64 pixel with no-store headers.
  • Pixel image downloads: Grab a genuine 42-byte transparent GIF or 70-byte transparent PNG, or copy either as a Base64 data URI.
  • Live validation: Warnings for non-HTTPS endpoints, missing recipient identifiers, raw email addresses in the URL, zero-size images, and unresolved merge tag syntax.
  • Privacy and compliance panel: A practical checklist covering disclosure, lawful basis, hashed identifiers, log retention, and honouring tracking opt-outs.
  • Fully client-side: No account, no API call, no data collection.

How to Use

  1. Set your endpoint. Enter the HTTPS URL where the pixel will live, for example https://track.yourdomain.com/o.gif. It must be your own domain and it must be HTTPS.
  2. Choose your ESP. Selecting your platform fills in the correct merge tag syntax for the recipient and campaign placeholders automatically.
  3. Name the campaign and recipient parameters. Keep the recipient value opaque — a hashed ID or internal contact key, not the raw email address.
  4. Add cache-busting. Leave the unique token on unless you have a specific reason to allow caching.
  5. Copy the email HTML. Paste it immediately before the closing body tag of your template. Use the Outlook-safe variant if your list skews corporate.
  6. Deploy the endpoint. Open the Server Code tab, pick your stack, and drop the route into your app. Confirm it returns image bytes by loading the URL in a browser.
  7. Send a seed and verify. Mail yourself a test, open it, and check the log line landed with the merge tags resolved to real values rather than literal placeholders.

Examples

Example 1 — Self-hosted tracking on a Mailchimp campaign. Your endpoint is https://track.example.com/o.gif, the campaign is spring-launch, and Mailchimp supplies the contact key. The generated URL becomes https://track.example.com/o.gif?c=spring-launch&r=*|UNIQID|*&t=8f3c1a. Mailchimp still reports its own open rate, but you now also hold a raw log you can join against your own database and keep after you migrate ESPs.

Example 2 — Per-variant A/B measurement. Add a custom parameter v=subject-b alongside the campaign and recipient IDs. Your log now separates opens by variant without you having to reconcile two campaign reports, and the same log powers the follow-up send to whichever variant lost.

Example 3 — Feeding an engagement score. Each pixel hit writes a row with recipient ID and timestamp. A nightly job rolls those rows into a per-contact recency and frequency figure, which drives send-frequency tiers and a re-engagement trigger — the same inputs an engagement score calculator uses, but from your data rather than an ESP export.

Example 4 — Diagnosing inflated opens. Your open rate jumps to 71% overnight. Because your endpoint logs user agents, you can see the surge arriving from Apple's privacy proxy rather than real clients, and adjust your reporting baseline instead of celebrating a phantom win.

Benefits

  • Own your open data: A raw log on your own domain beats a rounded dashboard number, and it survives an ESP migration intact.
  • Attribute opens to real contacts: Per-recipient identifiers turn a headline percentage into a per-person signal you can segment, score, and trigger on.
  • Ship in minutes, not days: Working endpoint code for four stacks removes the fiddly part — headers, Content-Type, inline pixel bytes, cache control.
  • Avoid the silent failures: Live validation catches plain HTTP, unresolved merge tags, and zero-size images before you send to 50,000 people.
  • Stay on the right side of privacy law: A concrete checklist for disclosure, hashed identifiers, and retention, rather than hoping nobody asks.
  • No vendor, no cost, no cap: No third-party tracking service to pay for, rate-limit you, or hold your data hostage.
  • Private by construction: Everything is generated in your browser — your domains and campaign IDs are never uploaded.

Frequently Asked Questions

What is an email tracking pixel?
A tracking pixel is a 1x1 transparent image referenced in your email HTML by an ordinary img tag. When the recipient opens the email, their client requests that image from your server. The request itself is the signal — your server logs the campaign ID, recipient ID, timestamp, user agent, and IP, then returns the tiny transparent image. The reader sees nothing. This is the mechanism behind every open rate figure in every ESP dashboard.
How do I actually build one?
Two halves. First the HTML: an img tag pointing at an endpoint on your own domain, carrying identifying query parameters — this tool writes that for you. Second the endpoint: a route that logs the hit and responds with a 1x1 image plus no-cache headers. This tool generates working endpoint code for Node/Express, PHP, Python/Flask, and a pure Nginx configuration, so you can be tracking opens in about ten minutes.
Why must the pixel URL be unique per recipient?
Because without a recipient identifier all you learn is that somebody opened the email. Passing a per-recipient ID lets you attribute the open to a contact, build engagement scores, suppress re-sends to people who already opened, and trigger follow-up sequences. Use an opaque ID or a hash rather than the raw email address so the address is not sitting in your server logs and referrer headers in plain text.
Why does the pixel need cache-busting?
Some clients and proxies cache images aggressively. If the image is cached, a second open never reaches your server and your repeat-open data disappears. Two defences: send no-store, no-cache headers from the endpoint, and include a unique token or timestamp in the URL so each send is a distinct resource. Both are built into the snippets here.
How accurate is open tracking in 2026?
Directionally useful, absolutely not exact. Apple Mail Privacy Protection pre-fetches images through a proxy for users who enable it, inflating opens and stripping the real IP and user agent. Gmail proxies and caches images through googleusercontent. Many clients block images by default until the reader clicks to display them, which undercounts. Treat opens as a trend line and a segmentation input, and use clicks, replies, and conversions for anything you need to be precise about.
Is it legal to use a tracking pixel?
It depends on where your recipients are and what you disclose, and this is not legal advice. Under GDPR and the ePrivacy rules, open tracking is generally treated as processing personal data that needs a lawful basis and disclosure in your privacy policy, and consent is often the safest footing. CAN-SPAM in the US does not require disclosure of open tracking but does require accurate headers and a working unsubscribe. Several US state privacy laws add their own notice duties. Disclose that you track opens, honour opt-outs of tracking where you offer them, and set a retention limit on the logs.
Should I use a GIF or a PNG?
Either works, and the practical difference is negligible. A transparent 1x1 GIF is 42 bytes and has the broadest historical support, which is why it became the convention. A 1x1 transparent PNG is 70 bytes with cleaner alpha. Both are downloadable here, and both are provided as inline Base64 in the endpoint code so your route needs no image file on disk at all.
Why is my pixel not firing?
Work through the usual causes: the endpoint is not on HTTPS, so clients refuse to load it inside a secure message; the image returns a redirect or an HTML error page instead of image bytes with a correct Content-Type; the img tag was given width and height of 0, which some clients treat as hidden and skip; merge tags were pasted with the wrong syntax for your ESP and arrived unresolved; or the recipient simply has images turned off. Load the generated URL directly in a browser first — if it does not return an image there, no email client will fetch it either.
Can I self-host tracking instead of relying on my ESP?
Yes, and that is exactly what this tool is for. A self-hosted pixel on your own domain gives you the raw log rather than a rounded dashboard number, keeps the data when you switch ESPs, avoids per-contact pricing tiers for analytics, and lets you join open events directly against your own database. The trade-off is that you own deliverability of that domain, log retention, and privacy compliance.
Is anything I enter here sent to a server?
No. The URL assembly, HTML generation, and code snippets are all produced in your browser with JavaScript. Your domain names, campaign IDs, and merge tags are never transmitted, stored, or logged by this site.