Complete guide to installing and using the XActions browser extension for X/Twitter automation.
- Installation
- First Launch
- Popup Overview
- Automations Reference
- Dashboard & Filtering
- Activity Log
- Settings
- Keyboard Shortcuts
- Right-Click Menus
- Rate Limits & Safety
- Troubleshooting
- FAQ
- Open
chrome://extensions/(oredge://extensions//brave://extensions/) - Enable Developer mode (toggle in the top-right corner)
- Click Load unpacked
- Select the
extension/directory from the XActions repository - The XA icon appears in your toolbar
- Pin it — right-click the icon → Pin for easy access
- Open
about:debugging#/runtime/this-firefox - Click Load Temporary Add-on…
- Select
extension/manifest.json - 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.
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
On first install, a Welcome to XActions modal appears:
- Review the featured automations (Auto-Liker, Smart Unfollow, Video Downloader, Thread Reader)
- The "Enable popular features" checkbox is pre-checked — this auto-configures Video Downloader and Thread Reader with sensible defaults
- Click Get Started to dismiss
You can always reconfigure these in each card's settings later.
The popup has three tabs:
| Element | Description |
|---|---|
| XA logo | Brand identifier |
| Green/grey dot | Connection status — green when active tab is x.com |
| ⏸ button | Pause/Resume all automations (preserves state) |
| ⏹ red button | Emergency Stop — instantly halts everything |
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
Shows your X account name, handle, and avatar (scraped from the page DOM when connected).
- 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
- Filter dropdown — Filter log entries by automation
- Clear button — Wipe the log
- Scrollable log — Relative timestamps ("2m ago"), color-coded by type
- Global delay settings (min/max ms)
- Debug logging toggle
- Export/Import/Reset buttons
- GitHub link and version
Category: Growth | Navigate to: Home feed or any profile
Scrolls the feed and likes tweets matching your keywords.
| Setting | Type | Default | Description |
|---|---|---|---|
| Keywords | text (comma-separated) | empty (= like all) | Only like tweets containing these words |
| Max likes per session | number | 20 | Stop after this many likes |
| Speed | preset (Safe/Normal/Fast) | Normal | Controls delay between actions |
| Delay between actions | range slider | 2.0s — 5.0s | Fine-tune timing |
How it works:
- Scans visible tweets for
[data-testid="tweet"] - Checks keyword match (empty = all tweets)
- Skips ads, already-liked tweets, replies
- Clicks the heart button
- Scrolls 800px, waits, repeats
- Stops at max likes or stop button press
Rate limit: Max 200 likes/day (enforced internally)
Category: Growth | Navigate to: x.com/YOUR_USERNAME/following
Unfollows users who don't follow you back.
| Setting | Type | Default | Description |
|---|---|---|---|
| Days to wait | number | 3 | Skip users you followed recently |
| Max unfollows per session | number | 50 | Session limit |
| Whitelist | text (comma-separated) | empty | Usernames to never unfollow |
| Speed | preset | Normal | Action pacing |
| Dry run | checkbox | off | Preview mode — logs unfollows without executing |
Prerequisites: You must be on your /following page.
How it works:
- Scans
[data-testid="UserCell"]elements - Checks if
userFollowIndicatorexists (= follows you back → skip) - Checks whitelist
- Clicks unfollow → confirms the dialog
- Scrolls and repeats
Category: Growth | Navigate to: Any page (navigates automatically)
Searches for keywords on X and follows matching users.
| Setting | Type | Default | Description |
|---|---|---|---|
| Keywords | text (comma-separated) | — | Search terms |
| Max follows per keyword | number | 10 | Limit per keyword |
| Max follows total | number | 30 | Session cap |
| Min followers on user | number | 100 | Quality filter |
| Speed | preset | Safe | Slower by default for safety |
| Must have bio | checkbox | off | Skip accounts with empty bios |
How it works:
- For each keyword, navigates to
x.com/search?q={keyword}&f=user - Scans user cells, checks min followers
- Clicks follow button
- Moves to next keyword when per-keyword limit reached
Rate limit: Max 100 follows/day (enforced internally)
Category: Growth | Navigate to: Home feed
All-in-one automation that runs like, follow, and unfollow phases in sequence.
| Setting | Type | Default | Description |
|---|---|---|---|
| Keywords | text | — | Filter for like phase |
| Session duration | number (minutes) | 30 | Total runtime |
| Max likes | number | 30 | Like phase limit |
| Max follows | number | 20 | Follow phase limit |
| Max unfollows | number | 15 | Unfollow phase limit |
| Speed | preset | Safe | Conservative pacing |
| Enable follow | checkbox | ✓ | Include follow phase |
| Enable like | checkbox | ✓ | Include like phase |
| Enable unfollow | checkbox | ✓ | Include unfollow phase |
How it works:
- Phase 1 (Like): Scrolls feed, likes keyword-matching tweets
- Phase 2 (Follow): Placeholder — not yet implemented
- Phase 3 (Unfollow): Placeholder — not yet implemented
- Stops at session duration or all phase limits reached
Category: Growth | Navigate to: A user's profile or any feed
Auto-replies to new posts with random comments from your list.
| Setting | Type | Default | Description |
|---|---|---|---|
| Comments | text (comma-separated) | — | Pool of comments to randomly pick from |
| Keywords filter | text | empty (= all posts) | Only reply to posts matching these words |
| Check interval | number (seconds) | 60 | How often to scan for new posts |
| Max comments per session | number | 5 | Session limit |
How it works:
- Scans tweets, skips already-commented
- Checks keyword filter
- Clicks reply button, waits for textbox
- Types a random comment from pool using
execCommand('insertText') - Clicks the tweet/submit button
- Waits check interval, repeats
Category: Growth | Navigate to: A specific tweet (x.com/user/status/12345)
Follows users who liked or retweeted a specific tweet.
| Setting | Type | Default | Description |
|---|---|---|---|
| Mode | select | Likers | Likers or Retweeters |
| Max follows | number | 30 | Session limit |
| Min followers | number | 50 | Quality filter |
| Speed | preset | Safe | Conservative pacing |
Prerequisites: You must be viewing a tweet page (URL contains /status/).
How it works:
- Clicks the "likes" link on the tweet
- Scans the likers/retweeters list
- Follows users meeting the min followers threshold
- Scrolls to load more users
Category: Tools | Navigate to: Any feed or tweet page
Adds a ⬇ download button to tweets that contain video.
| Setting | Type | Default | Description |
|---|---|---|---|
| Quality | select | Highest | Preferred quality: Highest, 720p, 480p |
| Auto-download | checkbox | off | Download on detection without clicking |
| Show button | checkbox | ✓ | Add ⬇ button to tweets with video |
How it works:
- Uses MutationObserver to continuously watch for new tweets
- For each tweet with a
<video>element, injects a styled ⬇ button into the action bar - On click: extracts video URL from
<video src>,<source>, ora[href*=".mp4"] - Triggers download via
<a download>element - Runs persistently until stopped
Also available via right-click: Right-click any tweet → "Download video (XActions)"
Category: Analytics | Navigate to: x.com/YOUR_USERNAME/followers
Detects unfollowers by comparing follower snapshots over time.
| Setting | Type | Default | Description |
|---|---|---|---|
| Check frequency | number (hours) | 24 | How often to auto-check |
| Notifications | checkbox | ✓ | Browser notifications for unfollowers |
| Keep history | checkbox | ✓ | Store unfollower history (max 50 entries) |
Prerequisites: You must be on your /followers page.
How it works:
- Scrolls your followers page, collects all usernames into a Set
- Stops after 5 consecutive scrolls with no new users (or 100 scroll attempts)
- Loads previous snapshot from localStorage
- Computes diff: unfollowers (in previous but not current) and new followers
- Logs results, saves current snapshot with timestamp
Category: Analytics | Navigate to: Your profile (tweets tab)
Analyzes engagement patterns to find optimal posting times.
| Setting | Type | Default | Description |
|---|---|---|---|
| Tweets to analyze | number | 50 | Sample size |
| Timezone | select | Local | Local time or UTC |
How it works:
- Scrolls your tweets, extracts: datetime, likes, retweets, replies (from
aria-labelon engagement buttons) - Groups by hour (0–23) and day (Mon–Sun)
- Averages engagement per time slot
- Sorts descending, logs top 3 hours and best day
- Saves results to localStorage
Category: Tools | Navigate to: Any feed
Adds an "Unroll 🧵" button to detected threads and shows a clean readable overlay.
| Setting | Type | Default | Description |
|---|---|---|---|
| Show Unroll button | checkbox | ✓ | Add 🧵 button to thread tweets |
| Auto-detect threads | checkbox | ✓ | Automatically find threads |
| Max tweets to unroll | number | 50 | Limit per thread |
How it works:
- Uses MutationObserver to watch for new tweets
- Detects threads via: "Show this thread" link text,
tweet-thread-linetestid, orborder-leftstyles - Injects 🧵 button into action bars
- On click: collects all tweet texts, shows fullscreen overlay with numbered tweets
- "📋 Copy Thread" button copies formatted text to clipboard
Also available via right-click: Right-click any tweet → "Unroll thread (XActions)"
Category: Analytics | Navigate to: Your profile
Calculates your engagement rate and shows a floating overlay.
| Setting | Type | Default | Description |
|---|---|---|---|
| Show overlay | checkbox | ✓ | Display stats panel on your profile |
| Track daily | checkbox | ✓ | Save daily snapshots (max 90 days) |
| Tweets to sample | number | 20 | Sample size |
How it works:
- Scrolls your profile, collects likes/retweets/replies/views from
aria-labelon action buttons - Computes: engagement rate (total engagement / total views), avg likes, avg RTs, avg replies
- Injects a fixed-position overlay (bottom-right) with a 2×2 stats grid
- Saves to localStorage; if track daily enabled, appends to history
Also available via right-click: Right-click on any profile → "Analyze account (XActions)"
The 4-stat grid at the top of the Automations tab:
| Stat | Description |
|---|---|
| Running | Number of currently active automations (green when > 0) |
| Today | Total actions performed today (resets at midnight) |
| Total | All-time action count across all automations |
| Uptime | Time since the earliest running automation started |
Click a category pill to filter cards:
| Filter | Shows |
|---|---|
| All | All 11 cards |
| Growth | Auto-Liker, Smart Unfollow, Keyword Follow, Growth Suite, Auto-Commenter, Follow Engagers |
| Tools | Video Downloader, Thread Reader |
| Analytics | Who 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"
The Activity tab shows a real-time log of all automation events.
| Icon | Type | Color | Description |
|---|---|---|---|
| start | Blue | Automation started | |
| ⏹ | stop | Yellow | Automation stopped |
| 🔧 | action | White | Individual action performed (like, follow, etc.) |
| ✅ | complete | Green | Automation finished its run |
| ❌ | error | Red | Error occurred |
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
Entries show relative time ("2m ago", "1h ago") by default. Hover to see the exact time.
- Max 500 entries stored (oldest pruned automatically)
- Max 100 entries displayed at once
| Setting | Default | Description |
|---|---|---|
| Default min delay | 2000ms | Minimum wait between actions |
| Default max delay | 5000ms | Maximum wait between actions |
| Debug logging | On | Enable console.log output in browser DevTools |
Global settings auto-save on change.
| Button | Action |
|---|---|
| Export settings | Downloads all settings as xactions-settings-YYYY-MM-DD.json |
| Import settings | Upload a previously exported JSON file |
| Reset all data | Clears ALL storage (requires confirmation) |
| Shortcut | Action |
|---|---|
Ctrl + Shift + S |
Emergency stop all automations |
Ctrl + Shift + P |
Pause / Resume all automations |
/ |
Focus the search bar |
Esc |
Clear search and unfocus |
Right-click on any x.com page to access:
| Menu Item | Action |
|---|---|
| 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.
- 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
| Preset | Min Delay | Max Delay | Use Case |
|---|---|---|---|
| Safe | 3.0s | 6.0s | New accounts, conservative use |
| Normal | 2.0s | 5.0s | Standard operation |
| Fast | 1.0s | 2.5s | Experienced users only — higher risk |
- 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
Symptom: Grey dot, disconnected banner
Fix:
- Make sure you're on
x.comortwitter.com - Refresh the page
- If still disconnected, go to
chrome://extensions/, find XActions, click the reload ↻ button
Symptom: Started but 0 actions
Fix:
- Check you're on the correct page for that automation (see table above)
- Check the Activity tab for error messages
- Ensure keywords match actual tweet content (empty = match all)
- Open DevTools console (F12) and check for errors
Symptom: Yellow "Rate limit detected" banner
Fix:
- Click Dismiss
- Wait 15–30 minutes
- Reduce speed to Safe
- Lower max action limits
Symptom: Settings reset when reopening popup
Fix:
- Check that
chrome.storage.localisn't full (5MB limit) - Try Export → Reset All → Import
- Reload the extension
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.