Privacy Policy

Last updated: October 1, 2026

Overview

FormForge is a browser-based PDF form builder. Your PDF files and form data are processed entirely on your device. No documents are uploaded to any server. The one exception is the optional FormForge app in ChatGPT, which has to process your PDF on our servers and deletes it after 24 hours. This privacy policy explains what data, if any, is collected by our website and applications.

Data We Do Not Collect

  • The web app does not collect, store, or process your PDF files on any server
  • The web app does not collect form content or field data
  • We do not require account creation or login
  • We do not sell your personal data or use analytics for advertising

How the App Works

All PDF processing happens client-side in your web browser using JavaScript libraries (pdf-lib and PDF.js). Your form drafts are stored in your browser's IndexedDB — a local database that only you can access. When you export a PDF, it is generated entirely in your browser and downloaded directly to your device.

Optional Analytics in the App

The FormForge application (app.pdf-forms.tools) asks for a privacy choice before entry. You can allow or decline usage analytics; both choices give access to the app. If you allow it, our self-hosted Rybbit instance records page visits, feature actions (such as field detection and PDF export), counts, results and installation events. Requests also convey network and browser information, including your IP address and browser type. This is pseudonymous usage data, not anonymous data.

Only after permission, we create a random browser identifier (UUID) and send it as the Rybbit user ID to connect visits on this app, including the installed PWA. We do not connect this ID to other sites. We do not send PDF contents, filenames, form answers, field labels, signatures or certificate data. There is no session recording or automatic capture of form inputs. Document IDs, query strings and URL fragments are excluded from analytics.

The legal basis for optional analytics is your consent under Article 6(1)(a) GDPR and, for the browser storage used for analytics, Section 25(1) TDDDG. Use the shield button labelled Privacy settings in the app header to change your choice at any time. Withdrawing stops future analytics and removes the analytics ID from this browser. Withdrawal does not affect the lawfulness of earlier processing or automatically erase events already received. For access or erasure requests, contact us using the details below.

Consent Cookies and Browser Storage

We store your choice, notice version, choice date and expiry in browser storage and a host-only, first-party cookie named formforge-privacy for 180 days. If you allow analytics, this record also contains the UUID. A refusal record contains no analytics ID. Remembering your privacy choice is necessary to respect that choice and avoid asking on every visit. The additional analytics identifier is stored only with consent. Drafts remain in IndexedDB; settings and offline resources use local browser storage.

The cookie lets compatible browsers carry your choice and, when allowed, your ID into a newly installed PWA. The cookie is not shared with the marketing site or other subdomains. Clearing site data, using another device or browser, browser storage restrictions, or expiry may require another choice. Where the browser and installed app use separate storage after installation, later changes must be made in each separately.

Consent Decision Counts

We count initial acceptances and declines, and later enabling or withdrawal of analytics, to understand the distribution of privacy choices. On a changed choice, the browser sends only the decision and notice version to our server, with cookies and the referrer omitted. Our server forwards only the decision and version to Rybbit under a shared counter identity. It never forwards the visitor's UUID, IP address, browser details, page URL or documents. These counts do not identify visitors or follow their later activity. They count decisions, not unique people. Standard hosting request handling still applies as described below.

Processing the limited choice request relies on our legitimate interest in managing and evaluating the consent mechanism (Article 6(1)(f) GDPR); it is separate from optional product-usage analytics. Contact us to exercise your applicable right to object.

FormForge in ChatGPT

FormForge is also available as an app (plugin) inside ChatGPT, provided by The CodeCave GmbH. ChatGPT does not run apps on your device, so when you use FormForge in ChatGPT, your PDF is processed on our servers. Everything above about the browser app stays true for app.pdf-forms.tools; this section covers only the ChatGPT app.

What we receive and store

  • The PDF you attach in ChatGPT or choose in the FormForge workspace (ChatGPT gives us a temporary download link for it).
  • The form fields that ChatGPT or you create, and the values you ask ChatGPT to fill in.
  • An anonymised user identifier that OpenAI sends with each request. We store only a keyed hash of it, so that only you can open your documents.
  • Your language setting, to show the app in your language.

What we use it for. Reading the layout of your PDF, creating fillable fields, showing page previews, filling in values and producing your downloads. Nothing else. We do not use your documents or answers for analytics, advertising or AI training, we do not sell or share them, and the ChatGPT app sets no cookies and runs no analytics.

AI. Field detection in ChatGPT is done by ChatGPT's own model as part of your conversation. FormForge does not send your document to any other AI service. What you send to ChatGPT, including what ChatGPT passes to FormForge, is also covered by OpenAI's privacy policy.

How long we keep it. Documents, fields, values and page previews are deleted automatically 24 hours after upload (an hourly job removes them). You can delete a document at any time by asking ChatGPT to "delete the PDF from FormForge". Download links expire after one hour. Netlify keeps standard access logs as described under Hosting.

Where. The ChatGPT app runs on Netlify Functions and stores documents in Netlify Blobs (Netlify, Inc., USA), our processor under a data processing agreement.

Data you must not use it for. Do not use FormForge in ChatGPT for payment card details, government ID numbers (such as social security, passport or tax ID numbers) or health information. FormForge refuses to store such values; leave those fields empty and type them into the downloaded PDF yourself.

Legal basis and your rights. We process this data to provide the service you request (Art. 6(1)(b) GDPR). You can request access or deletion by writing to us; because we don't know who you are, please include the file name and the time you used the app. The ChatGPT app is intended for users aged 13 and over, in line with OpenAI's terms.

Marketing Website

The marketing website (pdf-forms.tools) has a separate Rybbit integration for page views and engagement statistics, including viewed sections, scroll depth and clicks. The app's privacy choice and UUID do not transfer to that website. Cookie-less analytics can still process browser and network information; it should not be understood as collecting no personal data.

Hosting

FormForge is hosted on Netlify. Netlify may collect standard server access logs (IP address, user agent, timestamp) as part of its infrastructure. These logs are subject to Netlify's privacy policy.

Fonts

The app and marketing website serve their fonts locally. Opening the consent screen does not contact Google Fonts. Optional app analytics contacts our Rybbit instance only after you allow it.

Local Storage

FormForge stores your work-in-progress forms in your browser's IndexedDB. This data never leaves your device. You can clear it at any time through your browser's settings.

Children's Privacy

FormForge is not directed at children. If you believe a child has submitted personal data to us, contact us to request its removal.

Changes to This Policy

If we make changes to this privacy policy, we will update the "Last updated" date at the top.

Contact

If you have questions about this privacy policy, contact us at info@thecodecave.de.

Responsible entity: The CodeCave GmbH