// Tampermonkey Userscript
FunnyJunk
Ultimate Manager
Automate comment voting, manage targeted user lists, transfer lists between accounts, and customize the interface — all from a floating panel on any FunnyJunk page.
v10.0 Assembly Fix
Tampermonkey
funnyjunk.com
localStorage
01 — Overview
What does it do?
FJ Ultimate Manager injects a small floating control panel onto every FunnyJunk page. From that panel you can automatically upvote comments from all users — while either skipping or downvoting comments from a curated list of targeted users.
It's designed for power users who want to quickly sort through comment sections without clicking every single thumb manually, while still maintaining fine-grained control over specific accounts.
⚡
Automated Voting
Walks through every unprocessed comment on the page and votes in one pass, with a small delay between clicks to mimic human behaviour.
🎯
Targeted Users
Users on your permanent blocklist or checked via inline checkboxes are handled differently — skipped or downvoted depending on your chosen mode.
⚙️
Settings Page
Change the default voting mode, pick from 8 colour themes, and toggle whether the panel starts minimized — all saved automatically.
🔄
List Transfer
Export your blocklist as a portable string, share it, and merge it into any other browser or account with zero duplication.
02 — Installation
Installing the script
You need a userscript manager installed in your browser before the script will run.
Install a userscript manager
Tampermonkey is recommended and available for Chrome, Firefox, Edge, and Safari. Install it from your browser's extension store.
Open the script source
Navigate to the Greasyfork page or click the @downloadURL link at the top of the .user.js file.
Click "Install" in Tampermonkey
Tampermonkey will intercept the .user.js URL and prompt you with an install screen. Review the permissions and confirm.
Visit any FunnyJunk page
The floating panel will appear in the top-right corner within a second or two of page load. No refresh needed.
ℹ️
Auto-updates
Because the script includes an @updateURL, Tampermonkey will automatically check Greasyfork for newer versions and prompt you to update.
03 — Quick Start
Up and running in 60 seconds
Open a comment section on FunnyJunk
Any page with comments works — content pages, profiles, etc.
(Optional) Add users to target
Check the red checkbox next to a username inline, or open Settings → type usernames into Bulk Add, or use the Permanent List section of the main panel.
Choose a mode from the dropdown
Skip Targets will upvote everyone except your targeted users. Downvote Targets will upvote everyone else and downvote your targets.
Press START / STOP
The panel border turns red while running. The counter ticks down as comments are processed. Press again to stop early, or wait for "Finished!" to appear.
04 — Interface
Main panel reference
The main panel floats in the top-right corner of the page at all times. It has a fixed width of 220px and a dark background so it stays readable over any FunnyJunk layout.
Status text
Shows current state: Ready, Running…, N left, Finished!, or Stopped.
⚙ button
Opens the full Settings overlay panel. All persistent options live here.
_ button
Minimizes the panel to a small circular "M" bubble. Click the bubble to restore.
START / STOP
Begins or halts the automated voting pass. The panel border turns red while active.
Mode dropdown
Switches between Skip Targets and Downvote Targets. Changes take effect on the next run.
Permanent List
Collapsible section. Add users from the page dropdown, the scan button, or by typing a name manually.
⟳ Scan button
Re-scans the page for comment authors and refreshes the "Select from Page" dropdown. Also injects checkboxes next to any new names.
💡
Minimize to stay out of the way
If the panel overlaps content, click _ to collapse it to a small bubble. It remembers your last real position on the page.
05 — Voting Modes
Skip vs. Downvote
The mode dropdown controls what happens when the engine encounters a targeted user (someone on your permanent blocklist or checked via checkbox). All non-targeted users are always upvoted.
Skip Targets
The comment is marked as processed and moved past — no vote is cast. Use this when you simply don't want to engage with a user's content at all.
Downvote Targets
A downvote is fired on the comment. If the comment is already downvoted it's skipped to avoid toggling it back. Use this to actively push down targeted users.
⚠️
Already-voted comments
If you've already upvoted a comment in a previous session, its button will be in the active state and the engine will skip it automatically — it will not un-vote it.
06 — Blocklist
Permanent Blocklist
The permanent blocklist is stored in your browser's localStorage and persists between sessions. Every username is stored lowercase for consistent matching regardless of how the name appears on the page.
Adding users
There are four ways to add a user to the permanent list:
- Expand the Permanent List section, select a name from the Select from Page dropdown, and click Add Selected User.
- Type a username into the manual input field and click Add Manual User.
- Use Settings → Bulk Add — paste many names at once.
- Use Settings → Import & Merge — merge from an exported list string.
Removing users
Click the ❌ icon next to any name in the permanent list view in the main panel, or click ✕ next to the name in the Settings → Current Blocklist section.
💡
Temporary targeting with checkboxes
Red checkboxes appear inline next to usernames in the comment section. Checking one adds that user to a temporary session-only target set — they are not added to your permanent list. The checkbox approach is useful for one-off runs without cluttering your list.
07 — Inline Checkboxes
Per-comment targeting
When the script loads (or when you press the ⟳ scan button), it walks the DOM and injects a small red checkbox before each comment author's username link. Checking one marks that user as a target for the current run only.
ℹ️
Temporary — not saved
Checked checkboxes are read when you press START and are not written to localStorage. If you want to make a checked user permanent, add them via the Permanent List section or Settings → Bulk Add.
Checkboxes are injected once per unique author element. If you scroll down and new comments load dynamically, press ⟳ to scan the new content before starting a run.
08 — Settings
Settings panel overview
Click the ⚙ button in the panel header to open the Settings overlay. Changes are not saved until you click Save Settings — clicking the overlay background or Cancel discards unsaved changes.
Defaults
Skip Targets
Downvote Targets
Start minimized by default
[ Export · Import · Bulk Add · Blocklist sections below… ]
Settings are stored under the fj_manager_settings key in localStorage and loaded on every page load.
09 — Themes
Color themes
Eight accent colors are available. The chosen color is applied to the panel border (when idle), the START button, the ⚙ button, the restore bubble, and mode/toggle highlights inside Settings.
💡
Live preview
Clicking a swatch in the Settings panel updates the CSS variables inside the overlay immediately — you can see the button and toggle colours change before saving.
10 — Default Options
Startup defaults
Default mode
Choose whether the mode dropdown opens on Skip Targets or Downvote Targets each time the page loads. The currently running mode is always shown in the main panel dropdown and can be changed per-session without going into Settings.
Start minimized
When enabled the panel will automatically minimize itself to the small "M" bubble as soon as it injects, keeping the page unobstructed. Toggle the bubble to expand the panel when you need it.
11 — List Transfer
Exporting your list
Settings → Export List converts your permanent blocklist into a compact, portable string using Base64 encoding around a JSON payload. The format is:
// Internal payload structure (before encoding)
{ "v": 1, "users": ["alice", "bob", "charlie"] }
// After btoa() encoding — what you actually copy/share
eyJ2IjoxLCJ1c2VycyI6WyJhbGljZSIsImJvYiIsImNoYXJsaWUiXX0=
Click Generate to produce the string, then 📋 Copy to put it in your clipboard. You can paste it into a text file, Discord message, or send it to another person.
ℹ️
No server involved
Everything happens locally in your browser. The export string contains only usernames — no personal data, no account info, no cookies.
12 — List Transfer
Importing & merging
Settings → Import & Merge accepts any valid export string. Paste it into the text area and click Merge into List.
- New usernames are added to your permanent blocklist immediately.
- Names already in your list are silently skipped — no duplicates are created.
- The result is reported: "Added 12 user(s) · 3 already in list".
- The blocklist view in Settings updates in real time.
⚠️
Invalid strings
If the string has been truncated or modified, the import will fail with an error message. Re-generate the export from the source browser and try again.
13 — List Transfer
Bulk add usernames
Settings → Bulk Add Usernames lets you paste a raw list of names — no encoding required. Supported formats:
// One per line
alice
bob
charlie
// Comma-separated
alice, bob, charlie
// Mixed
alice, bob
charlie
dave, eve
All names are lowercased and trimmed before saving. Duplicates are skipped automatically. Click Add All and the result is reported immediately.
14 — Reference
Data storage
All data is written to window.localStorage under two keys. No data leaves your browser.
| Key | Contains | Format |
|---|
| fj_user_blocklist | Your permanent targeted-user list, persisted across all sessions. | JSON array of lowercase strings — ["alice","bob"] |
| fj_manager_settings | Your chosen theme, default voting mode, and default-minimized toggle. | JSON object — {"theme":"blue","defaultMode":"skip","defaultMinimized":false} |
Clearing all data
To completely reset the script, open your browser's DevTools (F12), go to Application → Local Storage → funnyjunk.com, and delete both keys. Alternatively, run this in the DevTools console:
localStorage.removeItem('fj_user_blocklist');
localStorage.removeItem('fj_manager_settings');
15 — FAQ
Frequently asked questions
The panel isn't appearing on some pages — why?
The script waits for document.body to exist before injecting. On pages with unusual load sequences it may take a moment. If it never appears, check the Tampermonkey dashboard to confirm the script is enabled and matches the current URL.
Why does the scan button sometimes find fewer users than I expect?
The scan only picks up comments that are currently in the DOM. If FunnyJunk lazy-loads additional comments as you scroll, scroll down first and then press ⟳ to pick up the new ones before running.
Will clicking too fast get my account flagged?
The engine fires clicks with a 150ms delay between each one and dispatches full mouse event sequences (mouseover → mousedown → mouseup → click) to mimic human input. That said, automated voting at scale is always a potential ToS concern — use at your own discretion.
Can I use the same blocklist on multiple browsers or computers?
Yes — that's exactly what the Export/Import system is for. Export your list from Browser A, copy the string, paste it into Import & Merge on Browser B, and click Merge. Done.
Can I share my list with a friend?
Yes. The export string is plain text — paste it anywhere. Your friend pastes it into Import & Merge on their installation to add your targeted users to their list. Their existing list is not overwritten; names are merged.
How do I change the color theme?
Click ⚙ → scroll to Color Theme → click any swatch → click Save Settings. The entire panel updates immediately.
What happens if I check a checkbox AND the user is on my permanent list?
Both the checkbox and the permanent list are checked on each comment. Either condition triggers the target behaviour — there is no double effect or conflict.
16 — Changelog
Version history
v10.0
Full Settings overlay (⚙ button). 8 colour themes. Default mode and default-minimized options. Export / Import / Merge / Bulk Add list management. Separate settings storage key. CSS variable-driven theming.
v9.7
Selector fix for upvote buttons. Updated click engine logic to handle already-voted states. Restored missing UI assembly block. Added per-user inline checkboxes.
Earlier
Initial builds: basic auto-upvote, blocklist concept, minimize button, Greasyfork publishing.