How to Download Images From X (Twitter) at Full Size
X keeps one file per photo and serves it at six named sizes. The timeline shows you a middling one; the largest is a single word away in the URL.

pbs.twimg.com address and change name=medium to name=orig. X keeps one file per photo and serves it at six named sizes; the timeline asks for a middling one, and orig is the file exactly as it was uploaded.The six sizes X serves
pbs.twimg.com, and the name parameter picks which rendition comes back.name | Fits inside | Where X uses it |
|---|---|---|
thumb | 150 × 150 | The square crop in a multi-photo post |
small | 680 px wide | Timelines and narrow layouts |
medium | 1200 px wide | The desktop timeline — usually what a link card names |
large | 2048 px wide | The photo viewer, when you click through |
4096x4096 | 4096 px wide | Nothing in the interface |
orig | As uploaded | Nothing in the interface |
https://pbs.twimg.com/media/EXAMPLE123?format=jpg&name=medium
https://pbs.twimg.com/media/EXAMPLE123?format=jpg&name=origorig is the upload, so it is only larger than large when the upload was larger than 2048 pixels. A photo posted from a phone camera usually was, by some margin. A screenshot posted from the same phone usually was not, and in that case the two files are identical — which is the correct outcome rather than a failure.Download Twitter images by hand
- Open the post and click the photo so it fills the viewer.
- Right-click it and choose Copy image address.
- Paste it somewhere you can edit. It will contain
name=followed by a size. - Change that size to
orig. - Open the edited address and save the file.
.jpg:large rather than carrying a query string. The same idea applies: the suffix after the colon is the rendition name.Right-clicking in the timeline gets you the small one
small or medium depending on the width of the column it landed in. Saving it saves that, at a resolution chosen for a layout you are not using and compressed a second time to get there.When X will not answer at all
pbs.twimg.com link for that reason, and that route cannot be walled.What it will not do
- Video and GIFs. A video post publishes a poster frame on a different host, and
- Protected accounts. A protected post is not public and publishes nothing.
- Whole timelines. One post at a time. Walking an account's media tab is scraping,
What you may do with the file
What is the difference between `large` and `orig`?
large fits the photo inside 2048 pixels. orig is the file as uploaded, at whatever size that was. When the upload was smaller than 2048, they are the same picture.Do old twitter.com links still work?
.jpg:large image URL form. Both resolve to the same thing.Can I download the video from a post?
Nothing came back for my post link.
pbs.twimg.com address, and paste that instead.Put it to work
Tools for the job you just read about
Free to run, most of them without an account.
X Image Downloader
Every size of a photo on X, including the original the app never shows.
Google SERP Snippet Preview
See your title and description as a Google result — on a desktop and a phone.
Social Media URL Cleaner
Strip the tracking off a link — and see what each parameter was telling somebody.
Instagram Money Calculator
What to charge for a post — priced the way a brand actually prices it.
Username Availability Checker
One handle, checked against every network’s rules at once.
YouTube Metadata Viewer
Every field a YouTube video declares about itself, in one table.
Keep reading
More from the blog

How to Download Podcast Cover Art at Full Size
Apple's public directory hands out a 600-pixel copy. The 3000×3000 the publisher submitted is at the same address with one number changed.

How to Download Images From a Bluesky Post
Bluesky is the one platform that will simply tell you what is on a post. You get every image, the alt text, and the file exactly as it was uploaded.

How to Download Images From a Threads Post
Threads answers a signed-out request honestly, which makes it one of the easier platforms to get a picture out of. Two details are worth knowing first.