Millimeter Labs

FortiFi

Paywall hardening
that survives DevTools.

Server-side tokens and teaser-only HTML. CSS and DOM tricks never see the full article.
View on GitHubRead the docs

MIT core · Beta · Self-host or extend

01 JWT
Server validates
02 Teaser
HTML only
03 MIT
Self-host core

Server decides

Full articles load only after JWT validation. The browser never receives paid HTML early.

Teaser by default

Unpaid requests get preview HTML and metadata. CSS cannot reveal what was never sent.

Self-host the core

MIT open source. Express and Fastify middleware plus a drop-in client snippet.

How it works

Teaser first. Full content only with a token.

Traditional paywalls hide content with CSS. FortiFi never sends the full HTML until the server validates a short-lived JWT.

Express, Fastify, or your own Node handler. Redis for rate limits when you enable them.

BrowserGET /articleFortiFiValidate JWTTeaser HTMLFull contentNo token · valid token

Problem

Client-side paywalls leak by design.

Typical approach

  • Full HTML in the DOM, hidden with CSS
  • User toggles display in DevTools
  • Paywall is cosmetic, not structural

FortiFi

  • Server returns teaser HTML by default
  • JWT unlocks the full response body
  • Bypass requires a valid token, not a selector

Built for publishers

Hardening toolkit, not a hosted lock icon.

Core packages ship as MIT. Wire middleware, issue tokens, and serve teasers from your stack.

  • JWT

    Short-lived tokens

    Tokens gate the full response. Not a CSS class toggle.

  • RL

    Rate limits

    Redis-backed throttling and IP blocks for scrape patterns.

  • WM

    Watermarking

    Basic PDF and image marks in core. Per-user templates for leak tracing.

  • MW

    Drop-in middleware

    @fortifi/core for Node. Lightweight UMD client for browser unlock.

FortiFi Core is open source.

Clone, self-host, and extend. Managed cloud and enterprise tiers are on the roadmap when you need them.

  • Teaser-only HTML for premium routes
  • JWT token generation and validation
  • Express and Fastify middleware
  • Browser client snippet
  • Docker Compose for local stack
Star on GitHub