LW IT Solutions logo LW IT Solutions logo LW IT Solutions
Built, shipped and operated

Four tools that fix
what their alternatives get wrong.

Each one began as a real problem in client work: a session replay tool that could not say when it was allowed to record, a consent banner that cost more than the site it sat on, a visitor counter that dragged half a megabyte behind it, an address field that wanted a real mailbox for a single download. Each became the fix. Three of them are already live and free to use; the fourth is being rebuilt. All four are maintained by one person.

MousePlayer
In development EU-hosted EN · DE · PL

Session replay that rebuilds the page from a text blueprint instead of filming it — and that records nothing at all until a visitor has agreed.

Session replay has two problems that no amount of interface polish fixes. It is heavy, because recording a screen means shipping pixels; and it is legally awkward, because watching someone move through a page is behavioural observation whether or not the vendor calls it that. MousePlayer answers both at the architecture level. The page is reconstructed from a text blueprint and a stream of coordinates rather than a video file, and the recorder stays switched off until a consent signal arrives. It is the largest of the four projects on this page, and the only one not yet publicly launched.

What it does

  • Live viewer, not just a report — sessions stream over WebSockets and can be watched while they are happening, following one visitor across tabs instead of reading about them the next morning.
  • Replay without video — the player re-creates the page from the recorded blueprint and moves a virtual cursor across it, so text stays sharp instead of dissolving into compression artefacts. Easing and idle detection keep the motion organic rather than robotic.
  • Hybrid transport with a CAPI leg — live coordinates travel over wss://, while heavy DOM mutations and e-commerce payloads are routed through your own first-party server-side GTM container at /mp_capi. Official Google Tag Manager community templates, no domain spoofing, batching on the server side.
  • Heatmaps and funnels — click, scroll and attention maps aggregated over thousands of sessions, and conversion funnels built on the standard view_item, add_to_cart and purchase events, with session filters on numeric values such as cart value.
  • Interventions while it still matters — hesitation and rage-click patterns can trigger a chat agent during the session, not an apology e-mail the day after the cart was abandoned.
  • Consent before capture, not after — with no signal there is no session ID, nothing written to storage, no cookie and no open connection. Global Privacy Control is honoured unconditionally and overrides any yes.
  • Integrations in both directions — a GA4 and GTM event bridge, a BigQuery connector for raw telemetry, error links into Sentry, Bugsnag and Datadog RUM, product-analytics bridges to PostHog, Mixpanel and Amplitude, replay links inside Intercom, LiveChat and Zendesk, and outgoing webhooks for Zapier and Make.

Under the hood

Capture model
DOM snapshot telemetry: one text blueprint of structure and styling, then a numeric stream of pointer positions, scroll depth, click targets and resize events. Kilobytes per session, sent asynchronously, no video codec anywhere in the path.
Viewport fidelity
The visitor's exact viewport is recorded — 390×844 on a phone, 1920×1080 on a desktop — and replayed in a scaled sandbox with the same ratio. Rotation and window resizing mid-session are captured as events and applied during playback, so the layout never drifts out of context.
What is deliberately not captured
Passwords, payment fields and typed input are suppressed on the device, so the text never leaves the browser; cross-origin iframes appear as placeholder blocks because the same-origin policy forbids reading them; canvas and WebGL are kept as static frames; idle stretches past twenty minutes are compressed out of the replay.
Consent handling
Three installation paths: blocked by the consent tool itself through type="text/plain" and a category attribute, driven explicitly through a queue call, or detected automatically. On withdrawal every listener and observer is detached, storage is cleared, and the buffer is discarded rather than flushed — otherwise closing the tab would deliver exactly the data that was just refused.
Regions
A project may be allowed to record without a prior signal in named regions, but the EU and EEA, the United Kingdom, Switzerland, Brazil and Canada cannot be released, because there consent has to come first. The region is resolved server-side and only the country is kept; the IP address is not stored.
Storage and transport
Workspace data sits on servers inside the European Union. Telemetry streams and stored sessions are encrypted with TLS 1.3, in transit and at rest.
Plans
No feature paywall — replay, heatmaps, the GA4 and CAPI bridges, interventions and PII masking are in every tier. What scales is concurrency, retention and project count: from a permanently free plan with ten concurrent visitors and seven days of retention up to an enterprise agreement with a year.
WebSocketsServer-Side GTMCAPI DOM snapshotConsent Mode v2 Global Privacy ControlTLS 1.3BigQuery
mouseplayer.com
MousePlayer start page in dark mode with the headline See Every Click, Rescue Every Cart, a Create Workspace button and a control that sets how many live cursors run across the hero
The whole pitch in two lines, and a demo underneath it: the control below the button decides how many live cursors move across the hero.
mouseplayer.com/features
Feature page section titled Hybrid Architecture and CAPI, describing the event router next to an illustrated console showing routing over WebSockets and HTTP POST to a server-side GTM endpoint
The transport is the genuinely unusual part. The console beside it is an illustration of what the router does, not a live log.

The public address still shows a placeholder: the platform is being rebuilt from scratch, and both screenshots above come from the build in development rather than from something you can sign up for today. It is listed here because it is the piece of work the other three grew out of, and because the parts that are hardest to retrofit — the transport and the consent gate — are the parts that are already settled.

consented.eu
Live Open source DE · EN · PL

A complete consent management platform that does not ask for a credit card, a trial period, or a per-domain fee.

Consent tooling became a subscription business while the underlying job stayed the same: set default signals before any tag fires, block what has not been agreed to, and keep a record that survives an audit. consented.eu does exactly that — hosted for free, or installed on your own infrastructure from the same source tree.

What it does

  • Four banner layouts — bottom banner, top banner, modal and slide-in, each with a second layer listing categories, services and cookie tables.
  • Script blocking that starts early — declarative via type="text/plain", plus pattern-based blocking through a MutationObserver that runs inside the stub, before the runtime loads.
  • Google Consent Mode v2 — defaults are set in the stub ahead of GTM; the update follows the decision, mapped category by category to signal.
  • Append-only consent log — timestamp, configuration version, language and an HMAC-pseudonymised IP. A change never overwrites; it appends.
  • Design editor with a conscience — colours, radii, layout and custom CSS with a sandboxed live preview and automatic WCAG contrast checking.
  • Versioned publishing — every release freezes the configuration as an immutable snapshot, so it stays traceable which visitor saw which version.

Under the hood

Rendering
Shadow DOM, fully keyboard operable, no styling bleed into the host page.
Languages
32 in the catalogue, complete texts for German and English, with a fallback chain across browser language, html lang and site default.
Reporting
Consent rates by domain, language, country and layout over time; pseudonymous export as CSV or JSON — IP only as HMAC, page URL only as SHA-256.
Trust boundary
Domain verification by DNS TXT record or file upload; unverified domains are restricted at delivery time.
Honesty
The feature page separates what is implemented from what is planned. A capability is only listed above the line once it actually ships.
Consent Mode v2Shadow DOMMutationObserver HMACSHA-256Self-hostingWCAG
consented.eu
Start page of consented.eu with the live preview panel on the right, showing the consent dialog rendered by the real runtime
The preview on the start page is not a mock-up — it runs the same cmp.js that ships to a customer site, so layout, theme and language can be tried out before signing up for anything.
consented.eu/self-hosting
Self-hosting page of consented.eu explaining how to run the platform on your own infrastructure
Same source tree, your datacentre. The hosted service exists for convenience, not as a lock-in.
Stats4U
Live No sign-up 10 languages

Visitor counters that weigh under a kilobyte and set no cookies — pick a design, copy the snippet, done.

The visitor counter is the oldest widget on the web and most surviving ones now drag a tracking stack behind them. Stats4U keeps the original bargain: a small image, a number that goes up, and statistics you can look at — without an account, without consent plumbing, and without a payload that outweighs the page it sits on.

What it does

  • Dozens of designs — classic odometers, modern SVGs, and animated variants that build themselves up, overshoot and settle.
  • Build your own — shape and colours chosen freely, with the preview updating as you go, then copy the generated code.
  • Real-time figures — today, yesterday and the full history, with bounce rate and average visit duration.
  • Active-tab detection — the system distinguishes a visitor actually reading the page from one who left it open in a background tab.
  • Geolocation that is actually shown — animated globes and regional maps for several countries, plus a flag-counter wizard in cubic, horizontal and vertical styles.
  • Device and technology breakdown — browsers, screen resolutions and hardware classes, all without a cookie banner in front of them.

Under the hood

Payload
Under 1 KB on the visitor side. No cookies are set, so no consent layer is required for the counter itself.
Onboarding
No registration. A counter number is issued, the snippet is copied, and the counter starts on the next page view.
Reach
Interface in ten languages — English, German, Polish, Spanish, French, Italian, Portuguese, Russian, Chinese and Japanese.
Support
A contact form with reCAPTCHA that loads only when the form is opened — the anti-abuse script is not on every page by default.
SVGCookielessReal-time Geolocationi18n × 10< 1 KB
stats4u.net
Stats4U start page in dark mode showing the counter picker with three live example counters and the design categories below
Three steps on one page: choose a design, adjust it, copy the code. The counter examples on the right are live renderings, not images.
stats4u.net/about
Stats4U about page in dark mode showing live usage figures for counters in operation, visitors yesterday and countries reached, above an explanation of how the counter works
What the counter records, written out — and what it deliberately does not.
getSend
Live Send & receive API

An e-mail address without an account — think up a name, read what arrives, walk away.

Sign-ups, downloads and confirmation mails routinely ask for an address that will never be used again. getSend hands one over immediately: no registration, no password, no payment details. Unlike most throwaway services it also sends, replies and forwards, and carries attachments in both directions.

What it does

  • Instant address — pick any name at @getsend.xyz and the mailbox exists on the spot; nothing to confirm, nothing to install.
  • Mail arrives on its own — the inbox updates without a reload and announces new messages with a sound.
  • Not read-only — reply to a message, forward a single one, and send attachments as well as receive them.
  • Switch at will — move to another address whenever you like, or simply abandon the one you used.
  • Programmatic access — an API for automated sign-up flows and test harnesses that need a fresh address per run.
  • Three interface languages — German, English and Polish, switchable in the header.

The honest part

No password, by design
A mailbox here has no owner. Anyone who knows — or guesses — the address can read what arrives in it. The service says so on its own start page rather than burying it in the terms.
What it is for
Registrations, downloads, one-off confirmations. Neither the sender nor the site you sign up with receives an address of your own.
What it is not for
Anything you would mind a stranger reading: password resets, invoices, account recovery. Use a real mailbox for those.
SMTPPush inboxAttachments REST APIDE · EN · PL
getsend.xyz
getSend start page with the address field, the getsend.xyz domain selector and the Get Mails button
The entire onboarding is one field and one button. Everything below the fold explains what the service will and will not do for you.
getsend.xyz · Deutsch
getSend start page in German, showing the same interface with translated navigation and copy
Same page, German interface. The language switch is in the header, not hidden in a footer.

Same hands, different problem?

These four came out of consulting work on tracking, server-side analytics and privacy-first architecture. If something in that neighbourhood is giving you trouble, the blog has the long-form version and the toolbox has a bunch of small tools that solve one thing each.