Chrome Extension Β· MV3 Free v2.1.0

IMGLAB πŸ§ͺ
Image URL Exporter

Collect every original-resolution photo from any Twitter / X profile or hashtag search β€” with one click. Export a clean URL list, then batch-download thousands of images overnight. Built for Japanese and Chinese power users, artists, and photography communities.

∞
Images
collectable
1
Click to start
collecting
4K
Original res
JPEG export
0
Sign-up
required
IMGLAB Image URL Exporter β€” Extension Panel
Floating Panel Β· Injected into x.com

Everything You Need, Right on the Page

The IMGLAB panel lives in the bottom-right corner of x.com and twitter.com. It’s draggable, minimisable, and completely non-intrusive. Two tabs β€” Collect and Favourites β€” give you access to everything without ever leaving the page.

  • βœ“ Real-time stats: tweets seen, queue depth, images found, failed count
  • βœ“ Progress bar shows collection % at a glance
  • βœ“ Per-tweet download button injected into every tweet’s action bar
  • βœ“ History badge shows last download date + image count
  • βœ“ Top tab amber warning β€” knows when results are relevance-sorted
  • βœ“ Navigation guard prevents accidental data loss
πŸ”
Batch URL Collection

Scrapes tweet IDs from the DOM as you (or the auto-scroller) scrolls, calls Twitter’s private GraphQL API for each tweet, and extracts every original-resolution photo URL. Exports a tab-separated urls.txt ready for the companion downloader.

⬇️
Per-Tweet Download Button

A download icon is injected into every tweet’s action bar on x.com. One click fetches all photos in that tweet via the GraphQL API and downloads them immediately β€” no panel required. Already-downloaded tweets show a blue checkmark.

πŸ“œ
Auto-Scroll

Configurable auto-scroll keeps loading new tweets while collection runs. Stops automatically when the page bottom is reached or when no new tweets appear after 8 scroll steps.

πŸ“š
History Tracking

Remembers the newest tweet ID per user or hashtag. Next time you collect, IMGLAB automatically stops at the boundary β€” only grabbing new tweets since your last download. Zero duplicate work.

β˜…
Favourites

Star any user or hashtag to save them to the Favourites tab. One click takes you straight to their image search β€” with your configured min-faves filter already applied.

πŸ”™
Go Older Button

After each session, IMGLAB generates a until: search URL based on the oldest tweet found. Click Go Older to continue collecting further back in time β€” seamless session chaining.

Collection Pipeline β€” From Page to File
1
Navigate & Start

Go to any Twitter profile media tab or run a from:username filter:images search. Open the IMGLAB panel (bottom-right) and click β–Ά Start. The extension immediately scans all visible tweet articles.

↓
2
Auto-Scroll & Queue

Auto-scroll loads more tweets while the API queue processor works in the background. Each tweet ID is sent to Twitter’s TweetResultByRestId GraphQL endpoint β€” extracting all photo URLs, filenames, and timestamps. Rate limits are handled automatically with countdown timers.

↓
3
Auto-Export & History

When collection finishes, urls.txt downloads automatically β€” preventing data loss if you click Go Older without manually exporting. History (newest tweet ID) is saved to chrome.storage.local so the next session only collects new content.

↓
4
Batch Download

Load the exported twitter_urls_username_xxx.txt into the IMGLAB Image Downloader (see below). It reads every URL, downloads images in parallel, skips already-existing files, and organises everything into named subfolders automatically.

βš™οΈ Smart Collection Modes
⏩
Incremental Mode

When history exists for a user or hashtag, IMGLAB stops collecting the moment it hits a tweet ID already in your archive. Only new tweets since last download are queued β€” saving API calls and time.

βͺ
Backfill Mode

If the URL contains until:, IMGLAB detects backfill mode and disables the history boundary check β€” letting you safely dig back through older archives without corrupting your newest-ID records.

πŸ”€
Top Tab Awareness

When results are relevance-sorted (Top tab), IMGLAB shows an amber warning, skips the history boundary, and hides Go Older β€” because chronological position is meaningless in relevance sort.

πŸ”„
Retry Failed

Export a failed.txt of any tweets that errored. Load it back into IMGLAB with the Retry button β€” the extension re-queues exactly those IDs and tries again with fresh API calls.

Intelligent Filename Format

Every exported image gets a structured filename packed with metadata β€” no guessing what file belongs to whom or when.

ァンプルε€ͺιƒŽ(@example_user)_20260101-120000_123456789012345678_photo-1.jpg
DisplayName(@username) β€” rich folder name for the downloader
YYYYMMDD-hhmmss β€” tweet timestamp (UTC)
Tweet ID β€” 18-digit snowflake, enables deduplication
photo-N β€” index for multi-photo tweets (up to 4)
πŸ’‘ Unicode, Japanese, Chinese, and emoji in display names are fully preserved. Only Windows-invalid characters are replaced with full-width equivalents. Your subfolder names stay human-readable.
Multi-Tag Hashtag Search β€” Fully Supported

Searches combining multiple hashtags (e.g. #tag-a #tag-b) are handled correctly end-to-end β€” history, filenames, and folder names all stay consistent.

Storage Key
#tag-a #tag-b

Space-separated, # on each tag, sorted alphabetically. Identical between the extension and the downloader β€” no conversion needed.

Filename & Folder
twitter_urls_hashtag_tag-a_tag-b.txt

Underscore-joined, no #. The downloader automatically converts this back to the folder name #tag-a #tag-b β€” matching the storage key exactly.

πŸ”¬ BETA
IMGLAB Image Downloader is currently in beta testing.
Access requires a donation to support development. Donors receive the download link directly.
β˜• Donate for Access
IMGLAB Image Downloader β€” GUI App
Python Β· Gradio Β· Runs locally at 127.0.0.1:7861

Batch Downloader with Full History Sync

Drop your exported urls.txt files onto the IMGLAB Image Downloader. It reads every line, downloads images in parallel, skips files already on disk, and organises everything into rich named subfolders. History syncs back to the Chrome extension automatically β€” so your next collection session knows exactly where you left off.

  • βœ“ Multi-file queue β€” load several txt files, they process in order
  • βœ“ 1–5 parallel downloads, configurable per session
  • βœ“ Skips already-downloaded files by filename check β€” no re-downloads
  • βœ“ Rich subfolder names: DisplayName(@username)
  • βœ“ History JSON syncs to extension via local API on port 7861
  • βœ“ Full download log with timestamps and error details
Downloader Internals
πŸ“‚
Smart Subfolder Naming

For username files, the subfolder is extracted from the first image’s filename β€” giving you ァンプルε€ͺιƒŽ(@example_user) instead of a bare handle. Hashtag searches use #tag1 #tag2 format, matching the extension’s storage key exactly.

πŸ”
Queue & Batch Processing

Load multiple users’ txt files at once. The downloader groups files by user, runs each group sequentially, and moves to the next automatically on clean completion. Stop mid-queue clears remaining entries safely.

πŸ“Š
History Sync API

Exposes GET /imglab/history on localhost. The Chrome extension’s background.js fetches this on startup β€” merging the downloader’s history with the extension’s local storage, always keeping the highest tweet ID.

πŸ”
Import TMD History

Already have thousands of images from Twitter Media Downloader? The Import TMD History tab scans your existing folder structure and bootstraps IMGLAB’s history from your archive β€” so incremental collection starts from the right point.

πŸš€ Installation β€” Under 2 Minutes
1
Add to Chrome

Click Add to Chrome β€” Free above. The extension installs instantly from the Chrome Web Store. No sign-up, no account.

2
Navigate to x.com

Go to any Twitter profile and open their media tab β€” or search from:username filter:images. The IMGLAB panel appears in the bottom-right corner automatically.

3
Click β–Ά Start

IMGLAB begins scanning tweets, calling the API, and collecting image URLs. Auto-scroll loads more content while you watch the stats update in real time.

4
Export & Download

Collection finishes and urls.txt downloads automatically. Load it into the IMGLAB Image Downloader (donation required for beta access) and let it run overnight.

What to Know Before You Start
⏸
Twitter API Rate Limits

Twitter’s GraphQL endpoints enforce rate limits. IMGLAB detects 429 responses, shows a countdown timer, and resumes automatically. Large collections (1000+ tweets) may need 1–2 pauses. This is unavoidable β€” it’s Twitter’s infrastructure, not ours.

πŸ–ΌοΈ
Photos Only

IMGLAB collects photos (type: "photo") only. Videos, GIFs, and other media types are intentionally skipped. The focus is on high-quality still images at original resolution.

πŸ”’
Private Accounts

The extension uses your own browser session. It can only collect tweets you can see while logged in. Private accounts you don’t follow, age-restricted content, and deleted tweets are not accessible.

πŸ”§
API Endpoint Changes

Twitter changes its GraphQL endpoints occasionally. When this happens, collection will fail until we push an update. This is the main ongoing maintenance burden for this type of extension.

FREE Β· OPEN Β· COMMUNITY-SUPPORTED

Keep IMGLAB Alive & Updated

The extension is free. No ads, no data collection, no subscriptions. Every update β€” fixing broken API endpoints, adding features, testing multi-tag edge cases β€” takes real time and research. Your support funds all of it.

πŸ”§
Keeping up with Twitter’s frequent GraphQL endpoint changes
✨
Building Pro features: donation key system, advanced filters, video support
πŸ”¬
IMGLAB Image Downloader beta β†’ stable release for all donors
πŸ”¬ Donation Key β€” Coming Soon
Donors will receive a cryptographic Donation Key that permanently unlocks Pro features. One donation, lifetime access. The key works completely offline β€” no server dependency, no expiry.

One-time Β· Any amount Β· No account needed Β· Downloader beta access included

Built with ❀️ by IMGLAB
Ko-fi  Β·  Buy Me a Coffee  Β·  ηˆ±ε‘η”΅  Β·  [email protected]