FTFreeTools

Privacy

This page answers three questions: where your input goes, which requests the site makes, and what it stores on this device.

Of all tools, 51 run entirely in the browser and 1 need a server. Every outbound request is listed below one by one — there is no catch-all wording like “and other necessary requests”.

Where your input goes

Client-side tools: nowhere. Input exists only in the current page's memory and disappears on refresh.

Server-side tools: sent only when you actively trigger them, and only the data that feature needs. Each tool page states which kind it is.

Outbound request list

Below is every behaviour on this site that makes a request, each with its trigger condition. This list shares one data source with the privacy proof page, so the two can never disagree.

Nothing outside this list exists: no ad scripts, no font CDN, no social widgets, no third-party analytics.

  • /_vercel/insights/*Same origin

    On any page load — injects the same-origin analytics script and reports a page view; using a tool reports one usage event (first-party aggregate, no cookies, no fingerprinting, never any input content)

  • va.vercel-scripts.com(仅开发环境)Third party

    In development the analytics script comes from va.vercel-scripts.com; production builds use the same-origin path above. What you see in Network should be the same-origin one

  • POST /api/tools/request-infoSame origin

    Only when you press the button in Request Info (headers are read server-side and discarded — not stored, not logged)

  • huggingface.coThird party

    Only when you actively use Video to Prompt and the model loads for the first time (weights far exceed the bundle budget, so they are fetched on demand; a 1-byte probe first decides between direct access and the same-origin `/hf` proxy)

  • cdn.jsdelivr.netThird party

    Same moment, only on first use of that tool — transformers.js fetches the onnxruntime-web WebAssembly runtime from jsDelivr by default (a code asset, browser-cached and not downloaded again)

  • /api/bazi-storySame origin

    Only when you press "Write one with AI" in the BaZi tool — a summary (birth time + four pillars + ten gods + luck pillars) is POSTed to this site's function, which forwards it to the model; nothing is stored or logged, and a refresh leaves no trace

  • api.cloudflare.comThird party

    At that same moment the server-side function forwards the summary to Cloudflare Workers AI (the free-quota channel). This happens on the server and is invisible in your browser's Network panel; the token lives only in server env vars and is never shipped to the client

  • 用户自选的服务商(BYOK)Third party

    If you bring your own API key in the story panel, the request goes from your browser straight to the provider you chose (DeepSeek / Groq / OpenRouter …) — this site never relays it, and the key stays in this device's localStorage

Verify each one in DevTools

What this site stores on your device

Three localStorage keys, all for interface preferences, none containing anything you pasted:

`ft-theme` holds your light/dark preference; `ft-favorite-tools` holds tools you starred; `ft-recent-tools` holds tools you opened recently.

Separately, if you enter your own API key in the BaZi story panel it is stored on this device as `ft-bazi-llm`, used only by your browser to call the provider you chose. This site's server never sees it.

Analytics

The site uses same-origin first-party aggregate analytics: page views and tool usage counts only. No input content, no cookies, no cross-site fingerprinting.

Search behaviour reports only the fact that “this search returned nothing” — never what you searched for, so the site cannot know anyone's search terms.

Your choices

To avoid analytics: enable your browser's tracking protection or an interceptor. No tool breaks (blocking the analytics script affects nothing).

To leave no local record: clear this site's site data, including favourites, recent tools and theme preference.

If you never use a server-side tool, nothing ever leaves this device.

Changes

This page is updated as features change, and every substantive change is recorded in the changelog. Prior versions are recoverable from source history.

Read the changelog