📢 Community Announcement: Image Handling Update (imagehoster / condenser)
We’ve recently rolled out a coordinated upgrade across condenser (frontend/rendering) and imagehoster (image service). The goal is to remove reverse-proxying of third‑party images, reduce abuse risk and unnecessary resource consumption, and keep a stable, optimized experience for first‑party images.
Summary of Changes
Third‑party external images are no longer proxied/resized by our image service
- If an image URL in a post points to a non‑Steemit domain (third‑party sites / external CDNs), the system will no longer fetch, cache, or transform it via imagehoster.
- These images are rendered using the original URL, and display size is controlled mainly via frontend styles.
First‑party images still support resizing/optimization
- For Steemit first‑party domains (treated as first‑party under
*.steemitimages.com), condenser will generate imagehoster/p/:urltransformation URLs with query parameters such aswidth/height. - This keeps first‑party images optimized for bandwidth and rendering performance.
- For Steemit first‑party domains (treated as first‑party under
Legacy image proxy endpoint has been disabled
- The legacy image proxy entrypoint
/:widthx:height/:urlhas been disabled at the route registration level (code remains in place).
- The legacy image proxy entrypoint
Demo (What You’ll See in Practice)
1) Third‑party images (no longer proxied)
Original image URL (example):
https: //example.com/path/to/image.jpg
Now the page will keep using the original URL (it will no longer be rewritten into something like https://steemitimages.com/.../https://example.com/...).
- Display size is controlled by frontend CSS/layout.
- Load speed and availability depend on the third‑party host (we do not proxy/cache/transform it anymore).
2) First‑party images (still resized/optimized)
First‑party image URL stored on-chain (example):
https: //cdn.steemitimages.com/DQmXXXXXXX/your-image.jpg
Example transformation URLs generated during rendering (/p/:url + query params):
- 640px wide (preserve aspect ratio):
https://steemitimages.com/p/<base58(url)>?mode=fit&format=match&width=640
- 1280px wide (2x / high‑DPI):
https://steemitimages.com/p/<base58(url)>?mode=fit&format=match&width=1280
Notes:
width=640/width=1280are used to produce different sizes.- Values like
height=0are not emitted; for aspect‑ratio preserving transforms, height is omitted.
3) Legacy proxy URL format (disabled)
Previously, legacy URLs looked like (example):
https: //steemitimages.com/640x0/https: //cdn.steemitimages.com/DQmXXXXXXX/your-image.jpg
This legacy entrypoint is now disabled. Going forward, first‑party images should use /p/:url?... and third‑party images should remain direct links.
Why We Made This Change
- Security & abuse prevention: Reverse‑proxying arbitrary third‑party URLs is high‑risk (SSRF, bypassing restrictions, bandwidth abuse) and difficult to maintain safely long‑term.
- Cost & stability: Fetching/caching/transforming third‑party images creates unpredictable bandwidth and storage pressure and can inherit instability from external hosts.
- Clear boundaries: imagehoster now focuses on first‑party image serving/optimization with clearer responsibilities.
Impact on Users / Creators
- Third‑party images can still appear in posts, but:
- they no longer benefit from our resizing/format conversion/caching acceleration;
- we do not guarantee load success or speed (this depends on the third‑party host and hotlink policies).
- Images uploaded to Steemit’s image hosting (e.g.
cdn.steemitimages.com/...) are not impacted and should continue to load and render well.
FAQ (Short)
Q: My external images became slower or sometimes fail to load. Why?
A: If the image is hosted by a third party, we no longer proxy or accelerate it. Consider re-uploading the image to Steemit’s image hosting and using that URL instead.Q: Why do I see image URLs using
/p/...now?
A: Those are first‑party image transformation URLs used for resizing/optimization. They only apply to first‑party domains.
If you notice issues (e.g., images not rendering, older posts still showing legacy proxy shells, etc.), please share a post link and the relevant HTML snippet or screenshot so we can investigate.
Upvoted! Thank you for supporting witness @jswit.