Adiciona botões de copiar e baixar com um clique para mídias e links de tweets, e permite restaurar a grade de mídia clássica do perfil. Inclui painel de histórico com marcadores de texto, grupos personalizados, reordenação por arrastar, lightbox entre itens, modelos de nome de arquivo, atalhos /media pelo avatar e temas escuro/claro/personalizado.
📍 Author: GitHub | Script: Repository
Adds two buttons to every tweet's action bar — one for media, one for the tweet link — each opening a compact menu with copy and download options.
💡 Overview After installation, a 🎞️ Media Button and a 🔗 Link Button appear on every tweet. The media button lets you copy image and video URLs, preview them inline, or download them with structured filenames. A floating Download History Panel tracks every file you have saved, with group-based organisation, search, export, and a pin option that keeps it open as you navigate. A lightweight settings panel — accessible by hovering a configurable corner of the page — centralises all configuration without requiring the userscript manager menu.
After installation, two buttons are appended to the right side of every tweet's action row, alongside the native reply, retweet, and like buttons. A history tracker and settings panel are accessible from a configurable corner of any page (top-right by default).
| Icon | Feature Name | Where It Appears |
|---|---|---|
| 🎞️ | Media Button | Tweet action bar — rightmost position |
| 🔗 | Link Button | Tweet action bar — second from right |
| 📋 | History Panel | Configured corner of the page (appears after first download) |
| ⚙️ | Settings Panel | Configured corner of the page (hover to reveal) |
| 👤 | Avatar Media Shortcut | Top-left corner of any user avatar in the timeline |
Handles image and video URLs attached to any tweet.
Default: Menu Mode — Hover over the button for a brief moment (roughly half a second) and a compact menu appears automatically, no click needed (clicking the button also opens it right away). The menu offers the following options:
| Action | What it does |
|---|---|
| Copy URLs | Copies all media URLs to the clipboard as plain text, one per line |
| Copy with prefix | Copies media URLs with your configured prefix prepended in Markdown link format |
| Preview | Opens an inline preview — videos in a floating player with volume memory, keyboard navigation (← → ↑ ↓), and an Escape key shortcut to close; images in a card-style lightbox with a fan layout, dot pagination, and click-to-focus navigation between multiple photos |
| Download | Downloads all media files directly to your device |
Downloaded files are saved with the following default structured filename:
/* [twitter] DisplayName(@screenname)_YYYY.MM.DD_tweettext_tweetID_1.jpg
Example: [twitter] Jane(@janedoe)_2026.04.09_Hello world_1234567890_1.jpg */
This filename format is fully customisable — the Settings Panel includes a template editor where you can rearrange, add, or remove available fields (display name, handle, date, tweet text, tweet ID, and more) to build your own naming pattern. (Custom filenames must be turned on in the Settings Panel first; the default structured filename above is used until then.)
If one or more files fail to download, the button displays a warning with a partial success count (e.g., ⚠️ 2/3).
💡 An alternative interaction mode called Classic is also available, where each action is triggered by a different way of pressing the button instead of a menu. You can switch between Menu and Classic modes in the Settings Panel under the 🎞 Media section; a separate toggle there lets you customise what each interaction does (off by default, using a fixed set of actions until enabled).
Handles the tweet URL, with configurable domain output.
Default: Menu Mode — Hover over the button for a brief moment (roughly half a second) and a compact menu appears automatically, no click needed (clicking the button also opens it right away):
| Action | What it does |
|---|---|
| Copy link | Copies the tweet URL using your configured domain (default: x.com) |
| Copy with prefix | Copies the URL with your configured prefix prepended in Markdown link format |
| Save as Text Bookmark | Saves the tweet's text content to the History Panel — see Text Bookmarks below |
You can configure a custom domain (such as fixupx.com or vxtwitter.com) for the copy action via the settings panel. Clicking the same settings row again toggles back to x.com.
Available domains for both actions:
vxtwitter.comfixupx.comfxtwitter.comcunnyx.comfixvx.comtwitter.comx.com💡 An alternative interaction mode called Classic is also available, where each action is triggered by a different way of pressing the button instead of a menu. You can switch between Menu and Classic modes in the Settings Panel under the 🔗 Link section; a separate toggle there lets you customise what each interaction does (off by default, using a fixed set of actions until enabled).
Keeps a complete record of every file you’ve downloaded with no history limit. Text bookmarks (see below) also appear here, in their own dedicated tab.
When a download finishes, a brief animation flies from the 🎞️ button to the 📋 button to confirm the record was successfully added to history.
Organise downloaded media into named groups — useful for sorting by project, topic, or date range.
Beyond media, you can also save the text content of a tweet on its own — useful for quotes, notes, or threads you want to revisit without keeping the media.
There is a hidden "Auto-Hide" toggle.
This script generates URLs using the following domains when configured as the link target. The script itself does not contact these services — it only constructs URLs that you copy to your clipboard.
| Domain | Type | Notes |
|---|---|---|
vxtwitter.com |
Third-party embed converter | Enables richer Twitter embeds in other platforms |
fixupx.com |
Third-party embed converter | Alternative embed fixer |
fxtwitter.com |
Third-party embed converter | Alternative embed fixer |
cunnyx.com |
Third-party embed converter | Alternative embed fixer |
fixvx.com |
Third-party embed converter | Alternative embed fixer |
twitter.com / x.com |
Official | Native tweet URLs |
⚠️ The third-party domains listed above have no affiliation with this script. Review their terms and privacy policies before using them.
💡 Media download contacts Twitter's own content delivery network to fetch files you have already viewed on the timeline — no credentials are sent to any service outside of Twitter/X.
⚠️ 2/3) appears if any file fails under both methods.| Situation | Impact | Recommended Action |
|---|---|---|
| Strict Content Security Policy on some pages | Media download may fall back to the secondary method | Navigate directly to twitter.com or x.com rather than embedded views |
The script is designed primarily for twitter.com and x.com. However, the Download History Panel is available on any domain — making it possible to review and manage your download records without navigating back to Twitter.
All Twitter-specific features (media button injection, fetch interception, DOM scanning) are automatically disabled on other domains. Only the lightweight history panel loads, with negligible resource usage.
By default, userscript managers only run a script on the domains listed in its @match rules. To access the History Panel on other sites, add the domain you want (e.g. https://discord.com/*) in your userscript manager's own script settings — this is a built-in capability of the manager itself, found under a settings/edit screen for the script (labelled things like User matches or Custom @match depending on the manager).
| Userscript Manager | Notes |
|---|---|
| Tampermonkey | Widely used, available for most major browsers |
| Violentmonkey | Open-source alternative |
| Greasemonkey | Firefox's original userscript manager |
| Scriptcat | Tampermonkey-compatible, with additional scripting features |
| Others | Any manager that supports @match rules will work the same way |
💡 The script will never inject Twitter-specific UI (media buttons, star pip, fetch hooks) on non-Twitter domains — only the History Panel sidebar loads, keeping the impact on other sites minimal.
⚠️ Some sites with strict Content Security Policies (e.g. certain internal tools or hardened web apps) may block userscript injection entirely. In that case no part of this script will run, regardless of the match rules configured.
Hover the configured corner of any twitter.com or x.com page (top-right by default) to reveal the ⚙️ button. Click it to open the panel. Changes take effect immediately without a page reload, except for language changes (which require a reload to apply).
🔗 Link section
x.com.[text].🎞 Media section
YYYY.MM.DD) and Western (DD.MM.YYYY) formats used in downloaded filenames.⭐ Groups section
📌 Corner Position section
🗂 History Panel section
All settings are also accessible from the userscript manager's menu (e.g., Tampermonkey, Violentmonkey).
The History Panel can be docked to either the left or right edge of the screen, collapsing into a thin tab when not in use.
Nine languages are built in: English, 繁體中文, 简体中文, 日本語, 한국어, Español, Português (BR), Français, Русский.
A Custom Language option is available via the Language panel:
{lang}, HTML tags, and emoji must be left unchanged.A loaded custom language can be cleared at any time from the same panel, reverting the UI to English.
Due to increasing maintenance costs, official translations are currently maintained up to Russian. Additional languages may be added based on user demand.
On the first launch after installation, a brief spotlight overlay highlights the Settings Panel entry point and explains the primary controls. The guide appears only once after installation.
⚠️ This script reads session data from your active Twitter / X session to enable a fallback method — used only when the standard approach cannot retrieve video URLs from the timeline.
| Data Type | Source | Purpose | Storage | Transmitted To |
|---|---|---|---|---|
| Anti-forgery token | Read from your browser's active Twitter / X session | Verify that requests originate from your own session when retrieving embedded video URLs | Never stored by the script | Twitter / X only |
| Session identifier | Read from your browser's active Twitter / X session | Identify your session when the standard video extraction method fails | Never stored by the script | Twitter / X only |
| Download history | Generated by the script on each download | Show past downloads in the History Panel | Saved locally on your device via the userscript manager | Not transmitted |
| Groups configuration | Created by you in the Settings Panel | Organise history records into named groups | Saved locally on your device via the userscript manager | Not transmitted |
This script does not collect, share, or transmit your credentials to any server outside of Twitter / X.
💡 Cookie access only occurs when the standard video extraction method fails — it is an automatic internal fallback, not an opt-in feature. No passwords, direct message content, or account credentials are read or stored at any point. Reviewing the source code before installation is always recommended.