Bypass paywall restrictions for premium fields on Fillout
Size
5.0 KB
Version
1.1.1
Created
Jan 9, 2026
Updated
26 days ago
1// ==UserScript==
2// @name Fillout Premium Field Unlocker
3// @description Bypass paywall restrictions for premium fields on Fillout
4// @version 1.1.1
5// @match https://*.build.fillout.com/*
6// @icon https://build.fillout.com/favicon.ico
7// ==/UserScript==
8(function() {
9 'use strict';
10
11 console.log('Fillout Premium Field Unlocker - Starting...');
12
13 // Function to remove premium field warnings
14 function removePremiumWarnings() {
15 // Find and remove the premium field warning banner
16 const premiumWarnings = document.querySelectorAll('div.bg-blue-50\\/90.border-blue-400');
17 premiumWarnings.forEach(warning => {
18 const text = warning.textContent;
19 if (text.includes('Premium field') || text.includes('upgrade your plan')) {
20 console.log('Removing premium field warning');
21 warning.closest('div.mb-24')?.remove();
22 warning.remove();
23 }
24 });
25
26 // Remove any upgrade prompts
27 const upgradePrompts = document.querySelectorAll('div, span');
28 upgradePrompts.forEach(element => {
29 if (element.textContent.includes('upgrade your plan') ||
30 element.textContent.includes('Premium field')) {
31 const parent = element.closest('div.border-t-\\[0\\.5px\\]');
32 if (parent) {
33 console.log('Removing upgrade prompt');
34 parent.remove();
35 }
36 }
37 });
38 }
39
40 // Function to close blocking modals
41 function closeBlockingModals() {
42 // Find and close the "Your form includes paid features" modal
43 const modals = document.querySelectorAll('.ReactModalPortal, .ReactModal__Overlay');
44 modals.forEach(modal => {
45 const modalText = modal.textContent;
46 if (modalText.includes('Your form includes paid features') ||
47 modalText.includes('Upgrade your plan or remove these features') ||
48 modalText.includes('paid features')) {
49 console.log('Closing blocking modal');
50 modal.remove();
51 }
52 });
53
54 // Also check for modal content directly
55 const modalContents = document.querySelectorAll('[role="dialog"]');
56 modalContents.forEach(content => {
57 const text = content.textContent;
58 if (text.includes('Your form includes paid features') ||
59 text.includes('Upgrade your plan or remove these features')) {
60 console.log('Removing modal dialog');
61 content.closest('.ReactModalPortal')?.remove();
62 content.remove();
63 }
64 });
65
66 // Remove modal overlays
67 const overlays = document.querySelectorAll('.ReactModal__Overlay--after-open');
68 overlays.forEach(overlay => {
69 console.log('Removing modal overlay');
70 overlay.remove();
71 });
72 }
73
74 // Function to unlock premium features
75 function unlockPremiumFeatures() {
76 console.log('Unlocking premium features...');
77
78 // Remove premium warnings
79 removePremiumWarnings();
80
81 // Close blocking modals
82 closeBlockingModals();
83
84 // Enable all disabled premium buttons
85 const disabledButtons = document.querySelectorAll('button[disabled]');
86 disabledButtons.forEach(button => {
87 button.removeAttribute('disabled');
88 console.log('Enabled button:', button.textContent.trim());
89 });
90
91 // Remove any overlay or blocking elements
92 const overlays = document.querySelectorAll('[class*="overlay"], [class*="paywall"], [class*="premium-lock"]');
93 overlays.forEach(overlay => {
94 overlay.remove();
95 console.log('Removed overlay element');
96 });
97
98 // Re-enable body scrolling if it was disabled by modal
99 document.body.style.overflow = '';
100 }
101
102 // Debounce function to prevent excessive calls
103 function debounce(func, wait) {
104 let timeout;
105 return function executedFunction(...args) {
106 const later = () => {
107 clearTimeout(timeout);
108 func(...args);
109 };
110 clearTimeout(timeout);
111 timeout = setTimeout(later, wait);
112 };
113 }
114
115 // Initialize when DOM is ready
116 function init() {
117 console.log('Initializing Premium Field Unlocker...');
118
119 // Run immediately
120 unlockPremiumFeatures();
121
122 // Watch for DOM changes to catch dynamically added premium warnings
123 const observer = new MutationObserver(debounce(() => {
124 unlockPremiumFeatures();
125 }, 500));
126
127 // Start observing
128 observer.observe(document.body, {
129 childList: true,
130 subtree: true
131 });
132
133 console.log('Premium Field Unlocker - Active and monitoring');
134 }
135
136 // Wait for page to be ready
137 if (document.readyState === 'loading') {
138 document.addEventListener('DOMContentLoaded', init);
139 } else {
140 init();
141 }
142
143})();