Security & Privacy

"Local-only" isn't a slogan.
Here's exactly how it works.

You're trusting F2F-Folio with your full financial picture. That deserves more than a tagline — this page explains the actual mechanisms: where your data lives, how it's encrypted, and what F2F-Folio does and does not send over the network.

🖥️

Everything stays on your machine

F2F-Folio has no backend server, no user accounts, and no cloud sync. Your holdings, transactions, and CSV imports are parsed and stored entirely on your own computer. There is no database anywhere for us — or anyone else — to query.

📡

Zero telemetry, ever

No analytics SDK, no crash reporter, no usage tracking, no "anonymous" pings home. This is stated explicitly in the app's own EULA, not just marketing copy. The only network calls F2F-Folio makes are the ones you'd expect: fetching live prices (Yahoo Finance) and, once, validating your license key.

🔑

You hold the only key

When you turn on PIN lock, the encryption key is derived from your PIN and never written to disk — it lives in memory only for the session. Nobody, including Fire2Freedom, can decrypt your data without your PIN. There is no password-reset backdoor, because there is no server-side copy to reset.

How PIN lock actually protects your data

Five concrete steps, from the moment you set a PIN to the moment your dashboard renders.

1

Optional PIN lock

PIN protection is opt-in — skippable during onboarding if you don't want it. When enabled, your PIN never leaves your device and is never transmitted anywhere.

2

Key derivation — PBKDF2

Your PIN is run through PBKDF2 with SHA-256 and 300,000 iterations, salted with a fresh 16-byte random value per install. This is the same class of key-stretching used by password managers — it makes brute-forcing the PIN computationally expensive even if someone got hold of your local data file.

3

Encryption — AES-256-GCM

Holdings and transactions are encrypted with AES-256-GCM, an authenticated cipher — it detects tampering, not just confidentiality. A fresh 12-byte IV is generated on every single write, so no two encrypted blobs ever reuse the same nonce. Done via the browser's native Web Crypto API (crypto.subtle), not a hand-rolled implementation.

4

Verifier, not your PIN, is stored

What's saved to disk is a salt plus an encrypted verifier token — never the PIN itself and never the raw derived key. After 5 failed unlock attempts, the app locks itself out rather than allowing unlimited guesses.

5

Atomic decrypt on unlock

Enter your correct PIN and holdings/transactions are decrypted together, in memory, before the dashboard renders anything — there's no partial-data flash or intermediate unencrypted write to disk.

What leaves your machine — and what doesn't

DataLeaves your machine?
Holdings, transactions, imported CSVsNever
PIN / derived encryption keyNever
Notes, goals, manual entriesNever
Usage analytics / crash reportsNot collected — none exist
Security ticker symbols (for price lookup)Yes — sent to Yahoo Finance to fetch live prices
License keyYes — sent once, to validate your purchase

Security FAQ

What happens if I forget my PIN?+

Because the key only ever exists in your session's memory and is never stored anywhere — not on your disk, not on a server — there is no "reset password" flow that can recover encrypted data without the PIN. The app's Forgot PIN option lets you wipe and start fresh, but it cannot decrypt old data. This is the direct tradeoff of true local-only encryption: nobody holds a spare key, including us.

Is PIN lock required?+

No — it's entirely optional and can be skipped during onboarding. PIN lock protects your data at rest (in case someone else uses your computer); it is independent from Privacy Mode, which just visually masks numbers on-screen and resets every time you reload.

Does F2F-Folio talk to the internet at all?+

Only for things you'd expect and can see: live price lookups from Yahoo Finance for the securities you hold, and a one-time license check when you activate your purchase. No usage analytics, no crash reports, no background sync. You can verify this yourself — the app is not sandboxed against inspection.

Where exactly is my data stored?+

Locally, in your browser's storage on your own machine — the same mechanism used by the app whether PIN lock is on or off. With PIN lock enabled, that local data is AES-256-GCM encrypted at rest; without it, it's stored in plain form, which is why we recommend PIN lock if you share the computer with anyone.

Is the encryption implementation open to review?+

F2F-Folio is closed-source today, but the exact algorithms in use — AES-256-GCM, PBKDF2-SHA256 at 300,000 iterations, native Web Crypto APIs — are named plainly here and in the app's own EULA rather than left as a vague "bank-level encryption" claim. If independent auditability matters to your decision, treat that as an open question, not something we're claiming today.

What if I switch computers?+

The header's Backup button exports everything — holdings, transactions, and profile — as a single JSON file you can carry over to a new laptop, a work machine, or just keep as an offline copy. Restoring is the same drag-and-drop import flow you already use for CSVs. One thing to know: the exported file itself is plain, readable JSON, not encrypted — even if you have PIN lock turned on, only the copy stored in the app is encrypted at rest. Treat the exported file the way you'd treat a bank statement PDF: fine on a USB stick or your own cloud drive, not somewhere public.

Buy F2F-Folio — €49 one-time →

7-day free trial available — no credit card required