XActions Extension

February 25, 2026 · View on GitHub

Complete guide to installing and using the XActions browser extension for X/Twitter automation.


Table of Contents


Installation

Chrome / Edge / Brave (Load Unpacked)

  1. Open chrome://extensions/ (or edge://extensions/ / brave://extensions/)
  2. Enable Developer mode (toggle in the top-right corner)
  3. Click Load unpacked
  4. Select the extension/ directory from the XActions repository
  5. The XA icon appears in your toolbar
  6. Pin it — right-click the icon → Pin for easy access

Firefox (Temporary Add-on)

  1. Open about:debugging#/runtime/this-firefox
  2. Click Load Temporary Add-on…
  3. Select extension/manifest.json
  4. The XA icon appears in your toolbar

Note: Firefox temporary add-ons are removed when Firefox closes. For persistent installation, the extension must be signed via addons.mozilla.org.

Verify Installation

After loading, navigate to x.com. Click the XA icon:

  • Green dot in the header = Connected to X ✓
  • Grey dot = Not on an X/Twitter tab — navigate to x.com first

First Launch

On first install, a Welcome to XActions modal appears:

  1. Review the featured automations (Auto-Liker, Smart Unfollow, Video Downloader, Thread Reader)
  2. The "Enable popular features" checkbox is pre-checked — this auto-configures Video Downloader and Thread Reader with sensible defaults
  3. Click Get Started to dismiss

You can always reconfigure these in each card's settings later.


The popup has three tabs:

ElementDescription
XA logoBrand identifier
Green/grey dotConnection status — green when active tab is x.com
⏸ buttonPause/Resume all automations (preserves state)
⏹ red buttonEmergency Stop — instantly halts everything

Disconnected Banner

When the active tab is not x.com, a prominent yellow banner appears:

🔗 Not connected to X — Open x.com in a tab to start using automations

Account Info

Shows your X account name, handle, and avatar (scraped from the page DOM when connected).

Automations Tab

  • Dashboard — 4-stat grid: Running (count), Today (actions today), Total (all-time), Uptime (session duration)
  • Category filters — [All] [Growth] [Tools] [Analytics] pill buttons
  • Search bar — Type to filter automations by name or keywords
  • 11 automation cards — Each with status badge, progress bar, settings panel

Activity Tab

  • Filter dropdown — Filter log entries by automation
  • Clear button — Wipe the log
  • Scrollable log — Relative timestamps ("2m ago"), color-coded by type

Settings Tab

  • Global delay settings (min/max ms)
  • Debug logging toggle
  • Export/Import/Reset buttons
  • GitHub link and version

Automations Reference

❤️ Auto-Liker

Category: Growth | Navigate to: Home feed or any profile

Scrolls the feed and likes tweets matching your keywords.

SettingTypeDefaultDescription
Keywordstext (comma-separated)empty (= like all)Only like tweets containing these words
Max likes per sessionnumber20Stop after this many likes
Speedpreset (Safe/Normal/Fast)NormalControls delay between actions
Delay between actionsrange slider2.0s — 5.0sFine-tune timing

How it works:

  1. Scans visible tweets for [data-testid="tweet"]
  2. Checks keyword match (empty = all tweets)
  3. Skips ads, already-liked tweets, replies
  4. Clicks the heart button
  5. Scrolls 800px, waits, repeats
  6. Stops at max likes or stop button press

Rate limit: Max 200 likes/day (enforced internally)


👋 Smart Unfollow

Category: Growth | Navigate to: x.com/YOUR_USERNAME/following

Unfollows users who don't follow you back.

SettingTypeDefaultDescription
Days to waitnumber3Skip users you followed recently
Max unfollows per sessionnumber50Session limit
Whitelisttext (comma-separated)emptyUsernames to never unfollow
SpeedpresetNormalAction pacing
Dry runcheckboxoffPreview mode — logs unfollows without executing

Prerequisites: You must be on your /following page.

How it works:

  1. Scans [data-testid="UserCell"] elements
  2. Checks if userFollowIndicator exists (= follows you back → skip)
  3. Checks whitelist
  4. Clicks unfollow → confirms the dialog
  5. Scrolls and repeats

🔍 Keyword Follow

Category: Growth | Navigate to: Any page (navigates automatically)

Searches for keywords on X and follows matching users.

SettingTypeDefaultDescription
Keywordstext (comma-separated)—Search terms
Max follows per keywordnumber10Limit per keyword
Max follows totalnumber30Session cap
Min followers on usernumber100Quality filter
SpeedpresetSafeSlower by default for safety
Must have biocheckboxoffSkip accounts with empty bios

How it works:

  1. For each keyword, navigates to x.com/search?q={keyword}&f=user
  2. Scans user cells, checks min followers
  3. Clicks follow button
  4. Moves to next keyword when per-keyword limit reached

Rate limit: Max 100 follows/day (enforced internally)


🚀 Growth Suite

Category: Growth | Navigate to: Home feed

All-in-one automation that runs like, follow, and unfollow phases in sequence.

SettingTypeDefaultDescription
Keywordstext—Filter for like phase
Session durationnumber (minutes)30Total runtime
Max likesnumber30Like phase limit
Max followsnumber20Follow phase limit
Max unfollowsnumber15Unfollow phase limit
SpeedpresetSafeConservative pacing
Enable followcheckbox✓Include follow phase
Enable likecheckbox✓Include like phase
Enable unfollowcheckbox✓Include unfollow phase

How it works:

  1. Phase 1 (Like): Scrolls feed, likes keyword-matching tweets
  2. Phase 2 (Follow): Placeholder — not yet implemented
  3. Phase 3 (Unfollow): Placeholder — not yet implemented
  4. Stops at session duration or all phase limits reached

💬 Auto-Commenter

Category: Growth | Navigate to: A user's profile or any feed

Auto-replies to new posts with random comments from your list.

SettingTypeDefaultDescription
Commentstext (comma-separated)—Pool of comments to randomly pick from
Keywords filtertextempty (= all posts)Only reply to posts matching these words
Check intervalnumber (seconds)60How often to scan for new posts
Max comments per sessionnumber5Session limit

How it works:

  1. Scans tweets, skips already-commented
  2. Checks keyword filter
  3. Clicks reply button, waits for textbox
  4. Types a random comment from pool using execCommand('insertText')
  5. Clicks the tweet/submit button
  6. Waits check interval, repeats

👥 Follow Engagers

Category: Growth | Navigate to: A specific tweet (x.com/user/status/12345)

Follows users who liked or retweeted a specific tweet.

SettingTypeDefaultDescription
ModeselectLikersLikers or Retweeters
Max followsnumber30Session limit
Min followersnumber50Quality filter
SpeedpresetSafeConservative pacing

Prerequisites: You must be viewing a tweet page (URL contains /status/).

How it works:

  1. Clicks the "likes" link on the tweet
  2. Scans the likers/retweeters list
  3. Follows users meeting the min followers threshold
  4. Scrolls to load more users

🎬 Video Downloader

Category: Tools | Navigate to: Any feed or tweet page

Adds a ⬇ download button to tweets that contain video.

SettingTypeDefaultDescription
QualityselectHighestPreferred quality: Highest, 720p, 480p
Auto-downloadcheckboxoffDownload on detection without clicking
Show buttoncheckbox✓Add ⬇ button to tweets with video

How it works:

  1. Uses MutationObserver to continuously watch for new tweets
  2. For each tweet with a <video> element, injects a styled ⬇ button into the action bar
  3. On click: extracts video URL from <video src>, <source>, or a[href*=".mp4"]
  4. Triggers download via <a download> element
  5. Runs persistently until stopped

Also available via right-click: Right-click any tweet → "Download video (XActions)"


🔔 Who Unfollowed Me

Category: Analytics | Navigate to: x.com/YOUR_USERNAME/followers

Detects unfollowers by comparing follower snapshots over time.

SettingTypeDefaultDescription
Check frequencynumber (hours)24How often to auto-check
Notificationscheckbox✓Browser notifications for unfollowers
Keep historycheckbox✓Store unfollower history (max 50 entries)

Prerequisites: You must be on your /followers page.

How it works:

  1. Scrolls your followers page, collects all usernames into a Set
  2. Stops after 5 consecutive scrolls with no new users (or 100 scroll attempts)
  3. Loads previous snapshot from localStorage
  4. Computes diff: unfollowers (in previous but not current) and new followers
  5. Logs results, saves current snapshot with timestamp

📊 Best Time to Post

Category: Analytics | Navigate to: Your profile (tweets tab)

Analyzes engagement patterns to find optimal posting times.

SettingTypeDefaultDescription
Tweets to analyzenumber50Sample size
TimezoneselectLocalLocal time or UTC

How it works:

  1. Scrolls your tweets, extracts: datetime, likes, retweets, replies (from aria-label on engagement buttons)
  2. Groups by hour (0–23) and day (Mon–Sun)
  3. Averages engagement per time slot
  4. Sorts descending, logs top 3 hours and best day
  5. Saves results to localStorage

🧵 Thread Reader

Category: Tools | Navigate to: Any feed

Adds an "Unroll 🧵" button to detected threads and shows a clean readable overlay.

SettingTypeDefaultDescription
Show Unroll buttoncheckbox✓Add 🧵 button to thread tweets
Auto-detect threadscheckbox✓Automatically find threads
Max tweets to unrollnumber50Limit per thread

How it works:

  1. Uses MutationObserver to watch for new tweets
  2. Detects threads via: "Show this thread" link text, tweet-thread-line testid, or border-left styles
  3. Injects 🧵 button into action bars
  4. On click: collects all tweet texts, shows fullscreen overlay with numbered tweets
  5. "📋 Copy Thread" button copies formatted text to clipboard

Also available via right-click: Right-click any tweet → "Unroll thread (XActions)"


⚡ Quick Stats

Category: Analytics | Navigate to: Your profile

Calculates your engagement rate and shows a floating overlay.

SettingTypeDefaultDescription
Show overlaycheckbox✓Display stats panel on your profile
Track dailycheckbox✓Save daily snapshots (max 90 days)
Tweets to samplenumber20Sample size

How it works:

  1. Scrolls your profile, collects likes/retweets/replies/views from aria-label on action buttons
  2. Computes: engagement rate (total engagement / total views), avg likes, avg RTs, avg replies
  3. Injects a fixed-position overlay (bottom-right) with a 2×2 stats grid
  4. Saves to localStorage; if track daily enabled, appends to history

Also available via right-click: Right-click on any profile → "Analyze account (XActions)"


Dashboard & Filtering

Dashboard Stats

The 4-stat grid at the top of the Automations tab:

StatDescription
RunningNumber of currently active automations (green when > 0)
TodayTotal actions performed today (resets at midnight)
TotalAll-time action count across all automations
UptimeTime since the earliest running automation started

Category Filters

Click a category pill to filter cards:

FilterShows
AllAll 11 cards
GrowthAuto-Liker, Smart Unfollow, Keyword Follow, Growth Suite, Auto-Commenter, Follow Engagers
ToolsVideo Downloader, Thread Reader
AnalyticsWho Unfollowed Me, Best Time to Post, Quick Stats

Type in the search bar to filter by name or keywords. Press / to focus, Esc to clear.

If no cards match, an empty state message appears: "🔍 No automations match your filter"


Activity Log

The Activity tab shows a real-time log of all automation events.

Entry Types

IconTypeColorDescription
▶️startBlueAutomation started
⏹stopYellowAutomation stopped
🔧actionWhiteIndividual action performed (like, follow, etc.)
✅completeGreenAutomation finished its run
❌errorRedError occurred

Filtering

Use the dropdown to filter by automation:

  • All — Show everything
  • ❤️ Liker, 👋 Unfollow, 🔍 Follow, 🚀 Growth, 💬 Commenter, 👥 Engagers — Growth automations
  • 🎬 Video, 🧵 Thread — Tool automations
  • 🔔 Unfollower, 📊 Best Time, ⚡ Stats — Analytics automations

Timestamps

Entries show relative time ("2m ago", "1h ago") by default. Hover to see the exact time.

Limits

  • Max 500 entries stored (oldest pruned automatically)
  • Max 100 entries displayed at once

Settings

Global Settings

SettingDefaultDescription
Default min delay2000msMinimum wait between actions
Default max delay5000msMaximum wait between actions
Debug loggingOnEnable console.log output in browser DevTools

Global settings auto-save on change.

Data Management

ButtonAction
Export settingsDownloads all settings as xactions-settings-YYYY-MM-DD.json
Import settingsUpload a previously exported JSON file
Reset all dataClears ALL storage (requires confirmation)

Keyboard Shortcuts

ShortcutAction
Ctrl + Shift + SEmergency stop all automations
Ctrl + Shift + PPause / Resume all automations
/Focus the search bar
EscClear search and unfocus

Right-Click Menus

Right-click on any x.com page to access:

Menu ItemAction
Download video (XActions)Triggers Video Downloader on current page
Unroll thread (XActions)Triggers Thread Reader on current tweet
Analyze account (XActions)Triggers Quick Stats on current profile

These work even if the corresponding automation isn't running in the popup.


Rate Limits & Safety

Built-in Protections

  • Hourly/daily action caps: Max 200 likes/day, 100 follows/day (enforced internally)
  • Randomized delays: All actions have random delay jitter to appear human
  • Rate limit detection: Extension monitors HTTP 429 responses from X's API
  • Auto-pause: When rate limit detected, all automations pause automatically
  • Warning banner: Yellow banner appears in popup with "Dismiss" button

Speed Presets

PresetMin DelayMax DelayUse Case
Safe3.0s6.0sNew accounts, conservative use
Normal2.0s5.0sStandard operation
Fast1.0s2.5sExperienced users only — higher risk

Recommendations

  • Start with Safe speed and low action limits
  • Don't run more than 2 growth automations simultaneously
  • Monitor the Activity tab for any error messages
  • If you get rate-limited, wait at least 15 minutes before resuming

Troubleshooting

Extension Not Connecting

Symptom: Grey dot, disconnected banner

Fix:

  1. Make sure you're on x.com or twitter.com
  2. Refresh the page
  3. If still disconnected, go to chrome://extensions/, find XActions, click the reload ↻ button

Automation Not Working

Symptom: Started but 0 actions

Fix:

  1. Check you're on the correct page for that automation (see table above)
  2. Check the Activity tab for error messages
  3. Ensure keywords match actual tweet content (empty = match all)
  4. Open DevTools console (F12) and check for errors

Rate Limited

Symptom: Yellow "Rate limit detected" banner

Fix:

  1. Click Dismiss
  2. Wait 15–30 minutes
  3. Reduce speed to Safe
  4. Lower max action limits

Settings Not Saving

Symptom: Settings reset when reopening popup

Fix:

  1. Check that chrome.storage.local isn't full (5MB limit)
  2. Try Export → Reset All → Import
  3. Reload the extension

FAQ

Q: Does this use the X/Twitter API? No. XActions operates entirely through browser DOM automation — it clicks real buttons on the real x.com page. No API keys, no fees.

Q: Can X detect this? XActions mimics human behavior with randomized delays, but no automation is 100% undetectable. Use conservative settings and don't exceed daily limits.

Q: Does it work when the popup is closed? Persistent automations (Video Downloader, Thread Reader) run via MutationObserver in the page and stay active as long as the x.com tab is open. Action-based automations (Auto-Liker, etc.) run in the page context and continue even when the popup is closed.

Q: Firefox support? Works as a temporary add-on. Most features work with Manifest V3 in Firefox 109+. Full Firefox Add-ons Store support is planned.

Q: Can I run multiple automations at once? Yes. The dashboard shows how many are running simultaneously. Be cautious — running too many at once increases rate limit risk.

Q: Where is my data stored? Everything is stored locally in chrome.storage.local — never sent to any server. Export to back up your settings.

Q: How do I uninstall? Go to chrome://extensions/, find XActions, click Remove. All stored data is deleted automatically.