Upwork Proposal Character Counter
Free to download on every platform. Comes pre-installed on BotFone, BotPad and BotFlip — with extra free apps included.
About this app
WHAT IT DOES
Upwork Proposal Character Counter automatically detects proposal text areas on Upwork job pages and adds a real-time counter badge that shows the current character count, word count, and estimated reading time as you type. The counter updates instantly with every keystroke, helping you stay within Upwork's cover letter limits. A color-coded warning system highlights when you are approaching the character limit (yellow) or have exceeded it (red), so you can adjust your proposal length before submitting.
WHERE IT RUNS
This extension works exclusively on Upwork at www.upwork.com. It functions on job proposal pages, including the cover letter text area, proposal submission forms, and any page with a textarea for writing proposals. The tool works across all Upwork job categories and adapts to the dynamic page structure.
HOW TO USE
Install the extension and navigate to any Upwork job page with a proposal text area. A compact counter badge appears on the textarea showing the current character count, word count, and estimated reading time. The badge updates in real-time as you type. Use the overlay panel to customize the experience: toggle character count on or off, toggle word count on or off, toggle reading time estimation on or off, adjust the character warning limit (default 80% of the limit), and choose the counter position (Bottom Right, Top Right, Bottom Left, or Top Left). Click "Refresh Counters" to manually reattach counters if they don't appear.
TECHNICAL SECTION — TEXTAREA DETECTION AND REAL-TIME COUNTING
The extension uses a multi-strategy detection engine to find proposal textareas on Upwork pages. It searches for textareas with placeholders or names containing "cover letter," "proposal," or "application." It also scans for textareas within elements with relevant class names. For each detected textarea, the tool creates a wrapper div and positions a counter badge relative to the textarea. The counter updates on every input event, recalculating character count (string length), word count (splitting by whitespace), and estimated reading time (words / 200 wpm). Color-coded warnings are triggered when the character count exceeds the configured warning threshold (default 80% of the limit). All text processing occurs locally, and the badge is styled using inline CSS.
THE PANEL — DRAG / PER-SITE POSITION / SNAP / COLLAPSE / RESIZE / ESCAPE
The overlay panel is fully interactive and designed for seamless multitasking. Drag it anywhere on the screen using the handle at the top of the panel; the position is saved per site so it stays where you left it across sessions. The panel includes a snap-to-edge feature that gently anchors the overlay to the nearest screen edge when released. Click the collapse button to minimize the panel to a compact pill showing the current counter status; expand it again with a single click. Resize the panel vertically by dragging the bottom-right corner to view more controls. Press the Escape key at any time to instantly close the overlay; it reappears on the next page navigation or refresh.
PLEASE NOTE
This extension requires the free BotGentz companion extension to function, as it provides the underlying content script injection and cross-origin communication framework. No personal data, browsing history, or proposal content is stored, transmitted, or shared. All text processing occurs entirely locally in your browser; no information is sent to any external server. Settings are stored locally in your browser using GM_setValue and are never sent to any external server. The extension does not access or store login credentials, financial data, or personally identifiable information. The tool reads text you type in the proposal textarea and does not access Upwork's API or any private data. Upwork may update its page structure; the extension includes multiple detection strategies to maintain compatibility, but major redesigns may temporarily affect textarea detection. The reading time estimation is based on average reading speed (200 words per minute) and is provided for reference only.