Privacy notice
Last updated: 2026-11-12. This is the complete privacy notice for the extension and the licence service, and also covers this website. Framingo processes the website you choose on your computer to create your videos; it does not upload your recordings or page content. Pro licence data is sent to the licence service, payment details are handled by Stripe, and support emails are handled through Gmail.
Framingo uses data only to provide its recording, licensing, payment and support features. It does not sell user data or use it for advertising. Website content and recording media are processed locally and are not transmitted to Framingo. Information sent to service providers is limited to what they need to provide the feature you chose.
1. Your recordings stay on your computer
Framingo records the website you choose, in two views, on your own computer. The two videos are stored in the extension's storage in your Chrome profile. They are never uploaded to Framingo or anyone else. Deleting a recording in Results, or removing the extension, deletes the stored videos. Framingo has no sign-up account and no analytics.
2. What Framingo records
- Video of the recording stage: when you choose Start recording, the tab you are on becomes Framingo's recording stage. It shows the same website twice: a Desktop view and a Phone view. Framingo records that one tab and saves the two views as two videos. Anything visible in the two views during a recording, including personal information shown on the page, is in the videos. The stage's own controls (timer, Stop button) are not in the videos.
- Narration, only if you turn it on: Framingo records your microphone and puts the same narration in both videos. It is off by default. It never records the website's own sound.
3. What happens to the page you were on
When you choose Start recording, the page reloads once and is then replaced, in the same tab and on the same site, by Framingo's recording stage. The two views load the page's address again, using your normal cookies for that site, as a reload would. When you stop, the tab returns to the page where your walkthrough ended. Anything you had typed into the page before starting is not carried over.
That reload is made by Chrome, not by the page, as an ordinary page request for the page's address (never resubmitting a form), and it runs none of the page's own scripts: for that one reload Framingo replaces the page's Content-Security-Policy with script-src 'none' and removes its Content-Security-Policy-Report-Only, Cross-Origin-Opener-Policy, Cross-Origin-Embedder-Policy, X-Frame-Options and Refresh headers. The recording stage keeps the no-script policy, so a page shown in a view cannot run script in the stage. Pages in the two views run their own scripts as in a normal tab, including a site's security check (Framingo never solves or bypasses one). A page served by the site's own service worker keeps its headers.
Setup trail. To tell afterwards which step of Start failed, Framingo's background service keeps, in memory only, a list of at most 50 entries for the last Start: step names (reload, swap, connect, frames, layout, views, capture), their outcomes, milliseconds since Start, attempt counts, whether a service worker controlled the page, and network error codes such as net::ERR_CONNECTION_RESET. Never an address, a title or page content. It is not stored or sent, and is gone when the service stops.
4. While a recording runs
These things happen only while a recording runs, and only in the recording tab:
- Pages shown in the two views may be displayed even if they normally refuse to be shown inside another page. Framingo removes their
X-Frame-OptionsandContent-Security-Policyheaders for that purpose, and sends the views' page requests as ordinary page loads (Sec-Fetch-Dest: document) because some servers refuse requests marked as coming from a frame. Where a request comes from (Sec-Fetch-Site) is not changed. - The Phone view presents itself to websites as an Android phone running Chrome (user agent, client hints, screen size, touch-style pointer), so that sites show their mobile version.
- A small Framingo script runs in each view to let the other view follow scrolling and supported menus, tabs and accordions, and to keep links that would open a new tab inside the view. It also reports whether the page in its view has finished loading (painted, fully received, fonts loaded): yes/no facts and times, never the page's address or content.
- When you click or tap in a view, that script reports where (a position in the view) so Framingo can mark the press in the video. When you click a link, it also sends a fingerprint of the link to the other view so that view can tap the same link: short hashes of the link's address and name, whether it sits in the page's header, body or footer, and whether it points within the page. The other view compares these hashes with its own links; the address and the link text themselves never leave the page. To show the tap, the other view may open its own menu and close it again. Nothing of this is stored; the recording keeps only counts (for example how many presses were mirrored).
- Captions. When you click a link, the view where you clicked also gives the link's name (at most 48 characters) to Framingo's stage in the same tab. If the other view has no such link, the stage writes that name over the other view, for example "Tapped “Pricing”", so the video shows which link led to the next page. The name is drawn into the video only. It is kept in the stage's memory until the next press or until you stop, and never sent to Framingo's background service, stored or logged.
- Pointer. The script also reports where your mouse pointer is in a view (a position, at most 30 times a second while it moves), so the stage can draw the pointer into that view's video once it has rested 2 s (while it moves, Chrome's capture shows its own pointer). Positions are not stored.
- Menus, accordions and pointing. When you press a menu button, tab or accordion (also an accordion that has no accessibility attributes, when the section right after it opens) or another named item that the other view does not have as such, the script sends a short hash of its name and the kind of element (for example "button") to the other view, which compares it with its own items. Nothing of the name itself leaves the page. The other view then opens the same accordion, or only points its ghost pointer at an item of the same name in its navigation. The recording keeps counts only.
- Menus, banners and pointing as actions. When you press or (on the Desktop) hover an item, the script describes it to the other view with: the kind of element (for example "button" or "link"); short hashes of its name, its id, the id of the part of the page it controls and up to four test or data attributes that sites set on elements (
data-id,data-testid,data-qa,name); the area it sits in (top bar, overlay such as a banner or dialog, footer, or body); and whether it says it opens something. A link's fingerprint also carries hashes of those attributes and, when a menu showed the link, the same descriptions of at most two menu items that opened it, each with a running number. The other view compares the hashes with its own items: it may hover or press its own same menu item so the same menu opens, press the same choice in its own consent banner or dialog (for example "Reject all" or "Close"), and close what it opened again. It never presses a submit button, a button in a form with fields, a link to another page on behalf of a menu or banner, a "load more" or "add to cart" style button, a disabled element, or anything in the view you are using. Nothing of the names, ids, attributes or addresses themselves leaves the page; nothing of this is stored, and the recording keeps counts and fixed reason codes only. - Pointer look. With each pointer position the script also says which pointer Chrome shows there in the Desktop view (arrow, hand or text cursor), so the drawn pointer looks the same (over text it draws none, as Chrome's video shows none). The Phone view's script adds Framingo's fingertip style to the pages and frames inside the Phone view, including their shadow trees; it reads nothing from them.
- Page checks. Framingo's background service tells the script in each view how large the stage draws that view (one number), so it can tell a loading spinner from the page's content; the stage tells the service when your own click mark is on screen, and the service tells the recorder when a view scrolls (times only) and where in the view you pressed (a position), so the recorder can draw your click mark into a picture it holds before the capture showed the stage's mark. The recorder keeps watching each view's picture for 3 s after a page change (brightness of small areas, compared on the computer and discarded). None of this is stored.
These rules and scripts are removed when the recording ends. Other tabs are not changed, apart from one exception: during a recording the view script may start in a frame of another page with the same two-frame structure, notices that it is not in Framingo's stage, and stops.
5. Where recordings are kept
Recordings are stored in this Chrome profile's extension storage (IndexedDB) on your computer. They are never uploaded. Framingo keeps at most three recordings. It does not delete one silently to make room; it asks you to delete one in Results instead. Delete recording removes both videos of a recording from the browser. Files you have already downloaded are ordinary files on your computer and are not affected.
Framingo's stored records hold no website addresses, page text, typed text, clicked-element or link names, cookies or device identifiers. They hold counts and timings only, such as how many page changes the Phone view followed, and when each view started and finished loading a page (milliseconds since Start, with kinds such as "start", "commit" or "ready"), which Framingo uses to keep loading pages out of the videos, how many address rewrites of a page were ignored and how long a view kept its picture after its page cleared itself. While a recording runs, the address you started from is kept in Chrome's in-memory session storage so the page can be restored, and is removed when the recording ends. Only the videos themselves show the page.
Copy diagnostics. Each recording in Results has a Copy diagnostics button. It copies to your clipboard, as text, what the stored record says about how the recording went: the Framingo version, the recording's outcome and stop reason, durations, counts (for example presses mirrored, captions shown, page loads shortened), the page-load timings in milliseconds since Start with their kinds, and each video's size and checks. It copies no website address, page text, link or element name, file name, identifier, stream ID, licence key, token or credential: only numbers, yes/no values and short fixed codes are kept (that includes the recording's tier and output profile as codes). Nothing is sent anywhere; you decide where to paste it (for example into a report). It also lists up to 200 presses the other view could not show as an action, each with its time in milliseconds since the recording started, the kind of press (link, menu, control, overlay or pointing), a fixed reason code (for example covered, not_opened or timeout) and which view; counts of menus and overlay choices mirrored; and, for each time a view kept its last picture while its page loaded, which readiness conditions were still missing when that began and ended (yes/no values such as "fonts still loading").
6. What Framingo can access, and why
| Permission | Why it is needed |
|---|---|
activeTab | Access to a tab only after you click Framingo on it. One click on the tab you want to record is enough. |
tabCapture | Records that tab after you have started a recording. |
offscreen | Runs the recorder in a hidden extension page, so recording continues after the popup closes. |
scripting | Builds the recording stage in that tab and lets each view follow the other's scrolling, page changes and supported menus, tabs and accordions. |
webNavigation | Notices when either view moves to another page, so the other view can load the same page; and notices when Framingo's own website shows its "payment received" page, so Pro turns on without typing (the address is compared on the computer; nothing is sent). |
declarativeNetRequest | During a recording only, and only in the recording tab: lets pages that refuse framing, or refuse framed requests, appear in the views, and gives the Phone view's page requests a phone user agent. |
| Access to http:// and https:// pages | Needed for the two rules above and for the views' following script on whatever site you walk through, including links to other sites. Framingo does nothing on websites outside a recording. |
storage | Keeps the current recording's state while it runs, whether you closed the popup's "How it works" card, and, for Pro, the install ID, the licence key, the signed token with its clock difference, and a pending purchase on this computer (chrome.storage.local, never synchronised; see section 8). |
| Microphone (asked only when you turn narration on) | Records narration. Chrome shows its own permission prompt. |
Framingo does not read your history, cookies or other tabs. Free use sends nothing anywhere. For Pro, the extension calls its licence service with the same page-access permission (http:// and https://) it already holds; no permission was added for licensing, and nothing from a website you record is ever sent to it. The two views are sandboxed, and the stage refuses navigations started by a page: a website shown in the stage cannot navigate, reload or go back out of the stage.
7. Free use sends nothing
If you use Framingo without buying Pro, the extension makes no network request to Framingo's licence service. There is no account, no analytics and no tracking on the extension or in this website.
8. What Pro sends
These are the only times Framingo contacts its licence service, and only after you act:
- Upgrade: the plan you chose (yearly or monthly). The service answers with a Stripe checkout address, which opens in a new tab, and a random one-purchase code.
- After payment: that one-purchase code and your install ID, to collect your licence key.
- Activate (with a licence key), Manage, Remove Pro and the daily check: your licence key and your install ID. Once Pro is on, the extension renews a signed token about once a day (when you open its popup or Results page, or when Chrome starts), and never during a recording.
- Uninstall page: Chrome opens the uninstall page of this website when you remove Framingo. The address carries the extension's version number. This is an ordinary visit to a web page; the extension sends nothing before it, and nothing from the page is sent unless you press Send.
The install ID is a random number the extension makes for itself. It is not linked to your Google account, your name or your hardware. Recordings, web addresses, page content and anything you typed are never sent.
One licence key works on at most 3 computers at a time; a computer that has not checked its licence for 30 days stops counting toward them, and takes a place again when it next checks, if one is free. Keep your licence key private, like a password: anyone who has it can use Pro on a free place and, through Manage, open your subscription's billing page on Stripe, where its invoices can be seen and the subscription cancelled.
On your computer, the extension keeps in chrome.storage.local (never synchronised) the install ID, the licence key and signed token (after a purchase or an activation), and a pending-checkout record (for at most 30 days) while a purchase is in progress. It also keeps one popup setting there: whether you closed the "How it works" card; it is never sent. With the token it keeps one number, its clock difference: how far this computer's clock was behind the licence service's clock at the last check (in milliseconds; 0 when it was not behind), so that a slow clock does not turn Pro off. That number stays on this computer, is never sent, and is deleted with the key and token. Remove Pro from this computer deletes the key and token here and frees the place on the service. A signed token is checked on your computer; an expired, tampered or missing token means Free. If a subscription ends, is refunded or loses a dispute, Framingo goes back to Free at its next check. Recordings are never locked or deleted.
9. What the licence service stores, and for how long
| Record | What it holds | Kept |
|---|---|---|
| Checkout | The one-purchase code, the plan, Stripe's checkout session ID, its status, the licence key once paid, times | 31 days |
| Licence | The licence key, plan, status, the end of the paid period, Stripe's customer, subscription and checkout session IDs, times | While the subscription runs; 400 days after it ended, was refunded or was lost in a dispute |
| Activation | A licence key with an install ID, and the times it was activated and last seen | With the licence; 90 days after you remove Pro from a computer |
| Stripe event log | Stripe's event ID, event type and processing state | 90 days |
| Feedback | The reason you choose on the uninstall page, an optional comment of at most 500 characters, the extension version, the time | 400 days |
In the licence database, Framingo does not store: your name, email address, home address, card or payment details, IP address, browser user agent, page content or recordings. The database stores the licence and Stripe identifiers listed above; the service logs keep short route and outcome codes, not keys or install IDs. Old service records are deleted by a daily cleanup. Cloudflare may process network information such as an IP address to deliver and protect the service.
The feedback form is optional. Please do not put personal information in the comment.
10. Payments and tax: Stripe
Payments use Stripe-hosted Checkout. Where a purchase is processed through Stripe Managed Payments, Stripe is the merchant of record and handles applicable indirect taxes. Stripe collects the information needed to process the transaction. Framingo's licence service receives and stores Stripe identifiers and payment status needed to issue and manage a licence, but not card details. See Stripe's privacy notice for its handling of payment information.
11. Hosting: Cloudflare
This website and the licence service run on Cloudflare. Cloudflare processes your IP address to deliver the service and to limit abuse (for example, to stop too many requests from one address). Framingo does not store IP addresses. Cloudflare may keep standard network logs under its own privacy notice.
12. Support email
If you email pbinder.supp@gmail.com, Google processes your sender address and message through Gmail so I can answer your request. I use the message only to provide support and keep it only as long as needed to resolve the request and related follow-up, unless a longer retention is required for a billing or legal matter.
13. Chrome Web Store
If you installed Framingo from the Chrome Web Store, Google handles the installation and updates under its own terms. Framingo receives no installation information from the store.
14. Your choices and rights
Using Free needs no data from you at all. You can delete your recordings in Results and remove the extension at any time. Removing the extension removes its stored recordings and its licence data on your computer. Use Remove Pro from this computer first to free the place on the service; removing the extension does not cancel a subscription, which you can cancel with Manage or by writing to pbinder.supp@gmail.com. To ask what Framingo holds about a licence, request deletion, or ask a privacy question, email pbinder.supp@gmail.com with your licence key. Where the law gives you rights over your data, they apply.
15. Contact
Framingo is developed and maintained by Yuanyuan Tang, an independent software developer based in China. Privacy questions: pbinder.supp@gmail.com
Website: Framingo
16. Changes
If this notice changes, the date at the top changes, and a change to what the extension sends or handles will be announced in the extension or on this website before it applies.