The Short Answer
If you only want to save the visible public image, use the image downloader. Read this guide when the file needs to remain traceable after it leaves the browser.
If you download a public Twitter/X image and may need to find it again, save more than the picture. Keep the source post URL, the post ID, the author handle, the media order, the image dimensions, the format, and the actual post date when you know it.
A good filename does not need to be pretty. It needs to sort well and survive being moved to another folder. Use a pattern like this: x-{handle}-{yyyy-mm-dd}-{post_id}-img{index}-{variant}-{width}x{height}.{ext}.
For example, using an observed NASA media row but leaving the post date as a template slot: x-nasa-date-if-known-2060023465210470621-img02-orig-4999x3622.jpg. That filename tells you the source family before you even open the file. The sidecar note or CarryFeed result should still keep the full post URL.
The image
- User wants
- A clean JPG, PNG, or other exposed public media file.
- Good fit
- Use the largest public variant you can verify.
- CarryFeed fit
- The image downloader lists public image rows when the post exposes them.
The source note
- User wants
- Post URL, author, post ID, media order, dimensions, format, variant, and real date if known.
- Good fit
- Save it in the filename, a Markdown note, or your asset manager.
- CarryFeed fit
- The result keeps the public source link near the media choices.
Why the Filename Matters
A Twitter/X image filename can look harmless and still be too weak for real work. A CDN media name may identify the image asset, but it usually does not tell you the post, author, date, or which item in a multi-photo post you saved.
That problem is visible in tooling built by people who actually archive social media. The Twitter Click'n'Save userscript treats the filename as part of the product: its documented pattern includes the author, date, Tweet ID, and original media filename.
The same user need shows up in archive discussions. In an r/DataHoarder thread about bulk Twitter images, the request was not just max quality. The user also wanted dates, times, and Tweet IDs in filenames. That is the real long-tail problem this page answers.
| Bad save | What breaks later | Better save |
|---|---|---|
| image1.jpg | No post, no author, no date, no media order. | x-handle-yyyy-mm-dd-1234567890-img01-orig.jpg |
| HJasaWRWgAQqT1M.jpg | The media ID is useful, but the post trail is missing. | Keep the media ID plus the source post URL. |
| screenshot.png | The visible image may be cropped, downscaled, or detached from the source. | Label screenshots separately and keep the original public post URL. |
| folder of four unlabeled images | Multi-photo order becomes guesswork. | Use img01, img02, img03, img04 in the saved names. |
The Six Fields to Keep
You do not need a database for a small archive. You do need a consistent minimum set of fields. If you keep these six, the image can move through folders, notes, AI tools, and client review without becoming anonymous.
X's API media data dictionary documents media fields such as URL, dimensions, type, alt text, and preview image URL. For a human archive, that translates into a simpler rule: keep the file details and the public post details together.
The public boundary matters too. X's help page on public and protected posts draws the line between public posts and protected posts. This workflow is for public sources you can verify, not private recovery.
| Field | Example | Why it matters |
|---|---|---|
| Source post URL | https://x.com/NASA/status/2060023465210470621 | The URL is the receipt. Keep it even if the filename has the ID. |
| Post ID | 2060023465210470621 | The ID survives handle changes and can rebuild a status URL. |
| Author handle | NASA | Useful for sorting and quick recognition. |
| Post date | YYYY-MM-DD | Use the real post date when known; ISO format sorts cleanly by name. |
| Media order | img02 | A four-image post needs stable ordering. |
| File proof | orig-4999x3622-jpg | Variant, dimensions, and extension explain what you saved. |
A Filename Pattern That Holds Up
Use a filename that can be read by a human and sorted by a computer. I prefer lowercase, hyphen-separated names because they copy cleanly across macOS, Windows, Linux, cloud drives, and CMS uploaders.
Recommended pattern: x-{handle}-{yyyy-mm-dd}-{post_id}-img{index}-{variant}-{width}x{height}.{ext}.
If you do not know the date or dimensions yet, do not fake them. Save a simpler name first, then add the missing fields after you verify the file.
| Situation | Filename example | Note |
|---|---|---|
| Single public image | x-handle-yyyy-mm-dd-postid-img01-orig-widthxheight.jpg | Use real values only after you verify the source date and file dimensions. |
| Multi-photo post | x-nasa-date-if-known-2060023465210470621-img02-orig-4999x3622.jpg | Uses observed file facts from the sample row; the date stays a slot until verified. |
| Unknown date | x-nasa-2060023465210470621-img02-orig-4999x3622.jpg | Still recoverable because the post ID and source URL remain. |
| Quick source note | x-nasa-2060023465210470621-source.md | Use a sidecar note when the filename would get too long. |
Use a Sidecar Note When the Filename Gets Crowded
A filename should not carry everything. Put the fields that help with sorting in the filename, then keep a small note beside the image for the source URL, alt text, caption text, and any usage notes.
This is where a normal image downloader page usually stops short. Developer tools can go deeper. For example, an Apify Twitter/X image downloader actor is positioned around structured extraction rather than a simple browser save. That can be useful for batch jobs, but a one-post workflow still needs a readable habit a non-developer can follow.
A sidecar note can be Markdown, JSON, a row in a spreadsheet, or a field in your asset manager. The exact format matters less than keeping it next to the file.
source_url: https://x.com/NASA/status/2060023465210470621
author: @NASA
post_id: 2060023465210470621
posted_date: [real post date if verified]
media_order: image 2 in the post
saved_file: x-nasa-date-if-known-2060023465210470621-img02-orig-4999x3622.jpg
variant: name=orig
format: jpg
dimensions: 4999x3622
notes: Public post image. Keep with source URL for later verification.
Multi-Photo Posts Need Extra Care
Multi-photo posts are where weak filenames fail fastest. The images may share the same author, date, and post ID, but each one still needs a stable image number. Without that, the folder cannot tell you which file was first, second, third, or fourth in the original post.
X's help page on posting photos and GIFs describes ordinary photo posting behavior, including multi-image posts. For archiving, the practical rule is simple: save each image as a separate file and preserve the original order.
Do not rely on the order your operating system happens to show today. Use img01, img02, img03, and img04 in the filenames, and keep the source URL beside the group.
| Post layout | Save as | Reason |
|---|---|---|
| One image | img01 | Keeps the pattern consistent. |
| Two images | img01, img02 | Prevents accidental reversal in folders or CMS uploads. |
| Four images | img01, img02, img03, img04 | Makes the original post order recoverable later. |
| Screenshot plus original file | img01-orig and img01-screenshot | Separates the source file from the visual receipt. |
How CarryFeed Fits
CarryFeed is useful when you already have a public Twitter/X post URL and do not want the image to become detached from that source. Paste the post into the image downloader, review the images it can see, then keep the post URL near the files you save.
The current habit I would use is simple: download the image, copy the source URL from the result, and rename the file or create a sidecar note before the file leaves your downloads folder.
That is deliberately more modest than a bulk archive promise. CarryFeed should stop when the public post is private, protected, deleted, restricted, or not resolvable. A clear stop is better than a misleading file.
- Paste the public post URL into the Twitter image downloader.
- Check whether the result lists one image or multiple image rows.
- Save each image separately and keep its media order.
- Record the source post URL and post ID before moving the files.
- Rename the files with handle, real date if known, post ID, image order, variant, format, and dimensions when the image matters.
- Keep a Markdown, JSON, spreadsheet, or asset-manager note for the full source facts.
- Stop if the media is protected, private, deleted, login-only, or not available from the public source.
What This Does Not Claim
This workflow does not prove that a saved file is the uploader's untouched camera original. If you need image quality details, use the separate X/Twitter image URL quality test and measure the returned dimensions.
It also does not grant rights to reuse someone else's image. Saving a public file and preserving a source URL helps with traceability; it does not replace permission, licensing, attribution, or editorial judgment.
Finally, it cannot access private media. Protected accounts, DMs, deleted posts, and login-only content are outside the public-image workflow.
Questions readers usually ask.
When should I use this guide instead of only the image downloader?
Use the image downloader when you just need the public image file. Use this guide when the saved file needs a reliable record: post URL, Tweet ID, author, real date if known, media order, dimensions, and a filename or sidecar note.
What should I put in a Twitter image filename?
Use the author handle, real ISO date when known, post ID, image order, variant, format, and dimensions when the image needs to be found or verified later.
Is the Tweet ID the same as the image media ID?
No. The Tweet or post ID identifies the public post. The media ID identifies an attached media asset. Keep both when you can.
Can I rebuild a source URL from a Tweet ID?
Often, yes. A status URL can use x.com/i/status/{id} or the author's handle plus /status/{id}. Still keep the original source URL when possible.
Does CarryFeed automatically rename every downloaded image this way?
No. Use CarryFeed to keep the public source and media rows visible, then rename the file or save a sidecar note when source traceability matters.
Can this download private or protected Twitter images?
No. This workflow is for public X/Twitter sources. Private, protected, deleted, DM, restricted, and login-only media is outside scope.